I’ve got an issue with the drag and drop support for my tree items within a tab, the simple piece of code below works well on Windows XP/Seven, Ubuntu, Fedora and RedHat 4 but fails on RedHat 5.
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
setShellStyle(getShellStyle() | SWT.RESIZE);
TabFolder tabFolder = new TabFolder(composite, SWT.NONE);
tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
TabItem tab = new TabItem(tabFolder, SWT.NONE);
tab.setText("TabName");
/*
* TabItem 1 Content:
*/
TreeViewer tree = new TreeViewer(tabFolder, SWT.SINGLE|SWT.BORDER);
tree.setLabelProvider(provider);
tree.setContentProvider(provider);
tree.getTree().setHeaderVisible(true);
tree.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
TreeColumn tc = new TreeColumn(tree.getTree(), SWT.NONE, 0);
tc.setText("Name");
tc.setWidth(100);
tab.setControl(tree.getTree());
tree.setInput(provider.getInput());
/*
* Drag&Drop Support
*/
Transfer[] transfers = new Transfer[] { TextTransfer.getInstance()};
DragDropItemsSupport dndItemsListener = new DragDropItemsSupport(tree);
tree.addDragSupport(DND.DROP_MOVE, transfers, dndItemsListener);
tree.addDropSupport(DND.DROP_MOVE, transfers, dndItemsListener);
return composite;
}
When I said “works well”, I’m able to pass through the method dragOver of ViewerDropAdapter on mentioned hosts.
@Override
public void dragOver(DropTargetEvent event) {
if (event.item != null)
System.out.println("Drag over : " + ((TreeItem)event.item).getText());
}
Is someone has a explanation, a way to investigate, or a solution 🙂 ?
I see the same thing on a TableViewer in a TabItem in a TabFolder on Centos 5. Haven’t tested on other OS. Can be fixed by changing to CTabFolder and CTabItem.