TreeItem mit L18N GWT
-
28-09-2019 - |
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?
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?