package org.eclipse.uml2.diagram.timing.edit.policies.links; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.GraphicalNodeEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest; import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; public abstract class AbstractFilteringConnectionsGraphicalNodeEditPolicy extends GraphicalNodeEditPolicy { @Override public Command getCommand(Request request) { if (ignoreRequest(request)){ return null; } return super.getCommand(request); } @Override public boolean understandsRequest(Request req) { return super.understandsRequest(req) && !ignoreRequest(req); } @Override public void showTargetFeedback(Request request) { if (!ignoreRequest(request)){ super.showTargetFeedback(request); } } @Override public void showSourceFeedback(Request request) { if (!ignoreRequest(request)){ super.showSourceFeedback(request); } } @Override public void eraseSourceFeedback(Request request) { if (!ignoreRequest(request)){ super.eraseSourceFeedback(request); } } @Override public void eraseTargetFeedback(Request request) { if (!ignoreRequest(request)){ super.eraseTargetFeedback(request); } } protected final boolean ignoreRequest(Request request){ Object type = request.getType(); if (request instanceof CreateConnectionViewAndElementRequest){ if (RequestConstants.REQ_CONNECTION_START.equals(type) || RequestConstants.REQ_CONNECTION_END.equals(type)){ return ignoreRequestImpl((CreateConnectionViewAndElementRequest)request); } } return false; } protected abstract boolean ignoreRequestImpl(CreateConnectionViewAndElementRequest req); }