Есть ли разница в определении DropTarget в представлении и в редакторе? - PullRequest
1 голос
/ 17 июня 2009

Код:

    DropTarget target = new DropTarget(sqlViewer.getTextWidget(), 
    DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK);
    Transfer[] types = new Transfer[] {TreeLeafListTransfer.getInstance(), 
    TextTransfer.getInstance(), FileTransfer.getInstance()};
    target.setTransfer(types);
    target.addDropListener(new DropTreeLeafAdapter(sqlViewer));

И это нормально работает для представления, но не работает в редакторе. Какая разница?
upd : Что самое странное - если я окружаю его блоком try / catch, он все равно завершается ошибкой.
edit : Проблема больше, чем просто не работает DnD. Весь редактор не может быть создан из-за этого блока. Просто появляется пустое окно.

1 Ответ

0 голосов
/ 18 июня 2009

работает нормально для вида, но не работает в редакторе. Какая разница?

Разница должна быть в типе перевода :

Напомним, что типы передачи позволяют источникам перетаскивания указывать, какие типы объектов они позволяют перетаскивать из своего виджета, и они позволяют объектам перетаскивания указывать, какие типы объектов они хотят получать. Для каждого типа передачи существует подкласс org.eclipse.swt.dnd.Transfer. Эти подклассы реализуют поведение маршалинга, которое преобразует между объектами и байтами, позволяя перетаскивать и переносить между приложениями.

Может быть, список используемого вами типа передачи не совсем совместим с целью (редактор)? См. эту тему , чтобы узнать больше об этом.

Другим важным моментом является правильная настройка TransferDropTargetListener (как в этой теме ).

Поскольку я еще не полностью протестировал Eclipse DnD, я не могу дать вам больше подробностей по этой теме, но, надеюсь, это даст вам возможность начать собственный анализ.

...