0

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 パターンでこれを解決できますか? もしそうなら、それはどのように機能しますか?

4

2 に答える 2

0

TreeItemには と の 2 つの方法がsetUserObject(Object userObject)ありgetUserObjectます。これらを使用して Id を設定したり、ID を確認したりできます。SelectionEventしかし、あなたがどのようにして からに来たのかわかりませんValueChangeEvent。その間にいくつかの情報が失われます。

于 2010-11-06T13:42:01.923 に答える
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);
}

または、何か不足していますか?

于 2010-11-07T13:09:22.703 に答える