You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by ts...@apache.org on 2004/06/08 10:30:43 UTC
cvs commit: jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/simple SimpleTreeStateModel.java
tsvetelin 2004/06/08 01:30:43
Modified: contrib/src/org/apache/tapestry/contrib/tree/components/table
TreeTableDataView.java TreeTable.jwc
TreeTableDataView.jwc
contrib/src/org/apache/tapestry/contrib/tree/components
TreeNodeView.html Tree.jwc TreeNodeView.java
TreeDataView.jwc TreeDataView.java TreeNodeView.jwc
contrib/src/org/apache/tapestry/contrib/tree/model
ITreeStateModel.java
contrib/src/org/apache/tapestry/contrib/tree/simple
SimpleTreeStateModel.java
Log:
two new features:
1. Show/hide the root node
2. Spliting node selecting and node expanfing/collapsing actions in 2 different events
Revision Changes Path
1.6 +24 -10 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableDataView.java
Index: TreeTableDataView.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableDataView.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TreeTableDataView.java 19 Feb 2004 17:37:44 -0000 1.5
+++ TreeTableDataView.java 8 Jun 2004 08:30:43 -0000 1.6
@@ -83,18 +83,24 @@
public ArrayList generateNodeList() {
if(m_arrAllExpandedNodes == null){
- // render data
+ ArrayList arrAllExpandedNodes = new ArrayList();
+
+ // render data
ITreeModelSource objTreeModelSource = getTreeModelSource();
ITreeModel objTreeModel = objTreeModelSource.getTreeModel();
ITreeDataModel objTreeDataModel = objTreeModel.getTreeDataModel();
- Object objValue = objTreeDataModel.getRoot();
- Object objValueUID = objTreeDataModel.getUniqueKey(objValue, null);
-
- // Object objSelectedNode = objTreeModel.getTreeStateModel().getSelectedNode();
- //if(objSelectedNode == null)
- // objTreeModel.getTreeStateModel().expand(objValueUID);
- ArrayList arrAllExpandedNodes = new ArrayList();
- walkTree(arrAllExpandedNodes, objValue, objValueUID, 0, objTreeModel);
+
+ Object objRoot = objTreeDataModel.getRoot();
+ Object objRootUID = objTreeDataModel.getUniqueKey(objRoot, null);
+ if(getShowRootNode()){
+ }else{
+ for (Iterator iter = objTreeModel.getTreeDataModel().getChildren(objRoot); iter.hasNext();) {
+ Object objChild = iter.next();
+ Object objChildUID = objTreeModel.getTreeDataModel().getUniqueKey(objChild, objRoot);
+ walkTree(arrAllExpandedNodes, objChild, objChildUID, 0, objTreeModel);
+ }
+ }
+
m_arrAllExpandedNodes = arrAllExpandedNodes;
}
@@ -227,4 +233,12 @@
m_objTreeRowObject = object;
}
+ public boolean getShowRootNode(){
+ boolean bShowRootNode = true;
+ IBinding objShowRootNodeB = getBinding("showRootNode");
+ if(objShowRootNodeB != null){
+ bShowRootNode = objShowRootNodeB.getBoolean();
+ }
+ return bShowRootNode;
+ }
}
1.3 +5 -1 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTable.jwc
Index: TreeTable.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTable.jwc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TreeTable.jwc 29 Feb 2004 18:49:10 -0000 1.2
+++ TreeTable.jwc 8 Jun 2004 08:30:43 -0000 1.3
@@ -53,6 +53,9 @@
type="java.util.ArrayList"
required="no" direction="custom"/>
+ <parameter name="showRootNode" type="boolean" required="no"
+ direction="custom"/>
+
<component id="treeView" type="TreeView">
<inherited-binding name="sessionStateManager" parameter-name="sessionStateManager"/>
<inherited-binding name="sessionStoreManager" parameter-name="sessionStoreManager"/>
@@ -65,6 +68,7 @@
<inherited-binding name="nodeViewComponentAddress" parameter-name="nodeViewComponentAddress"/>
<inherited-binding name="entriesPerTablePage" parameter-name="entriesPerTablePage"/>
<inherited-binding name="tableColunms" parameter-name="tableColunms"/>
+ <inherited-binding name="showRootNode" parameter-name="showRootNode"/>
</component>
</component-specification>
1.3 +3 -1 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableDataView.jwc
Index: TreeTableDataView.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableDataView.jwc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TreeTableDataView.jwc 29 Feb 2004 18:49:10 -0000 1.2
+++ TreeTableDataView.jwc 8 Jun 2004 08:30:43 -0000 1.3
@@ -34,6 +34,8 @@
type="int"
required="no"
direction="custom"/>
+ <parameter name="showRootNode" type="boolean" required="no"
+ direction="custom"/>
<parameter name="tableColunms"
type="java.util.ArrayList"
1.2 +6 -2 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.html
Index: TreeNodeView.html
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TreeNodeView.html 31 Oct 2003 08:16:11 -0000 1.1
+++ TreeNodeView.html 8 Jun 2004 08:30:43 -0000 1.2
@@ -3,11 +3,15 @@
<span jwcid="$content$">
<span jwcid="offset">
<span jwcid="makeNodeDirect">
- <a jwcid="direct">
+ <a jwcid="expandCollapsDirect">
<span jwcid="showImages">
<img jwcid="imageNode"/>
</span>
- <span jwcid="insertValue"/></a><br>
+ </a>
+ <a jwcid="nodeDirect">
+ <span jwcid="insertValue"/>
+ </a>
+ <br>
</span>
<span jwcid="makeNodeNoDirect">
<span jwcid="showImages2">
1.4 +5 -2 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/Tree.jwc
Index: Tree.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/Tree.jwc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Tree.jwc 29 Feb 2004 18:49:16 -0000 1.3
+++ Tree.jwc 8 Jun 2004 08:30:43 -0000 1.4
@@ -52,7 +52,9 @@
<parameter name="nodeRenderFactory"
type="org.apache.tapestry.contrib.tree.components.INodeRenderFactory"
required="no" direction="custom"/>
-
+ <parameter name="showRootNode" type="boolean" required="no"
+ direction="custom"/>
+
<component id="treeView" type="TreeView">
<inherited-binding name="sessionStateManager" parameter-name="sessionStateManager"/>
<inherited-binding name="sessionStoreManager" parameter-name="sessionStoreManager"/>
@@ -63,6 +65,7 @@
<component id="treeData" type="TreeDataView">
<binding name="treeView" expression='components.treeView'/>
<!--inherited-binding name="value" parameter-name="value"/-->
+ <inherited-binding name="showRootNode" parameter-name="showRootNode"/>
</component>
<component id="treeNodeValue" type="TreeNodeView">
1.6 +36 -4 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.java
Index: TreeNodeView.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TreeNodeView.java 19 Feb 2004 17:38:00 -0000 1.5
+++ TreeNodeView.java 8 Jun 2004 08:30:43 -0000 1.6
@@ -93,7 +93,7 @@
*
* @param cycle The Tapestry request cycle object.
*/
- public void nodeSelect(IRequestCycle cycle) {
+ public void nodeExpandCollaps(IRequestCycle cycle) {
Object context[] = cycle.getServiceParameters();
Object objValueUID = null;
if (context != null && context.length > 0) {
@@ -114,9 +114,41 @@
}
}
- private void fireNodeCollapsed(Object objValueUID, ITreeModelSource objTreeModelSource){
+ /**
+ * Called when a node in the tree is selected by the user.
+ * the tree state model is retrieved, and it is told
+ * to select the node.
+ *
+ * @param cycle The Tapestry request cycle object.
+ */
+ public void nodeSelect(IRequestCycle cycle) {
+ Object context[] = cycle.getServiceParameters();
+ Object objValueUID = null;
+ if (context != null && context.length > 0) {
+ objValueUID = context[0];
+ }
+ ComponentAddress objModelSourceAddress = (ComponentAddress)context[2];
+ ITreeModelSource objTreeModelSource = (ITreeModelSource) objModelSourceAddress.findComponent(cycle);
+ //ITreeModelSource objTreeModelSource = getTreeModelSource();
+ ITreeStateModel objStateModel = objTreeModelSource.getTreeModel().getTreeStateModel();
+ Object objSelectedNodeInState = objStateModel.getSelectedNode();
+
+ if(objValueUID.equals(objSelectedNodeInState)){
+ //do nothing, the selected node in UI is the same as the selected in
+ //state model. The user should use refresh of back button.
+ return;
+ }
+
+ objStateModel.setSelectedNode(objValueUID);
+ fireNodeSelected(objValueUID, objTreeModelSource);
+ }
+
+ private void fireNodeSelected(Object objValueUID, ITreeModelSource objTreeModelSource){
+ deliverEvent(TreeStateEvent.SELECTED_NODE_CHANGED, objValueUID, objTreeModelSource);
+ }
+
+ private void fireNodeCollapsed(Object objValueUID, ITreeModelSource objTreeModelSource){
deliverEvent(TreeStateEvent.NODE_COLLAPSED, objValueUID, objTreeModelSource);
-
}
private void fireNodeExpanded(Object objValueUID, ITreeModelSource objTreeModelSource){
1.3 +3 -1 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeDataView.jwc
Index: TreeDataView.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeDataView.jwc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TreeDataView.jwc 29 Feb 2004 18:49:16 -0000 1.2
+++ TreeDataView.jwc 8 Jun 2004 08:30:43 -0000 1.3
@@ -27,6 +27,8 @@
required="yes" direction="custom"/>
<parameter name="value" type="java.lang.Object" required="no" direction="custom"/>
+ <parameter name="showRootNode" type="boolean" required="no"
+ direction="custom"/>
<component id="wrapped" type="RenderBody"/>
</component-specification>
1.6 +21 -9 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeDataView.java
Index: TreeDataView.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeDataView.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TreeDataView.java 19 Feb 2004 17:38:00 -0000 1.5
+++ TreeDataView.java 8 Jun 2004 08:30:43 -0000 1.6
@@ -72,14 +72,18 @@
TreeView objView = getTreeView();
ITreeModel objTreeModel = objView.getTreeModel();
ITreeDataModel objTreeDataModel = objTreeModel.getTreeDataModel();
- Object objValue = objTreeDataModel.getRoot();
- Object objValueUID = objTreeDataModel.getUniqueKey(objValue, null);
-
- // Object objSelectedNode = objTreeModel.getTreeStateModel().getSelectedNode();
- //if(objSelectedNode == null)
- // objTreeModel.getTreeStateModel().expand(objValueUID);
-
- walkTree(objValue, objValueUID, 0, objTreeModel, writer, cycle);
+
+ Object objRoot = objTreeDataModel.getRoot();
+ Object objRootUID = objTreeDataModel.getUniqueKey(objRoot, null);
+ if(getShowRootNode()){
+ walkTree(objRoot, objRootUID, 0, objTreeModel, writer, cycle);
+ }else{
+ for (Iterator iter = objTreeModel.getTreeDataModel().getChildren(objRoot); iter.hasNext();) {
+ Object objChild = iter.next();
+ Object objChildUID = objTreeModel.getTreeDataModel().getUniqueKey(objChild, objRoot);
+ walkTree(objChild, objChildUID, 0, objTreeModel, writer, cycle);
+ }
+ }
cycle.setAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE, objExistedTreeModelSource);
}
@@ -120,4 +124,12 @@
m_objTreeRowObject = object;
}
+ public boolean getShowRootNode(){
+ boolean bShowRootNode = true;
+ IBinding objShowRootNodeB = getBinding("showRootNode");
+ if(objShowRootNodeB != null){
+ bShowRootNode = objShowRootNodeB.getBoolean();
+ }
+ return bShowRootNode;
+ }
}
1.4 +11 -7 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.jwc
Index: TreeNodeView.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/components/TreeNodeView.jwc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TreeNodeView.jwc 29 Feb 2004 18:49:16 -0000 1.3
+++ TreeNodeView.jwc 8 Jun 2004 08:30:43 -0000 1.4
@@ -47,23 +47,27 @@
<reserved-parameter name="closenodeimage"/>
<reserved-parameter name="nodeviewdirect"/>
- <component id="direct" type="DirectLink">
+ <component id="expandCollapsDirect" type="DirectLink">
<binding name="parameters" expression="nodeContext"/>
- <binding name="listener" expression="listeners.nodeSelect"/>
+ <binding name="listener" expression="listeners.nodeExpandCollaps"/>
<binding name="stateful" expression="false"/>
<binding name="name" expression="selectedID"/>
<binding name="anchor" expression="cleanSelectedID"/>
</component>
+ <component id="nodeDirect" type="DirectLink">
+ <binding name="parameters" expression="nodeContext"/>
+ <binding name="listener" expression="listeners.nodeSelect"/>
+ <binding name="stateful" expression="false"/>
+ <binding name="name" expression="selectedID"/>
+ <binding name="anchor" expression="cleanSelectedID"/>
+ </component>
+
<component id="showImages" type="Conditional">
<binding name="condition" expression="showImages"/>
</component>
<component id="showImages2" copy-of="showImages"/>
-
- <!--component id="showWithoutImages" type="Conditional">
- <binding name="condition" expression="showWithoutImages"/>
- </component-->
<component id="makeNodeDirect" type="Conditional">
<binding name="condition" expression="makeNodeDirect"/>
1.5 +3 -2 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/model/ITreeStateModel.java
Index: ITreeStateModel.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/model/ITreeStateModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ITreeStateModel.java 19 Feb 2004 17:37:59 -0000 1.4
+++ ITreeStateModel.java 8 Jun 2004 08:30:43 -0000 1.5
@@ -26,7 +26,8 @@
/*
* Return the selected node unique key
*/
- Object getSelectedNode();
+ Object getSelectedNode();
+ public void setSelectedNode(Object objUniqueKey);
void expand(Object objUniqueKey);
void expandPath(Object objUniqueKey);
1.5 +9 -7 jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/simple/SimpleTreeStateModel.java
Index: SimpleTreeStateModel.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/contrib/src/org/apache/tapestry/contrib/tree/simple/SimpleTreeStateModel.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SimpleTreeStateModel.java 19 Feb 2004 17:37:43 -0000 1.4
+++ SimpleTreeStateModel.java 8 Jun 2004 08:30:43 -0000 1.5
@@ -47,13 +47,13 @@
public Set getExpandSelection() {
return m_setExpanded;
}
-
+
/**
* @see org.apache.tapestry.contrib.tree.model.ITreeStateModel#expand(Object)
*/
public void expand(Object objUniqueKey) {
m_setExpanded.add(objUniqueKey);
- setSelectedNode(objUniqueKey);
+ //setSelectedNode(objUniqueKey);
}
/**
@@ -61,7 +61,7 @@
*/
public void expandPath(Object objUniqueKey) {
m_setExpanded.add(objUniqueKey);
- setSelectedNode(objUniqueKey);
+ //setSelectedNode(objUniqueKey);
}
/**
@@ -69,7 +69,7 @@
*/
public void collapse(Object objUniqueKey) {
m_setExpanded.remove(objUniqueKey);
- setSelectedNode(objUniqueKey);
+ //setSelectedNode(objUniqueKey);
}
/**
@@ -77,7 +77,7 @@
*/
public void collapsePath(Object objUniqueKey) {
m_setExpanded.remove(objUniqueKey);
- setSelectedNode(objUniqueKey);
+ //setSelectedNode(objUniqueKey);
}
/**
@@ -92,10 +92,12 @@
public Object getSelectedNode() {
return m_objSelectedNodeUID;
}
- private void setSelectedNode(Object objUniqueKey){
+
+ public void setSelectedNode(Object objUniqueKey){
if(m_objSelectedNodeUID == null || !m_objSelectedNodeUID.equals(objUniqueKey))
m_objSelectedNodeUID = objUniqueKey;
}
+
/**
* @see org.apache.tapestry.contrib.tree.model.ITreeStateModel#resetState()
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org