背景:
GEF连线是很重要的组成部分
anchor是连线的起点和终点所连接的位置
为了美观可以在anchor的位置添加handle使得anchor更加直观
虽然很多时候 提供了连线工具 当时频繁切换工具并不友好
解决方法:
可以当用户单击handle的时候创建连线 具体实现逻辑即:在鼠标监听事件中创建连线工具(继承自ConnectionCreationTool) 并激活
有一些需要主要的操作:
1.激活这个tool domain.setActiveTool(tool)
2.为tool设置viewer
注:这部分的细节 我还不是很了解 例如:tool的工作条件及原理
tool 会通过TargetingTool.updateTargetUnderMouse()获取当前鼠标位置的EditPart
如果当anchor和handle位于图源外时,鼠标获取的EditPart获取的是ContentEditPart 连线自然无法创建
我想到的方法是:(也许有更好的方法)
解决方法重写tool的getLocation()方法并进行偏移 这样就可以