blob: 6c4030a2257e509fde4eb7655908ac332b0a1a44 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.actions;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
/**
* An <code>ActionGroup</code> represents a group of actions
* which are added to a context menu, or the action bars of a part, together.
* The group is given a context which can be used to determine which actions
* are added, and what their enabled state should be.
* <p>
* This class is intended only as a convenience for managing groups of actions.
* Clients are not required to use this class in order to add actions to context
* menus or action bars.
* </p>
* <p>
* Clients should subclass this class and extend or override the appropriate fill methods.
* </p>
*
* @since 2.0
*/
public abstract class ActionGroup {
/**
* The action context, used to determine which actions are added,
* and what their enabled state should be.
*/
private ActionContext context;
/**
* Returns the context used to determine which actions are added,
* and what their enabled state should be.
*/
public ActionContext getContext() {
return context;
}
/**
* Sets the context used to determine which actions are added,
* and what their enabled state should be.
*
* @param context the context to use
*/
public void setContext(ActionContext context) {
this.context = context;
}
/**
* Adds the applicable actions to a context menu,
* based on the state of the <code>ActionContext</code>.
* <p>
* The default implementation does nothing.
* Subclasses may override or extend this method.
* </p>
*
* @param menu the context menu manager
*/
public void fillContextMenu(IMenuManager menu) {
// do nothing
}
/**
* Adds the applicable actions to a part's action bars,
* including setting any global action handlers.
* <p>
* The default implementation does nothing.
* Subclasses may override or extend this method.
* </p>
*
* @param actionBars the part's action bars
*/
public void fillActionBars(IActionBars actionBars) {
// do nothing
}
/**
* Updates the state of the actions added to the action bars,
* including any global action handlers,
* based on the state of the <code>ActionContext</code>.
* <p>
* The default implementation does nothing.
* Subclasses may override or extend this method.
* </p>
*/
public void updateActionBars() {
// do nothing
}
/**
* This method is called by the user of an action group to signal that the group is
* no longer needed. Subclasses typically implement this method to deregister
* any listeners or to free other resources.
* <p>
* The default implementation calls <code>setContext(null)</code>.
* Subclasses may extend this method.
* </p>
*/
public void dispose() {
setContext(null);
}
}