具有I18N GWT的TreeItem

时间:2010-11-03 16:27:09

标签: gwt tree history token gwt-history

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

如果我像这样构建一个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模式解决这个问题,如果是这样,那么它是如何工作的?

2 个答案:

答案 0 :(得分:0)

TreeItem上有2种方法setUserObject(Object userObject)getUserObject。您可以使用这些ID或设置ID,您可以使用它来检查。但是,我不知道你是如何从SelectionEventValueChangeEvent的。你在两者之间丢失了一些信息。

答案 1 :(得分:0)

为什么不将附加到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);
}

或者我错过了什么?