package org.cookbook.ch13.EditorPlugIn.editors;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.jface.action.*;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ISharedImages;
/**
* Manages the installation/deinstallation of global actions for multi-page editors.
* Responsible for the redirection of global actions to the active editor.
* Multi-page contributor replaces the contributors for the individual editors in the multi-page editor.
*/
public class MultiPageEditorContributor extends MultiPageEditorActionBarContributor {
private IEditorPart activeEditorPart;
private Action sampleAction;
/**
* Creates a multi-page contributor.
*/
public MultiPageEditorContributor() {
super();
createActions();
}
/**
* Returns the action registed with the given text editor.
* @return IAction or null if editor is null.
*/
protected IAction getAction(ITextEditor editor, String actionID) {
return (editor == null ? null : editor.getAction(actionID));
}
/* (non-JavaDoc)
* Method declared in AbstractMultiPageEditorActionBarContributor.
*/
public void setActivePage(IEditorPart part) {
if (activeEditorPart == part)
return;
activeEditorPart = part;
IActionBars actionBars = getActionBars();
if (actionBars != null) {
ITextEditor editor = (part instanceof ITextEditor) ? (ITextEditor) part : null;
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.DELETE,
getAction(editor, ITextEditorActionConstants.DELETE));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.UNDO,
getAction(editor, ITextEditorActionConstants.UNDO));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.REDO,
getAction(editor, ITextEditorActionConstants.REDO));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.CUT,
getAction(editor, ITextEditorActionConstants.CUT));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.COPY,
getAction(editor, ITextEditorActionConstants.COPY));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.PASTE,
getAction(editor, ITextEditorActionConstants.PASTE));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.SELECT_ALL,
getAction(editor, ITextEditorActionConstants.SELECT_ALL));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.FIND,
getAction(editor, ITextEditorActionConstants.FIND));
actionBars.setGlobalActionHandler(
IWorkbenchActionConstants.BOOKMARK,
getAction(editor, ITextEditorActionConstants.BOOKMARK));
actionBars.updateActionBars();
}
}
private void createActions() {
sampleAction = new Action() {
public void run() {
MessageDialog.openInformation(null, "EditorPlugIn Plug-in", "Sample Action Executed");
}
};
sampleAction.setText("Sample Action");
sampleAction.setToolTipText("Sample Action tool tip");
sampleAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK));
}
public void contributeToMenu(IMenuManager manager) {
IMenuManager menu = new MenuManager("Editor &Menu");
manager.prependToGroup(IWorkbenchActionConstants.MB_ADDITIONS, menu);
menu.add(sampleAction);
}
public void contributeToToolBar(IToolBarManager manager) {
manager.add(new Separator());
manager.add(sampleAction);
}
}
|