我想在我的EditPartViewer中获取一个图形元素把它拖放到一个swt控件中。实现在<<图形编辑器中拖拽对象到swt控件>>一文有提到了。不过我在处理的时候,并不是按照他的那个方式来做的。我是根据当前点(DragSourceEvent)的位置来查找该点下的对象。看是否是我需要的对象,如果是就允许拖动。否则就不可以。
问题在这里出来:当没有出现滚动条的时候一切都很正常,当一出现滚动条就死活没有办法拖动了。最后才发现DragSourceEvent中的坐标是按照屏幕来得,而EditPartViewer 中的坐标是按照他的那个viewer来得。这个地方需要转换一下。
这个转换的动作发现在jfire(org.nightlabs.editor2d.util.EditorUtil https://svn.jfire.org/svn/main/trunk/org.nightlabs.editor2d/src/org/nightlabs/editor2d/util/EditorUtil.java)中有现成的。不多说了,拿来用吧。