blob: 7801daa3734a7b69b98aeb3261d0b8d917c7bd80 [file] [log] [blame]
/**
*
*/
package org.eclipse.epf.diagramming.base.policies;
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.epf.uma.Activity;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.OpenEditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditDomain;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.ui.IWorkbenchPart;
/**
* Mouse double click on StructuredActivityEditPart should open diagram.
* @author Shashidhar Kannoori
*
*/
public class OpenADDEditPolicy extends OpenEditPolicy {
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.editpolicies.OpenEditPolicy#getOpenCommand(org.eclipse.gef.Request)
*/
@Override
protected Command getOpenCommand(Request request) {
EditPart targetEditPart = getTargetEditPart(request);
if (targetEditPart instanceof IGraphicalEditPart) {
Node view = (Node) targetEditPart.getModel();
DiagramEditPart diagramEditPart = (DiagramEditPart) targetEditPart
.getParent();
Diagram diagram = (Diagram) diagramEditPart.getModel();
DiagramAdapter diagramAdapter = BridgeHelper
.getDiagramAdapter(diagram.getElement());
NodeAdapter adapter = BridgeHelper
.getNodeAdapter(view.getElement());
if (adapter != null && adapter.getElement() instanceof Activity) {
Object selectedObject = adapter.getWrapper();
if (selectedObject == null) {
selectedObject = adapter.getElement();
}
GraphicalViewer viewer = (GraphicalViewer) diagramEditPart
.getViewer();
if (viewer != null) {
DiagramEditDomain domain = (DiagramEditDomain) viewer
.getEditDomain();
IWorkbenchPart part = domain.getDiagramEditorPart();
if (part != null) {
DiagramEditorInput input = new org.eclipse.epf.diagram.core.part.DiagramEditorInput(
selectedObject,
diagramAdapter.getSuppression(),
IDiagramManager.ACTIVITY_DIAGRAM);
try{
DiagramEditorUtil
.openDiagramEditor(
part.getSite().getPage(),
input,
EPFDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT,
new NullProgressMonitor());
}catch(Exception e){
}
}
}
}
}
return null;
}
}