blob: fc98ce1b1f8b0b322252509ebef835bf2fde8ab5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.navigator;
/**
*
* Determines if an extension is <i>active</i> within the context of a given
* viewer and manages the persistence of this information. If an extension is
* <i>active</i> then the extension will contribute functionality to the
* viewer. If an extension is not <i>active</i>, then the extension will not be
* given opportunities to contribute functionality to the given viewer. See
* {@link INavigatorContentService} for more detail on what states are
* associated with a content extension.
*
* @since 3.2
*
*/
public interface INavigatorActivationService {
/**
* Activate the extensions specified by the extensionIds array. Clients may
* also choose to disable all other extensions. The set of descriptors
* returned is the set that were activated as a result of this call. In the
* case of this method, that means that a descriptor will be returned for
* each extensionId in the array, regardless of whether that extension is
* already enabled.
*
* <p>
* Clients must call {@link #persistExtensionActivations()} to save the the
* activation state after activating or deactivating extensions.
* </p>
*
* @param extensionIds
* The list of extensions to activate
* @param toDeactivateAllOthers
* True will deactivate all other extensions; False will leave
* the other activations as-is
* @return A list of all INavigatorContentDescriptors that were activated as
* a result of this call. This will be the set of
* INavigatorContentDescriptors that corresponds exactly to the set
* of given extensionIds.
*/
public INavigatorContentDescriptor[] activateExtensions(
String[] extensionIds, boolean toDeactivateAllOthers);
/**
* Deactivate the extensions specified by the extensionIds. Clients may
* choose to activate all other extensions which are not explicitly
* disabled. If toActivateAllOthers is true, the array of returned
* descriptors will be the collection of all extensions not specified in the
* extensionIds array. If it is false, the array will be empty.
*
* <p>
* Clients must call {@link #persistExtensionActivations()} to save the the
* activation state after activating or deactivating extensions.
* </p>
*
* @param extensionIds
* The list of extensions to activate
* @param toActivateAllOthers
* True will activate all other extensions; False will leave the
* other activations as-is
* @return A list of all INavigatorContentDescriptors that were activated as
* a result of this call. If toActivateAllOthers is false, the
* result will be an empty array. Otherwise, it will be the set of
* all visible extensions minus those given in the 'extensionIds'
* parameter.
*/
public INavigatorContentDescriptor[] deactivateExtensions(
String[] extensionIds, boolean toActivateAllOthers);
/**
*
* Checks the known activation state for the given viewer id to determine if
* the given navigator extension is 'active'.
*
* @param aNavigatorExtensionId
* The unique identifier associated with a given extension.
*
* @return True if the extension is active in the context of the viewer id.
*/
public boolean isNavigatorExtensionActive(String aNavigatorExtensionId);
/**
* Save the activation state of each content extension for the associated
* content service. Clients should persist the activation state after any
* call to {@link #activateExtensions(String[], boolean)} or
* {@link #deactivateExtensions(String[], boolean)}.
*
*/
public void persistExtensionActivations();
/**
* Request notification when the activation state changes.
*
* @param aListener
* An implementation of {@link IExtensionActivationListener}
*/
public void addExtensionActivationListener(
IExtensionActivationListener aListener);
/**
* No longer receive notification when activation state changes.
*
* @param aListener
* An implementation of {@link IExtensionActivationListener}
*/
public void removeExtensionActivationListener(
IExtensionActivationListener aListener);
}