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