package net.ms.designer.editors.workflow.policies; import net.ms.designer.editors.workflow.commands.WorkflowPropertyCommand; import net.ms.designer.editors.workflow.models.WorkflowBaseActivity; import net.ms.designer.editors.workflow.models.WorkflowDiagram; import net.ms.designer.editors.workflow.models.WorkflowSubPart; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; public class WorkflowPropertyEditPolicy extends DiagramLayoutEditPolicy { private static final String PROPERTY_REQUEST = "WORKFLOW_PROPERTY"; //$NON-NLS-1$ public Command getCommand(Request request) { //if (PROPERTY_REQUEST.equals(request.getType())) if ("PROPERTY".equals(request.getType())) return getCopyCommand(); return super.getCommand(request); } protected Command getCopyCommand() { // The implementation of CopyCommand is simple, will not be explained here. WorkflowPropertyCommand command = new WorkflowPropertyCommand(); command.setSubpart((WorkflowSubPart)getHost().getModel()); if(getHost().getModel() instanceof WorkflowBaseActivity) { //��Ϊ�ڵ���ȡ��diagram������ȡ��ȫ�ֱ��� command.setDiagram((WorkflowDiagram)getHost().getParent().getModel()); } return command; } }