IPickTreeItemでユーザーが選択した値をクリアしようとしています。
これは、ユーザーがツリーのルート値の一部 (すべてではない) を選択できないようにするために私が見つけた唯一の解決策です。
より明確にするために、 event.cancel() を呼び出しても、イベントのバブリングは停止しないようです。
私は何か間違っていますか?
TreeNode treenode = new TreeNode("root", new TreeNode("Operation A"),
new TreeNode("Operation B"));
final DynamicForm dynamicForm = new DynamicForm();
Tree tree = new Tree();
tree.setRoot(treenode);
final IPickTreeItem pickTreeItem = new IPickTreeItem();
pickTreeItem.setValueTree(tree);
pickTreeItem.addChangeHandler(new ChangeHandler()
{
@Override
public void onChange(ChangeEvent event)
{
pickTreeItem.clearValue() // Not clearing the value
pickTreeItem.setValue((String)null) // Not working neither
event.cancel() // Not seeming to work...
}
});
dynamicForm.setItems(pickTreeItem);
dynamicForm.draw();
これも機能していません:
pickTreeItem.setInputTransformer(new FormItemInputTransformer()
{
@Override
public Object transformInput(DynamicForm form, FormItem item,
Object value, Object oldValue)
{
return "Desired New Value (not working)...";
}
});
外部ボタンを使用して値をクリアする(picktreeitem ハンドラーの外部)ため、これは奇妙です。
Button bt = new Button("click");
bt.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event)
{
pickTreeItem.setValue((Object) null);
}
});
予想される行動
マイツリー :
-aaaa
----bbbb
----cccc
-dddd
----eeee
----ffff
ユーザーが「aaaa」を選択した場合、PickTreeItem の値を defaultValue (「値を選択してください」) に戻す必要があります。オプションで、「aaaa」を選択できないことをユーザーに通知します。
PickTreeItem は、有効な選択値として「dddd」を受け入れる必要があります。