Frage

Ich frage mich, wie man eine TreeItem mit L18N zu bauen und hat nicht verschiedene Token für einen Menüpunkt.

Wenn ich bauen ein TreeItem wie folgt aus:

 @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);
   }

das Token Valuechange ich erhalte, wenn ein Benutzer klickt auf die Schaltfläche „Create“ Knoten „create“ und ich Code dann bekommen wie

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

...

Aber was, wenn ich verschiedene Sprachen in den TreeItem Knoten haben wollen, dann will ich etwas anderes dann den Text als ein Zeichen, vielleicht eine ID. Kann ich mit dem Ort Muster aus den MVP-Mustern löse diese, und wenn ja, wie funktioniert das?

War es hilfreich?

Lösung

Auf TreeItem gibt es 2 Verfahren setUserObject(Object userObject) und getUserObject. Sie können diese auf oder setzen eine Id verwenden, die Sie als verwenden können gegen überprüfen. Allerdings sehe ich nicht, wie man von einem SelectionEvent zum ValueChangeEvent kommen. Sie verlieren einige Informationen dazwischen.

Andere Tipps

Warum gehst du nicht zu vergleichen, die auf den SelectionEvent angebracht ausgewählte Element mit den Einzelteilen Sie zuvor hinzugefügt? So etwas wie folgt aus:

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);
}

Oder bin ich etwas fehlt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top