package org.eclipse.uml2.diagram.timing.edit.policies.links;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.AbstractEditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper;
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
import org.eclipse.uml2.diagram.timing.providers.TimingDElementTypes;
public class ValueLineCheckValueSwitchEditPolicy extends AbstractEditPolicy {
public static final String ROLE = ValueLineCheckValueSwitchEditPolicy.class.getName() + ":Role";
@Override
public Command getCommand(Request request) {
if (RequestConstants.REQ_SEMANTIC_WRAPPER.equals(request.getType())) {
return getSemanticCommand(((EditCommandRequestWrapper) request).getEditCommandRequest());
}
return null;
}
protected Command getSemanticCommand(IEditCommandRequest req) {
//XXX: this editpolicy provides answers to wrappered CreateRelationshipRequest's only
if (req instanceof CreateRelationshipRequest) {
return getCreateRelationshipCommand((CreateRelationshipRequest) req);
}
return null;
}
protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
return (req.getTarget() == null) ? getStartCreateRelationshipCommand(req) : getCompleteCreateRelationshipCommand(req);
}
protected Command getCompleteCreateRelationshipCommand(CreateRelationshipRequest req) {
if (TimingDElementTypes.DStateSwitch_4001 == req.getElementType()) {
return new ICommandProxy(new SegmentCheckValueSwitchEditPolicy.CheckValueSwitchCommand(req, req.getSource(), req.getTarget()));
}
return null;
}
protected Command getStartCreateRelationshipCommand(CreateRelationshipRequest req) {
return null;
}
}