Hi
I'm trying to get a tree with fixed data to allow filtering with a filter editor, keeping the parentnodes on filter. When I try to do this with just setting the data and applying a filter, a javascript error occurs saying getDataSource is not available. Therefore I tried using a dummy clientOnly testdatasource. This has unexpected effects:
- the tree gets flattened, all leafs get the same level as the folder nodes;
- the filter is not applied.
I have adapted the example showcase to reflect what I want to do. I'm sure I'm not using the right combination of setters but am struggling for a while now. Any help would be appreciated.
Thanks, ITB
I'm trying to get a tree with fixed data to allow filtering with a filter editor, keeping the parentnodes on filter. When I try to do this with just setting the data and applying a filter, a javascript error occurs saying getDataSource is not available. Therefore I tried using a dummy clientOnly testdatasource. This has unexpected effects:
- the tree gets flattened, all leafs get the same level as the folder nodes;
- the filter is not applied.
I have adapted the example showcase to reflect what I want to do. I'm sure I'm not using the right combination of setters but am struggling for a while now. Any help would be appreciated.
Thanks, ITB
Code:
public class Test implements EntryPoint { private class PartsDataSource extends DataSource { public PartsDataSource() { this.setClientOnly(Boolean.TRUE); Tree grid1Tree = new Tree(); grid1Tree.setModelType(TreeModelType.CHILDREN); grid1Tree.setNameProperty("Name"); grid1Tree.setRoot(new PartsTreeNode("Root", new PartsTreeNode("Bin 1", new PartsTreeNode("Blue Cube", "cube_blue.png"), new PartsTreeNode("Yellow Cube", "cube_yellow.png"), new PartsTreeNode("Green Cube", "cube_green.png") ), new PartsTreeNode("Bin 2", new PartsTreeNode("Blue Piece", "pawn_blue.png"), new PartsTreeNode("Green Piece", "pawn_green.png"), new PartsTreeNode("Yellow Piece", "pawn_yellow.png") ) )); this.setTestData(grid1Tree.getRoot().getAttributeAsRecordArray("children")); } } @Override public void onModuleLoad() { final PartsTreeGrid grid1 = new PartsTreeGrid(); ListGridField name = new ListGridField("Name"); name.setCanFilter(Boolean.TRUE); grid1.setFields(name); grid1.setShowFilterEditor(Boolean.TRUE); grid1.setFilterOnKeypress(Boolean.TRUE); grid1.setKeepParentsOnFilter(Boolean.TRUE); grid1.setLoadDataOnDemand(Boolean.FALSE); // grid1.setFilterLocalData(Boolean.TRUE); // grid1.setDataFetchMode(FetchMode.LOCAL); grid1.setDataSource(new PartsDataSource()); grid1.draw(); grid1.fetchData(); } public static class PartsTreeGrid extends TreeGrid { public PartsTreeGrid() { this.setWidth(300); this.setHeight(300); this.setShowEdges(true); this.setBorder("0px"); this.setBodyStyleName("normal"); this.setShowHeader(false); this.setLeaveScrollbarGap(false); this.setAppImgDir("pieces/16/"); } } public static class PartsTreeNode extends TreeNode { public PartsTreeNode(final String name, final String icon) { this(name, icon, new PartsTreeNode[] {}); } public PartsTreeNode(final String name, final PartsTreeNode... children) { this(name, null, children); } public PartsTreeNode(final String name, final String icon, final PartsTreeNode... children) { this.setAttribute("Name", name); this.setAttribute("children", children); if (icon != null) { this.setAttribute("icon", icon); } } } }