[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: DND within TableTree?
|
The TableTreeViewer registers your DragSourceListener with the TableTree
control. To get DND to work, the listener has to be registered with the
underlying Table control, like in:
DragSource dragSource = new
DragSource(tableTreeViewer.getTableTree().getTable(), ops);
dragSource.setTransfer(transfers);
dragSource.addDragListener(new SymbolDragListener(tableTreeViewer));
You can do the same for drop. For your class TableTreeDropAdapter, this is
the hack to determine the drop target:
protected Object determineTarget(DropTargetEvent event) {
Object tableTreeItem = event.item == null ? null :
event.item.getData("TableTreeItemID");
return tableTreeItem == null ? null : ((TableTreeItem)
tableTreeItem).getData();
}
The JFace team says this is a bug in SWT (see bugzilla #38840). Apparently,
native table trees are coming up for 3.1 (see #36822).
/Boris
=====================
"Mighty M" <fn2o-mycl@xxxxxxxxxx> wrote:
When I converted my TreeViewer to a TableTreeViewer, the drag-and-drop
support broke. Performing a selection and drag gesture no longer initiates a
drag operation. The dragStart() method is never evoked. Are there any known
issues that prevent dragging and dropping within the TableTree? Do I need
to supply a special TableTreeViewer SWT style to enable dragging? Please
help.
Thanks,
Mark
reply to: fn2o-mycl@xxxxxxxxxx
==========
tableTreeViewer = new TableTreeViewer(parent, SWT.FULL_SELECTION +
SWT.MULTI);
tableTreeViewer.setContentProvider( new DomainContentProvider () );
labelProvider = new DomainLabelProvider ();
tableTreeViewer.setLabelProvider(labelProvider);
tableTreeViewer.setUseHashlookup(true);
tableTreeViewer.setInput (getInitalInput());
Table table = tableTreeViewer.getTableTree().getTable();
new TableColumn(table, SWT.LEFT).setText(DomainConstants.COLUMN_NAME);
new TableColumn(table, SWT.LEFT).setText(DomainConstants.COLUMN_TYPE);
new TableColumn(table, SWT.RIGHT).setText(DomainConstants.COLUMN_STATUS);
new TableColumn(table, SWT.RIGHT).setText(DomainConstants.COLUMN_PRIORITY);
// Add drag and drop support.
int ops = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] transfers = new Transfer[] { DomainSymbolTransfer.getInstance()};
tableTreeViewer.addDragSupport(ops, transfers, new
SymbolDragListener(tableTreeViewer));
dropAdapter = new TableTreeDropAdapter(tableTreeViewer);
tableTreeViewer.addDropSupport(ops, transfers, dropAdapter);