How to fire setData event programmatically on SWT tree in VIRTUAL mode

Is it possible to fire the setData event programmatically on the SWT tree in VIRTUAL mode?

+3
source share
3 answers

The method notifyListenersin Widget does this.

tree.notifyListeners(SWT.SetData, <EventData>)

However, you must create and pass the correct event.

+1
source

I would just like to complement the Fabian Zeindl answer that worked for me if this additional information is useful to someone.

SWT.VIRTUAL TreeItem . TreeViewer, TreeItem, viewer.setSelection().
, TreeItem.

:

final Tree treeViewerTree = treeViewer.getTree();
// we now assume that the indexOfElementToSelect value is set to a correct value (which is a lower value than treeViewerTree.getItemCount()!!)
TreeItem treeItem = treeViewerTree.getItem(indexOfElementToSelect);
final boolean isVirtualTree = (treeViewerTree.getStyle() & SWT.VIRTUAL) != 0;
if(isVirtualTree) {
    // trigger SWT.SetData event programmatically on SWT tree in VIRTUAL mode which loads the item explicitly
    Event virtualTreeEvent = new Event();
    virtualTreeEvent.index = indexOfElementToSelect;
    virtualTreeEvent.item = treeItem;
    // triggering SWT.SetData programmatically
    treeViewerTree.notifyListeners(SWT.SetData, virtualTreeEvent);
}

treeViewer.setSelection(new StructuredSelection(........), true);
+1

Sam Zheng, two years on the road, I certainly hope you find your answer, but here it is for other truth seekers:

Use methods for Tree.clear(index,boolean)either Tree.clearAll(boolean)root level elements and methods TreeItem.clear(index,boolean)or TreeItem.clear(boolean)for elements under the root.

0
source