package org.eclipse.papyrus.uml.diagram.sequence.edit.policies; import java.util.ArrayList; import java.util.List; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConnectionHandleEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle; import org.eclipse.gmf.runtime.diagram.ui.internal.tools.ConnectionHandleTool; import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil; public final class CustomConnectionHandleEditPolicy extends ConnectionHandleEditPolicy { protected List getHandleFigures() { List list = new ArrayList(2); String tooltip; tooltip = buildTooltip(ConnectionHandle.HandleDirection.INCOMING); if (tooltip != null) { list.add(new ConnectionHandle((IGraphicalEditPart) getHost(), ConnectionHandle.HandleDirection.INCOMING, tooltip)); } tooltip = buildTooltip(ConnectionHandle.HandleDirection.OUTGOING); if (tooltip != null) { ConnectionHandle connectionHandle = new ConnectionHandle( (IGraphicalEditPart) getHost(), ConnectionHandle.HandleDirection.OUTGOING, tooltip); connectionHandle.setDragTracker(new ConnectionHandleTool( connectionHandle) { protected String getCommandName() { if (isInState(STATE_CONNECTION_STARTED | STATE_ACCESSIBLE_DRAG_IN_PROGRESS)) return SequenceUtil.OBSERVATION_LINK_REQUEST_END; else return SequenceUtil.OBSERVATION_LINK_REQUEST_START; } }); list.add(connectionHandle); } return list; } }