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:
Ensuite dans le bloc qui contient l'action d'ajout à l'arbre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Ca fonctionne encore mais ensuite j'ai beau tenté de sélectionner la ligne via un select :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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 !
Partager