//------------------------------------------------------------------------------ // Copyright (c) 2005, 2007 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.diagram.ad.custom.policies; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.AbstractEditPolicy; import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ContainerEditPolicy; /** * ActivityPartition delegates to its compartment edit policy * */ public class ActivityPartitionDelegationEditPolicy extends AbstractEditPolicy { private EditPart childEditPart; private EditPolicy childEditPolicy; private final String childViewID; private final String editPolicyID; public ActivityPartitionDelegationEditPolicy(String childId, String editPolicyId) { childViewID = childId; editPolicyID = editPolicyId; } /** * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#activate() */ public void activate() { childEditPart = ((IGraphicalEditPart)getHost()).getChildBySemanticHint(childViewID); if (childEditPart == null) { return; } childEditPolicy = childEditPart.getEditPolicy(editPolicyID); childEditPolicy.setHost(childEditPart); childEditPolicy.activate(); } /** * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#deactivate() */ public void deactivate() { if (childEditPolicy == null) { return; } childEditPolicy.deactivate(); childEditPart = null; childEditPolicy = null; } /** * */ public void eraseSourceFeedback(Request request) { if (childEditPolicy == null) { return; } childEditPolicy.eraseSourceFeedback(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#eraseTargetFeedback(org.eclipse.gef.Request) * @modified */ public void eraseTargetFeedback(Request request) { if (childEditPolicy == null) { return; } childEditPolicy.eraseTargetFeedback(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#getCommand(org.eclipse.gef.Request) * @modified */ public Command getCommand(Request request) { if (childEditPolicy == null) { return null; } if(childEditPolicy instanceof ContainerEditPolicy && request instanceof ChangeBoundsRequest){ return null; } return childEditPolicy.getCommand(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#getTargetEditPart(org.eclipse.gef.Request) * @modified */ public EditPart getTargetEditPart(Request request) { if (childEditPolicy == null) { return null; } return childEditPolicy.getTargetEditPart(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#showSourceFeedback(org.eclipse.gef.Request) * @modified */ public void showSourceFeedback(Request request) { if (childEditPolicy == null) { return; } childEditPolicy.showSourceFeedback(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#showTargetFeedback(org.eclipse.gef.Request) * @modified */ public void showTargetFeedback(Request request) { if (childEditPolicy == null) { return; } childEditPolicy.showTargetFeedback(request); } /* * (non-Javadoc) * @see org.eclipse.gef.editpolicies.AbstractEditPolicy#understandsRequest(org.eclipse.gef.Request) * @modified */ public boolean understandsRequest(Request req) { if (childEditPart == null) { activate(); } if (childEditPolicy == null) { return false; } return childEditPolicy.understandsRequest(req); } }