samedi 4 février 2012

TreeGrid without DataSource with Hilites

J’utilise un TreeGrid pour afficher un catalogue de données. Les TreeNode appartiennent à plusieurs types ; Catégorie, Variables et Marqueurs. Ce type est indiqué à l'aide d'un attribut.
J’ai dans mon panel de consultation de catalogue une boite de recherche qui permet d’indiquer par des cases à cocher le type de node recherché et une liste de mots à rechercher dans leur libellé.
Pour afficher le résultat j’utilise, d’une part les Hilites et d’autre part l’ouvertures des nodes parents qui permettent d’accéder aux éléments trouvés.
Afin de remettre à blanc le résultat de la recherche j’ai un bouton de reset que je désire utiliser également pour retirer les hilites. J’ai essayé disableHilite() mais cela n'a pas marché. Après de nombreux autres essais j'ai fini par modifier le tableau de Hilites et fournir un nouveau tableau vierge au TreGrid.

Note du 09/03/2012: 
J'ai du  mettre à jour les Hilites avant les données car j'avais des problèmes de non affichage des hilites dans certains cas.
    leTreeGrid.setHilites(HILITES);
    leTreeGrid.setData(leTree);

Reset:
TreeGrid leTreeGrid = Session.getTreeGridFromSession();           
final Hilite[] HILITES = new Hilite[]{
};               
leTreeGrid.setHilites(HILITES);
Search:
final Hilite[] HILITES = new Hilite[]{
new Hilite() {{ 
   setCriteria(new Criterion("hilite", OperatorId.EQUALS, "oui"));
   setCssText("color:#202020;background-color:#EDF0A5;"); 
   setId("0");
   }},
};               
leTreeGrid.setHilites(HILITES);



I use a TreeGrid to show a catalog data. Some nodes are Category, other are Variable (they are leaves) and some are marker which are internally related to variables set.
I have in my CatalogConsultPanel a search box where I can select on which type of node I Search and which word set I’m looking for.
To display the result I use the hilite property of the TreeGrid.
So I need to Hilite every node which “hilite” attribute is set to yes.

As I have a clear button to reset the search result I wanted to remove the hilites.
I tried to disable the hilites but with no success, so eventually I set the TreeGrid with a new blank Hilite array.

03/09/2012 Note:
I had to re- order the hilite and data set operations because I had some hilite display trouble.
    leTreeGrid.setHilites(HILITES);
    leTreeGrid.setData(leTree);