我想拖动&删除TreeViewer
中的节点以重新排序它们。我树中的节点包含IJavaElement
或IFile
。
我的问题是,一旦执行了drop事件(= null
),我就不会尝试将这些节点值放在drag-event中。显然,我在使用或创建这个TransferHandles
时遇到了问题。
@Override
public void dragSetData(DragSourceEvent event) {
IStructuredSelection selections = treeViewer.getSelections();
IBookmark dragNode = (IBookmark) selections.getFirstElement();
//There is only 1 transfer handle as return
event.dataType = FileTransfer.getInstance().getSupportedTypes()[0];
event.data = dragNode.getValue();//<-- Returns my IFile
它应该以这种方式工作,但没有任何东西到达我的掉落听众。有谁知道我做错了什么?
修改
有没有办法将拖动对象的当前实例放入拖动事件?我只是在我自己的视图中使用Eclipse进行此操作。而且我实际上对丢弃的对象实例更感兴趣,而不仅仅是节点的值。
答案 0 :(得分:0)
从您的代码中不清楚为什么在drop事件中得到 null (如果传输类型不兼容,则根本不会丢弃)。但是,在dragSetData()
中设置 dataType 无效。应使用StructuredViewer
的addDragSupport
和addDropSupport
来配置转移类型。
有没有办法将拖动对象的当前实例放入拖动事件?
您可以按照here的说明使用LocalSelectionTransfer
。