blob: 5af99757560d69b2d8842f7436be897aca885005 [file] [log] [blame]
package org.eclipse.epf.diagram.core.actions;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.epf.diagram.core.bridge.BridgeHelper;
import org.eclipse.epf.diagram.core.bridge.DiagramAdapter;
import org.eclipse.epf.diagram.core.part.AbstractDiagramEditor;
import org.eclipse.epf.library.edit.command.ActionManager;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorPart;
public class EditorActionDelegate implements IEditorActionDelegate {
protected IEditorPart targetEditor;
protected List<EditPart> selectedParts = new ArrayList<EditPart>();
public EditorActionDelegate() {
}
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
this.targetEditor = targetEditor;
}
public void run(IAction action) {
// TODO Auto-generated method stub
}
public void selectionChanged(IAction action, ISelection selection) {
selectedParts.clear();
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
if (structuredSelection.size() >0
&& structuredSelection.getFirstElement() instanceof IGraphicalEditPart) {
selectedParts.addAll(structuredSelection.toList());
}
}
}
protected ActionManager getActionManager(){
if(targetEditor != null && targetEditor instanceof AbstractDiagramEditor){
Diagram diagram = ((AbstractDiagramEditor)targetEditor).getDiagram();
if(diagram != null){
DiagramAdapter adapter = BridgeHelper.getDiagramAdapter(diagram.getElement());
if(adapter != null){
return (ActionManager)adapter.getActionManager();
}
}
}
return null;
}
/**
* Gets editing domain
*
* @return my editing domain
*/
protected TransactionalEditingDomain getEditingDomain() {
// try adapting the workbench part
IEditorPart part = targetEditor;
if (part != null) {
IEditingDomainProvider edProvider = (IEditingDomainProvider) part
.getAdapter(IEditingDomainProvider.class);
if (edProvider != null) {
EditingDomain domain = edProvider.getEditingDomain();
if (domain instanceof TransactionalEditingDomain) {
return (TransactionalEditingDomain) domain;
}
}
}
return null;
}
}