Skip to content

Commit

Permalink
ZK-3853: Tree supports 3-states selection
Browse files Browse the repository at this point in the history
  • Loading branch information
JamsonChan committed Jan 10, 2024
1 parent b24e455 commit f8b58a9
Show file tree
Hide file tree
Showing 33 changed files with 2,112 additions and 31 deletions.
3 changes: 3 additions & 0 deletions zkdoc/release-note
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ ZK 10.0.0
ZK-5590: Reimplement sourcemap in ZK 10
ZK-5512: Support for Listening to Space Key Pressed
ZK-5096: Consider deprecate Anchorlayout and Anchorchildren
ZK-3853: Tree supports 3-states selection

* Bugs
ZK-5393: Update ZK jars to jakarta-friendly uploads
Expand Down Expand Up @@ -39,6 +40,8 @@ ZK 10.0.0
simplifying the source to enable embedded mode.
+ The setContent() method of Comboitem, Menu, and Navitem now only accepts a safe HTML content.
i.e. The content will be sanitized before rendering, please don't use JavaScript content.
+ Tree now supports tri-state selection, both component and model,
for more information, please refer to the Tree component reference.
--------
ZK 10.0.0-Beta
Oct 17, 2023
Expand Down
4 changes: 4 additions & 0 deletions zktest/src/main/webapp/WEB-INF/zk.xml
Original file line number Diff line number Diff line change
Expand Up @@ -843,4 +843,8 @@ Copyright (C) 2006 Potix Corporation. All Rights Reserved.
<!-- <name>org.zkoss.bind.defaultComposer.class</name>-->
<!-- <value>org.zkoss.zktest.test2.F100_ZK_BindComposer</value>-->
<!-- </library-property>-->
<library-property>
<name>org.zkoss.zkmax.zul.tree.engine.class</name>
<value>org.zkoss.zkmax.zul.impl.TreeEngineImpl</value>
</library-property>
</zk>
108 changes: 108 additions & 0 deletions zktest/src/main/webapp/test2/F100-ZK-3853-1.zul
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
F100-ZK-3853-1.zul
Purpose:
Description:
History:
Tue Jan 02 16:00:24 CST 2024, Created by jamson
Copyright (C) 2024 Potix Corporation. All Rights Reserved.
-->
<zk xmlns:n="native">

<n:h1>Tri-State Tree Pure Component Test</n:h1>
<label multiline="true">
click checkbox and check whether all updates are correct.

Note: To include Tri-state Tree implementation, set LibraryProperty `org.zkoss.zkmax.zul.tree.engine.class` to `org.zkoss.zkmax.zul.impl.TreeEngineImpl`
</label>

<tree tristate="true">
<treecols>
<treecol label="treecol" />
</treecols>
<treechildren>
<treeitem open="false">
<treerow>
<treecell label="0" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="1"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="2" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="3" />
</treerow>
</treeitem>
<treeitem open="false">
<treerow>
<treecell label="4" />
</treerow>
<treechildren>
<treeitem open="false">
<treerow>
<treecell label="5" />
</treerow>
<treechildren>
<treeitem open="false">
<treerow>
<treecell label="6" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="7" />
</treerow>
</treeitem>
<treeitem open="false">
<treerow>
<treecell label="8" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="9" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="10" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="11" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="12" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="13" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>
</zk>
69 changes: 69 additions & 0 deletions zktest/src/main/webapp/test2/F100-ZK-3853-2.zul
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
F100-ZK-3853-2.zul
Purpose:
Description:
History:
Tue Jan 02 18:38:49 CST 2024, Created by jamson
Copyright (C) 2024 Potix Corporation. All Rights Reserved.
-->
<zk xmlns:n="native">

<n:h1>Tri-State Tree Model Test</n:h1>
<label multiline="true">
1. click checkbox and check whether all updates are correct.
2. click `toggle model` button, check the model save all state correctly after un-bind and re-bind.

Note: To include Tri-state Tree implementation, set LibraryProperty `org.zkoss.zkmax.zul.tree.engine.class` to `org.zkoss.zkmax.zul.impl.TreeEngineImpl`
</label>

<button id="btn" label="toggle model">
<attribute name="onClick">
tree.setModel(tree.getModel() == null ? model : null);
</attribute>
</button>
<tree id="tree">
<treecols>
<treecol label="treecol" />
</treecols>
</tree>
<zscript>
model = new DefaultTristateTreeModel(
new DefaultTreeNode(null,
new DefaultTreeNode[] {
new DefaultTreeNode("0",
new DefaultTreeNode[] {
new DefaultTreeNode("1"),
new DefaultTreeNode("2")
}),
new DefaultTreeNode("3"),
new DefaultTreeNode("4",
new DefaultTreeNode[] {
new DefaultTreeNode("5",
new DefaultTreeNode[] {
new DefaultTreeNode("6"),
new DefaultTreeNode("7"),
new DefaultTreeNode("8",
new DefaultTreeNode[] {
new DefaultTreeNode("9"),
new DefaultTreeNode("10"),
new DefaultTreeNode("11"),
}
)
}
),
new DefaultTreeNode("12"),
new DefaultTreeNode("13")
}
)
}
)
);
tree.setModel(model);
tree.setTristate(true);
</zscript>
</zk>
126 changes: 126 additions & 0 deletions zktest/src/main/webapp/test2/F100-ZK-3853-3.zul
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
F100-ZK-3853-3.zul
Purpose:
Description:
History:
Tue Jan 02 19:14:59 CST 2024, Created by jamson
Copyright (C) 2024 Potix Corporation. All Rights Reserved.
-->
<zk xmlns:n="native">

<n:h1>Tri-State Tree Pure Component Mode-Switching Test</n:h1>
<label multiline="true">
click `toggle checkmark`, `toggle multiple`, `toggle tristate` to see these state switch according to the following rules:
* If toggle `tristate` false -> true, `checkmark` and `multiple` will be set to true at the same time.
* If toggle `multiple` or `checkmark` true -> false, if `tristate` is true, then it'll be set to false.
* If every mode change to `tristate` mode, initially it'll generate 3-state based on current checkmark.

Note: To include Tri-state Tree implementation, set LibraryProperty `org.zkoss.zkmax.zul.tree.engine.class` to `org.zkoss.zkmax.zul.impl.TreeEngineImpl`
</label>

<button label="toggle checkmark">
<attribute name="onClick">
tree.setCheckmark(!tree.isCheckmark());
</attribute>
</button>
<button label="toggle multiple">
<attribute name="onClick">
tree.setMultiple(!tree.isMultiple());
</attribute>
</button>
<button label="toggle tristate">
<attribute name="onClick">
tree.setTristate(!tree.isTristate());
</attribute>
</button>
<tree id="tree">
<treecols>
<treecol label="treecol" />
</treecols>
<treechildren>
<treeitem>
<treerow>
<treecell label="0" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="1"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="2" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="3" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="4" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="5" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="6" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="7" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="8" />
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="9" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="10" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="11" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="12" />
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="13" />
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>
</zk>
Loading

0 comments on commit f8b58a9

Please sign in to comment.