blob: 3a3a5fc4693340300d742d5fcf8e53915b7dcc65 [file] [log] [blame]
package org.eclipse.epf.diagramming.base.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.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
/**
* 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;
}
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);
}
}