2012-01-13 121 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