如何使用Eclipse Drag and Drop获取源和目标小部件

时间:2014-03-03 22:47:57

标签: java drag-and-drop swt eclipse-rcp jface

在我的DragSourceListener中,我收到DragSourceEvent类型的事件,它包含源小部件,但不包含目标小部件。

在我的ViewerDropAdapter中,我收到DropTargetEvent类型的事件,它具有目标窗口小部件,但不是源窗口小部件。

是否支持拖放的部分验证取决于源和目标窗口小部件。

如何进行涉及源和目标小部件的验证?

2 个答案:

答案 0 :(得分:2)

如果您只想在自己的控件之间拖动,可以使用自己的org.eclipse.swt.dnd.Transfer类型,其中包含您需要的任何额外信息(可能基于ByteArrayTransfer)。

Eclipse LocalSelectionTransfer做了类似这样的事情,允许在控件之间拖动选择。

答案 1 :(得分:0)

如果您尝试在同一个查看器中拖放窗口小部件(例如尝试通过拖放等重新排序元素),则可以使用 getSelectedObject() < ViewerDropAdapter中的/ strong>和 getCurrentTarget() 方法。

getSelectedObject() - 返回查看器中的选定对象,这是被拖动的源元素 getCurrentTarget() - 在鼠标悬停在查看器上时返回当前鼠标下的目标对象,这将是放置时的目标。

您也可以覆盖这些方法以满足您的需求。

您可以验证validateDrop()中的源对象和目标对象,以检查是否允许删除。请注意,默认情况下,目标对象在validateDrop()中可用。

validateDrop(Object target, int operation, TransferData transferType)