2012-01-13 85 views
0

我想在TreeViewer中拖动&拖放节点对它们重新排序。我树中的节点包装了IJavaElementIFile。 我的问题是,一旦执行放置事件(= null),我的尝试都不会将这些节点值放入拖动事件中。显然,我得到了一个错误,你必须使用或创建这个TransferHandlesJava SWT:拖/放

@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

从您的代码中不清楚为什么在您的drop事件中获得null(在不兼容的传输类型的情况下,您根本不会掉线)。但是,在dragSetData()中设置数据类型不起作用。传输类型应使用StructuredVieweraddDragSupportaddDropSupport进行配置。

有没有一种方法来放置拖动到拖动事件中的对象的当前实例?

您可以使用LocalSelectionTransfer的解释here