voglio generare l'evento "nodo principale aperto" sul mio attuale CellTree di lavoro, che ora ha il seguente comportamento:Programatically aggiornare un 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;
}
Come posso licenziare che "onRangeChanged" evento, al Aggiorna i miei nodi di livello 1?
Qual è il mio metodo di convenienza mancante?
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?
}
<< Più tardi, quando si aggiorna l'elenco è necessario aggiornare la stored dataProvider per i nodi di livello-1. >> Bene!^___^ma ... COME?!? -.- 'Voglio dire, l'unico metodo disponibile sul provider è updateRowData(), devo duplicare il codice rpc presente in onRangeChanged(), o posso semplicemente attivare l'evento "range changed" in qualche modo ?? grazie –
vedi la mia risposta aggiornata –