Every node within a TreeGrid can be selected. But sometimes you only need the leafs or only a few of them. It is possible to filter the selection later, just before you execute an action on the selected nodes. But the better way is to prevent a selection on obsolete nodes. Use a custom SelectionModel for that.
public class CustomSelectionModel extends GridSelectionModel<ModelData> { public CustomSelectionModel() { addListener(Events.BeforeSelect, new NoSelectionListener()); } private class NoSelectionListener implements Listener<SelectionEvent<ModelData>> { @Override public void handleEvent(SelectionEvent<ModelData> se) { ModelData model = se.getModel(); if (model instanceof Something) { se.setCancelled(true); } } } }
You can also use properties of the model to make a decision, but sometimes you can simply ask for the instance type (i.e. folders and files).