What you need is to return a ConnectionDragCreationTool from your EditPart:
public DragTracker getDragTracker(Request request) { return new ConnectionDragCreationTool(); }
The problem begins if your EditPart has a Direct Edit policy, Direct Edit commands won't be handled anymore. The following solution supports both: creating a connection on mouse drag and Direct Edit:
Create a proxy that implements DragTracker by delegating to ConnectionDragCreationTool and to SelectEditPartTracker:
public class DragConnectionCreationProxy implements DragTracker { private ConnectionDragCreationTool connectionTool; private SelectEditPartTracker editPartTracker; public DragConnectionCreation(EditPart editPart) { this.connectionTool = new ConnectionDragCreationTool(); this.editPartTracker = new SelectEditPartTracker(editPart); } public void commitDrag() { connectionTool.commitDrag(); editPartTracker.commitDrag(); } // Implement all other methods ... }
Then return this class instance from your EditPart:
public DragTracker getDragTracker(Request request) { return new DragConnectionCreationProxy(this); }
1 comment:
Thank you very much, this saved me a lots of walking around in the dark :D
Post a Comment