TreeGrid avec TreeLoader.Probleme de selection
Bonjour à tous,
Je dispose d'un arbre avec des feuilles et des dossiers modélisés
par des classes LeafTreeModel et FolderTreeModel qui étendent TreeModel.
Pour cela j'utilise un TreeGrid.
Après avoir ajouter une feuille à un dossier (via un bouton) je cherche à la
sélectionner dans la foulée mais je n'y arrive pas.
Voici un extrait du code du loader:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
RpcProxy<List<TreeModel>> proxy = new RpcProxy<List<TreeModel>>() {
@Override
protected void load(Object loadConfig,
final AsyncCallback<List<TreeModel>> callback)
{
}
// tree loader
TreeLoader<TreeModel> loader = new BaseTreeLoader<TreeModel>(proxy) {
@Override
public boolean hasChildren(TreeModel parent)
{
return parent instanceof FolderTreeModel;
}
};
// creation du store et de la TreeGrid
TreeStore<TreeModel> store = new TreeStore<TreeModel>(loader);
tree = new TreeGrid<TreeModel>(store, cm); |
Ensuite dans le bloc qui contient l'action d'ajout à l'arbre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
ActionService.Util.getInstance().createLeaf(folderId, ...
new AsyncCallback<Leaf>() {
@Override
public void onFailure(Throwable caught)
{
}
@Override
public void onSuccess(Leaf result)
{
TreeGrid<TreeModel> tree = treeview.getTree();
LeafTreeModel leaf = new LeafTreeModel(new LeafModel(result));
// recuperation du dossier pere
ModelData paent = tree.getSelectionModel().getSelectedItem();
TreeModel nodeParent = (TreeModel) parent;
// j'ouvre le dossier pour pouvoir la selectionner
tree.setExpanded(nodeParent, true);
} |
Ca fonctionne encore mais ensuite j'ai beau tenté de sélectionner la ligne via un select :
TreeGridSelectionModel selectionModel = (TreeGridSelectionModel) tree.getSelectionModel();
selectionModel.select(leaf, true);
Ca ne marche pas.
Je pense que c'est parce que je recharge le loader via la méthode setExpanded et comme la mécanique est asynchrone...
Si quelqu'un a une idée..
Merci d'avance !