Java SWT: перетаскивание - PullRequest
       12

Java SWT: перетаскивание

0 голосов
/ 13 января 2012

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

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

Edit:

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

1 Ответ

0 голосов
/ 16 января 2012

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

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

Вы можете использовать LocalSelectionTransfer как объяснено здесь .

...