2014-03-03 29 views
1

在我的DragSourceListener中,我接收DragSourceEvent類型的事件,它具有源小部件,但不包含目標小部件。如何使用Eclipse拖放獲取源部件和目標部件

在我的ViewerDropAdapter中,我收到DropTargetEvent類型的事件,它具有目標小部件,但不包含源小部件。

確認是否支持拖放功能的一部分取決於源小部件和目標小部件。

我該怎麼做驗證,涉及源和目標部件?

回答

2

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

Eclipse LocalSelectionTransfer做了一些這樣的事情,讓選擇可以在控件之間拖動。

0

在你試圖拖動和相同的瀏覽器中刪除一個小部件(如試圖重新排序通過拖放等元素),你可以使用getSelectedObject()getCurrentTarget情況下() ViewerDropAdapter中的方法。

getSelectedObject() - 在查看器中返回選定的對象,這是被拖動的源元素。
getCurrentTarget() - 將鼠標懸停在查看器上方時返回目標對象,這將成爲放置後的目標。

您也可以重寫這些方法以滿足您的需求。

您可以驗證validateDrop()中的源對象和目標對象,以檢查是否允許拖放。請注意,目標對象在validateDrop()中默認可用。

validateDrop(Object target, int operation, TransferData transferType)