/******************************************************************************* | |
* Copyright (c) 2008, 2012 Intel Corporation. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Oleg Danilov, Intel - Initial API and Implementation | |
* | |
*******************************************************************************/ | |
package org.eclipse.bpel.ui; | |
import org.eclipse.bpel.ui.actions.BPELCopyAction; | |
import org.eclipse.bpel.ui.actions.BPELCutAction; | |
import org.eclipse.bpel.ui.actions.BPELDeleteAction; | |
import org.eclipse.bpel.ui.actions.BPELPasteAction; | |
import org.eclipse.gef.ui.actions.ActionRegistry; | |
import org.eclipse.jface.action.IAction; | |
import org.eclipse.ui.IActionBars; | |
import org.eclipse.ui.IEditorActionBarContributor; | |
import org.eclipse.ui.IEditorPart; | |
import org.eclipse.ui.IEditorSite; | |
import org.eclipse.ui.IWorkbenchPartSite; | |
import org.eclipse.ui.actions.ActionFactory; | |
import org.eclipse.ui.part.MultiPageEditorActionBarContributor; | |
import org.eclipse.ui.texteditor.ITextEditor; | |
import org.eclipse.ui.texteditor.ITextEditorActionConstants; | |
/** | |
* 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 BPELMultiPageEditorActionBarContributor extends | |
MultiPageEditorActionBarContributor { | |
private IEditorPart activeEditorPart; | |
private BPELEditor bpelEditor; | |
/** | |
* Creates a multi-page contributor. | |
*/ | |
public BPELMultiPageEditorActionBarContributor() { | |
super(); | |
} | |
/** | |
* Returns the action registered 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. | |
*/ | |
@Override | |
public void setActivePage(IEditorPart part) { | |
if (activeEditorPart == part) | |
return; | |
activeEditorPart = part; | |
IActionBars actionBars = getActionBars(); | |
if (activeEditorPart != null && activeEditorPart instanceof ITextEditor) { | |
IActionBars siteActionBars = ((IEditorSite)activeEditorPart.getEditorSite()).getActionBars(); | |
siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.UNDO, getAction((ITextEditor)activeEditorPart, ITextEditorActionConstants.UNDO)); | |
siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.REDO, getAction((ITextEditor)activeEditorPart, ITextEditorActionConstants.REDO)); | |
siteActionBars.updateActionBars(); | |
} else { | |
if (part instanceof BPELEditor) { | |
bpelEditor = (BPELEditor) part; | |
} | |
if (bpelEditor != null) { | |
Object adapter = bpelEditor.getAdapter(ActionRegistry.class); | |
if (adapter instanceof ActionRegistry) { | |
ActionRegistry registry = (ActionRegistry) adapter; | |
// COPY | |
IAction action = registry.getAction(BPELCopyAction.ID); | |
actionBars.setGlobalActionHandler(ActionFactory.COPY | |
.getId(), action); | |
// CUT | |
action = registry.getAction(BPELCutAction.ID); | |
actionBars.setGlobalActionHandler( | |
ActionFactory.CUT.getId(), action); | |
// PASTE | |
action = registry.getAction(BPELPasteAction.ID); | |
actionBars.setGlobalActionHandler(ActionFactory.PASTE | |
.getId(), action); | |
// DELETE | |
action = registry.getAction(BPELDeleteAction.ID); | |
actionBars.setGlobalActionHandler(ActionFactory.DELETE | |
.getId(), action); | |
} | |
IWorkbenchPartSite site = bpelEditor.getSite(); | |
if (site instanceof IEditorSite) | |
{ | |
ITextEditor textEditor = bpelEditor.getMultipageEditor().getTextEditor(); | |
IActionBars siteActionBars = ((IEditorSite) site).getActionBars(); | |
siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.UNDO, getAction(textEditor, ITextEditorActionConstants.UNDO)); | |
siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.REDO, getAction(textEditor, ITextEditorActionConstants.REDO)); | |
siteActionBars.updateActionBars(); | |
} | |
} | |
} | |
if (actionBars != null) { | |
// update menu bar and tool bar | |
actionBars.updateActionBars(); | |
} | |
} | |
} |