Hello,
I would like to create a custom FormItem to use it as a filter editor property. This FormItem is supposed to be a TextItem with a COMBO_BOX PickerIcon. When a user click on the PickerIcon, it shows a TreeGrid just as if it was a SelectItem with a TreeGrid inside of it.
The problem is when I select a node in the TreeGrid, I would like to update the value of the TextItem, but it does not seem to work. Here is my code :
The line "setValue(builder.toString());" does not work when I use my TreeItem as a filter editor property for a ListGrid whereas it works well when I use it as a field in a DynamicForm.
Thank you.
I would like to create a custom FormItem to use it as a filter editor property. This FormItem is supposed to be a TextItem with a COMBO_BOX PickerIcon. When a user click on the PickerIcon, it shows a TreeGrid just as if it was a SelectItem with a TreeGrid inside of it.
The problem is when I select a node in the TreeGrid, I would like to update the value of the TextItem, but it does not seem to work. Here is my code :
Code:
public class TreeItem extends TextItem implements FormItemClickHandler, SelectionChangedHandler { private TreeGrid treeGrid; private PickerIcon icon; public TreeItem() { TreeGridField field1 = new TreeGridField("name"); TreeNode node1 = new TreeNode(); node1.setAttribute("name", "name1"); TreeNode node2 = new TreeNode(); node2.setAttribute("name", "name2"); Tree tree = new Tree(); tree.setRoot(new TreeNode()); tree.setModelType(TreeModelType.PARENT); tree.add(node1, tree.getRoot()); tree.add(node2, node1); treeGrid = new TreeGrid(); treeGrid.setFields(field1); treeGrid.setData(tree); treeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); treeGrid.setShowSelectedStyle(false); treeGrid.setShowPartialSelection(true); treeGrid.setWidth100(); treeGrid.setShowHeader(false); treeGrid.setPosition(Positioning.ABSOLUTE); treeGrid.addSelectionChangedHandler(this); treeGrid.hide(); icon = new PickerIcon(PickerIcon.COMBO_BOX); icon.addFormItemClickHandler(this); setIcons(icon); } @Override public void onFormItemClick(FormItemIconClickEvent event) { if (treeGrid.isVisible()) { treeGrid.hide(); } else { treeGrid.setLeft(event.getItem().getPageLeft()); treeGrid.setTop(event.getItem().getPageTop() + event.getItem().getHeight()); treeGrid.setWidth(event.getItem().getWidth()); treeGrid.show(); } } @Override public void onSelectionChanged(SelectionEvent event) { if (event.getSelection().length > 0) { StringBuilder builder = new StringBuilder(); builder.append(event.getSelection()[0].getAttribute("name")); for (int i = 1; i < event.getSelection().length; i++) { builder.append(", "); builder.append(event.getSelection()[i].getAttribute("name")); } setValue(builder.toString()); } } }
Thank you.
Comment