在我的DragSourceListener中,我收到DragSourceEvent类型的事件,它包含源小部件,但不包含目标小部件。
在我的ViewerDropAdapter中,我收到DropTargetEvent类型的事件,它具有目标窗口小部件,但不是源窗口小部件。
是否支持拖放的部分验证取决于源和目标窗口小部件。
如何进行涉及源和目标小部件的验证?
答案 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)