Quiero desencadenar el evento "nodo raíz abierta" en mi CellTree de trabajo actual, que ahora tiene el siguiente comportamiento:Programatically actualizar una Gwt CellTree
@Override
public <T> NodeInfo<?> getNodeInfo(final T value) {
return new DefaultNodeInfo<Categoria>(
(value instanceof Categoria) ?
createBranchDataProvider((Categoria)value) :
rootDataProvider,
new CategoriaCell()
);
}
private AsyncDataProvider<Categoria> createRootDataProvider() {
AsyncDataProvider<Categoria> dataProvider = new AsyncDataProvider<Categoria>() {
@Override
protected void onRangeChanged(HasData<Categoria> display) {
AsyncCallback<Categoria[]> cb = new AsyncCallback<Categoria[]>() {
@Override
public void onSuccess(Categoria[] result) {
updateRowCount(result.length, true);
updateRowData(0, Arrays.asList(result));
}
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.toString());
}
};
rpcService.getCategorie(cb);
}
};
return dataProvider;
}
¿Cómo puedo disparar que "onRangeChanged" evento, a actualizar mis nodos de nivel 1?
¿Cuál es mi método de conveniencia que falta?
private void updateTree() {
TreeNode rootTreeNode = cellTree.getRootTreeNode();
for (int i = 0; i < rootTreeNode.getChildCount(); i++) {
rootTreeNode.setChildOpen(i, false);
}
// HOW TO REFRESH LEVEL-1 NODES?
}
<< Más tarde, al actualizar su lista tiene que actualizar su almacenado dataProvider para sus nodos de nivel-1. >> Bueno!^___^pero ... ¿CÓMO?!? -.- 'Quiero decir, el único método disponible en el proveedor es updateRowData(), ¿tengo que duplicar el código rpc presente en onRangeChanged(), o simplemente puedo activar el evento "range changed" de alguna manera? gracias –
ver mi respuesta actualizada –