2013-09-15 4 views
0

Я хочу перетащить текст из таблицыViewer, перетащить на TreeViewer и заполнить перетаскиваемый текст в выбранный treeitem. Установлен целевой источник цели и падения. Первая встречающаяся проблема заключается в том, что элемент DropTargetEvent - null, поэтому я не могу знать, на какой текст дерева.Чтобы отбросить текст на treeitem treeViewer и далее заполнить его в treeitem

Код капельным методом Фро цели падения заключается в следующем:

public void drop(DropTargetEvent event) { 
    System.out.println("Droped" + event); 
    if (event.data == null) { 
    event.detail = DND.DROP_NONE; 
    } 
    //TreeItem item = (TreeItem) event.item; 
    Tree xmlTree = xmlVisualEditor.getTree(); //to get the target tree 
    Point selectedPoint = new Point(event.x, event.y); 
    TreeItem item = xmlTree.getItem(selectedPoint); #<----- Null pointer exception 

    if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) { 
     String dropedData = (String) event.data; 
     System.out.println("Dropped Data:" + dropedData); 
     item.setText(dropedData); 
    } 

}

распечатать содержимое перетащили события, он показывает, как:

DropTargetEvent {DropTarget { } time = 141201730 data = students-name x = 861 y = 393 item = null operations = 3 operation = 1 feedback = 1 dataTypes = {13 1} currentDataType = 13}

Как можно пчелы, пункт null.

О делать дальше, мне нужно

  1. получить TreeItem, где он упал.

  2. заполнить перетаскивается текст в одну колонку выпавших TreeItem

Любые комментарии о приближении решение можно только приветствовать. Большое спасибо.

ответ

0

Для TreeViewer вы должны продлить org.eclipse.jface.viewers.ViewerDropAdapter и реализовать метод performDrop. Для установки адаптера используйте TreeViewer.addDropSupport.

В performDrop звонок в getCurrentTarget() доставит вам целевой объект.