TreeItem与I18N GWT

问题描述:

我想知道如何用I18N构建TreeItem,并且菜单项没有不同的标记。TreeItem与I18N GWT

如果我建立这样一个TreeItem:

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

的ValueChange令牌,我得到当用户点击“创建”节点是“创建”,然后我得到这样的代码

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

...

但是如果我想在TreeItem节点中使用不同的语言,那么我想要其他的文本作为标记,也许是一个id。我可以使用MVP模式中的Places模式来解决这个问题吗?如果是这样的话,它是如何工作的?

TreeItem有2个方法setUserObject(Object userObject)getUserObject。你可以使用这些或设置一个Id,你可以用它来检查。但是,我不明白你是如何从SelectionEventValueChangeEvent。你之间会丢失一些信息。

+0

eventBus.fireEvent(event);在树中触发一个SelectionEvent,它被另一个类中的onValueChange事件拾取 – 2010-11-07 11:29:53

+0

感谢Hilbrand,您的解决方案已运行。在创建treeItem时设置userObject,并在从onSelection事件方法创建histroyToken时进行拾取。 – 2010-11-08 12:26:03

为什么不将以前添加的项目与SelectionEvent附加的选定项目进行比较?类似这样的:

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

或者我错过了什么?