2012-01-13 2 views
0

Я хочу перетащить & сбрасывать узлы в TreeViewer, чтобы переупорядочить их. Узлы в моем дереве обертывают IJavaElement или IFile. Моя проблема заключается в том, что ни одна из моих попыток поместить эти значения узлов в событие drag-события не будет доступна после выполнения события переадресации (= null). По-видимому, у меня что-то не так с этим TransferHandles вы должны использовать или создавать.Java 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 

Он должен работать таким образом, но ничто не доходит до моего слушателя. Кто-нибудь знает, что я делаю неправильно?

Edit:

Есть ли способ, чтобы поместить текущий экземпляр объекта, который тащили в дрэг-событие? Я только работаю в Eclipse в своем собственном представлении для этой операции. И меня больше интересует экземпляр объекта, который удаляется, а не только значение узла.

ответ

0

Непонятно из вашего кода, почему вы получаете null в вашем событии сбрасывания (в случае несовместимых типов передачи вы вообще не сможете упасть). Однако установка dataType в dragSetData() не влияет. Типы переноса должны быть сконфигурированы с использованием addDragSupport и addDropSupport от StructuredViewer.

Есть ли способ разместить текущий экземпляр объекта, который перетаскивается в событие drag-события?

Вы можете использовать LocalSelectionTransfer, как описано here.

Смежные вопросы