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).