blob: a59db0d7d5f8f8d83d7c0c9eb2036b0148de2d53 [file] [log] [blame]
/**
*
*/
package org.eclipse.epf.diagramming.base.actions;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.epf.diagram.core.bridge.BridgeHelper;
import org.eclipse.epf.diagram.core.bridge.DiagramAdapter;
import org.eclipse.epf.diagram.core.bridge.NodeAdapter;
import org.eclipse.epf.diagram.core.part.DiagramEditorInput;
import org.eclipse.epf.diagram.core.part.util.DiagramEditorUtil;
import org.eclipse.epf.diagramming.part.EPFDiagramEditorPlugin;
import org.eclipse.epf.library.edit.util.IDiagramManager;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
/**
* Action to open activity detail diagram for selected Activity.
* @author Shashidhar Kannoori
*/
public class OpenActivityDetailDiagramAction implements IObjectActionDelegate {
private EditPart selectedPart;
private IWorkbenchPart targetPart;
/* (non-Javadoc)
* @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
this.targetPart = targetPart;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run(IAction action) {
if(selectedPart != null){
Node view = (Node)selectedPart.getModel();
DiagramEditPart diagramEditPart = (DiagramEditPart)selectedPart.getParent();
Diagram diagram = (Diagram)diagramEditPart.getModel();
DiagramAdapter diagramAdapter = BridgeHelper.getDiagramAdapter(diagram.getElement());
NodeAdapter adapter = BridgeHelper.getNodeAdapter(view.getElement());
Object selectedObject = adapter.getWrapper();
if(selectedObject == null){
selectedObject = adapter.getElement();
}
//IEditorPart parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
DiagramEditorInput input = new org.eclipse.epf.diagram.core.part.DiagramEditorInput(
selectedObject, diagramAdapter.getSuppression(), IDiagramManager.ACTIVITY_DIAGRAM);
DiagramEditorUtil.openDiagramEditor(targetPart.getSite().getPage(), input,
EPFDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT, new NullProgressMonitor());
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
if (structuredSelection.size() == 1
&& structuredSelection.getFirstElement() instanceof EditPart) {
selectedPart = (EditPart) structuredSelection
.getFirstElement();
}
}
}
}