2010-11-03 77 views
0

我想知道如何用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模式來解決這個問題嗎?如果是這樣的話,它是如何工作的?

回答

0

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

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

或者我錯過了什麼?