2010-11-03 6 views
0

Je me demande comment construire un TreeItem avec I18N et ne pas avoir de jetons différents pour un élément de menu.TreeItem avec I18N GWT

Si je construis un TreeItem comme ceci:

@UiField 
    Tree tree; 

    TreeItem customer = new TreeItem(customerGroup"); 
     customer.addItem("searchCustomer"); 
     customer.addItem("create"); 
     customer.setState(true); 

          tree.clear(); 
    tree.addItem(customer); 


        @UiHandler("tree") 
    public void onSelection(SelectionEvent<TreeItem> event) { 
    eventBus.fireEvent(event); 
    } 

le jeton ValueChange que je reçois quand un utilisateur clique sur le noeud « créer » est « créer » et puis j'obtenir le code comme

public void onValueChange(ValueChangeEvent<String> event) { 
    String token = event.getValue(); 
    if(token.equals("create") 
    { 
    CreateCustomerView create = new CreateCustomerView(eventBus, 
     customerService); 
     content.setContent(create); 
    } 

Mais si je veux avoir différentes langues dans les nœuds TreeItem, alors je veux quelque chose d'autre que le texte comme un jeton, peut-être un identifiant. Puis-je résoudre ce problème avec le motif Places du patron MVP, et si oui, comment cela fonctionne-t-il?

Répondre

0

Sur TreeItem il y a 2 méthode setUserObject(Object userObject) et getUserObject. Vous pouvez les utiliser pour définir un ID que vous pouvez utiliser pour vérifier. Cependant, je ne vois pas comment vous venez d'un SelectionEvent au ValueChangeEvent. Vous perdez des informations entre les deux.

+0

événementBus.fireEvénement (événement); dans l'arborescence, un SelectionEvent, qui est récupéré par l'événement onValueChange dans l'autre classe –

+0

Merci Hilbrand, votre solution a fonctionné. la définition de l'objet utilisateur lors de la création de treeItem et de sa récupération lorsque je crée histroyToken à partir d'une méthode d'événement onSelection. –

0

Pourquoi ne comparez-vous pas l'élément sélectionné attaché au SelectionEvent avec les éléments que vous avez ajoutés précédemment? Quelque chose comme ceci:

public void onModuleLoad() { 
    Tree tree = new Tree(); 
    final TreeItem item1 = new TreeItem("item 1"); 
    TreeItem item2 = new TreeItem("item 2"); 
    TreeItem item3 = new TreeItem("item 3"); 
    TreeItem item4 = new TreeItem("item 4"); 

    tree.addItem(item1); 
    tree.addItem(item2); 
    tree.addItem(item3); 
    tree.addItem(item4); 

    tree.addSelectionHandler(new SelectionHandler<TreeItem>() { 

     @Override 
     public void onSelection(SelectionEvent<TreeItem> event) { 
      if (event.getSelectedItem().equals(item1)) { 
       Window.alert("item1 selected"); 
      } 
     } 
    }); 

    RootPanel.get().add(tree); 
} 

Ou est-ce que quelque chose me manque?