2010-06-02 3 views
3

J'utilise le contrôle d'arbre dans GWT. J'ai un widget personnalisé ajouter comme TreeItem:Arbre GWT, événement d'ouverture

Tree testTree = new Tree(); 
testTree.addItem(myWidget); 

Je voudrais récupérer MyWidget exemple sur l'événement d'ouverture de noeud. C'est possible ? Est-ce que quelqu'un sait quel événement dois-je utiliser?

J'ai essayé le openHandler<TreeItem> mais ce que je récupère est l'élément ... de l'arbre.

Répondre

1

Je cherchais loin.

Pour répondre à ma question originale: L'événement que nous récupérons dans le openHandler a toutes les informations dont j'avais besoin.

public void onOpen(OpenEvent<TreeItem> event) { 
// The TreeItem 
TreeItem ti = event.getTarget(); 

// The widget added in the treeItem 
CustomWidget cw = (CustomWidget)event.getTarget().getWidget(); 
} 

Juste pour info:

Au lieu d'ajouter un widget (que je n'ai pas utilisé nulle part ailleurs) à mon TreeItem j'ai étendu TreeItem pour créer mon propre widget. Donc j'ai simplement besoin de event.getTarget() pour y accéder.

A propos FastTree:

Pour ce que je lis les gens qui travaillent avec GWT vont généralement droit à l'utilisation FastTree qui, comme l'a dit Jason, offre plus de possibilités et de meilleures performances. J'ai eu un problème lors de l'exécution de FastTree dans ma configuration (même avec le code des exemples) et peu de temps pour y faire face, c'est pourquoi j'ai collé avec le widget Tree natif.

2

Dans presque tous les cas où vous utilisez de Tree GWT, vous voulez vraiment être en utilisant l'GWT incubateur de FastTree, qui a une méthode addBeforeOpenHandler(), qui prend une BeforeOpenHandler<FastTreeItem> qui passe un BeforeOpenEvent à onBeforeOpen() mettre à la disposition du source de l'événement (qui était une bouchée ...)

longue histoire courte, FastTree>Tree, et que vous voulez utiliser addBeforeOpenHandler() sur le FastTree lui-même.

Pour ajouter des widgets à votre arborescence (au lieu de seulement FastTreeItem s), vous pouvez ajouter votre widget au FastTreeItem ou simplement à la sous-classe FastTreeItem pour faire ce que vous voulez.

Questions connexes