2013-01-23 2 views
1

J'ai utilisé l'exemple gwt CellList pour implémenter une zone de liste basée sur des cellules. Il a utilisé cellules TextCell pour représenter les données, comme c'était juste le texte, et a fonctionné parfaitement.CellList avec des cellules de CellTree

Maintenant, je dois étendre cette liste à inclure des éléments de type "arbre" (Je veux dire que vous pouvez cliquer sur un élément de la liste, et si ce n'est pas une feuille, il est ouvert et affiche les informations de ses enfants). J'ai donc implémenté un widget basé sur CellTree. (CellTree)

Mon problème est que je ne sais pas comment insérer des éléments de type « arbre », qui sont vraiment CellTrees, dans mon CellList.

La seule approche que je pouvais imaginer était de créer un nouveau type . de la cellule qui représente la CellTree, l'extension « AbstractCell », et l'utiliser comme éléments de CellList

Ma mise en œuvre est:

private class TreeCell extends AbstractCell<CellTreeListBox> { 

    public TreeCell() {} 

    @Override 
    public void render(Context context, CellTreeListBox value, 
     SafeHtmlBuilder sb) 
    { 
     sb.appendEscaped(value.getElement().getInnerHTML()); 
    } 
} 

Cette fois inclus dans un CellList, affiche uniquement les nœuds racine, mais quand je clique sur eux t hey ne t'ouvre pas! donc cette approche ne conserve pas les événements ni la fonctionnalité de la selectionModel ...

Donc je ne sais pas s'il est possible d'implémenter une cellule qui représente un CellTree entier, et conserve ses événements et fonctionnalités (si vous cliquez, le nœud est ouvert et les informations de ses enfants sont affichées, etc ...).

J'apprécierais vraiment toute information à ce sujet!

Répondre

0

Vous devez remplacer votre CellList avec un CellTree.

Ou bien remplacer le CellList avec un certain panneau de conteneur (FlowPanel, VerticalPanel) dans lequel vous souhaitez (manuellement) mettre des widgets (Label s, ou peut-être CellWidget avec un TextCell) et insérez votre CellTree entre eux pour montrer il. Vous perdrez alors les autres caractéristiques des widgets cellulaires: SelectionModel, paging, etc.

Dans tous les cas, abandonnez votre CellList. Vous ne pouvez pas intégrer de widgets dans les widgets de cellule.

+0

Ouais! merci pour votre réponse rapide, Thomas. Je m'attendais à ce qu'un CellTree puisse être "converti" en Cellule personnalisée et ensuite être utilisé comme un élément d'une CellList, mais je vois dans votre commentaire que ce n'est pas possible ... Ce que je ne voulais pas perdre, c'était les caractéristiques de l'exemple CellList dans la vitrine: les informations affichées dans la liste sont incrémentées lorsque l'utilisateur fait défiler vers le bas. Je suppose que je peux implémenter ceci en insérant un seul CellTree, contenant toutes les informations, dans un ScrollPanel, vous pensez? – user2003308

+0

Vous n'aurez pas le comportement de chargement paresseux mais oui, c'est possible. 'CellTree' a un système de pagination intégré, mais il est fait à travers un bouton" Afficher plus "au bas d'une branche. –

+0

Je viens de voir le comportement "Show more", mais ce n'est pas ce que je cherche. Merci beaucoup pour votre réponse, cette question a été vraiment un mal de tête U_U – user2003308

Questions connexes