You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sc...@apache.org on 2006/05/08 21:02:49 UTC

svn commit: r405131 - in /myfaces: shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/ tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/ tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/

Author: schof
Date: Mon May  8 12:02:47 2006
New Revision: 405131

URL: http://svn.apache.org/viewcvs?rev=405131&view=rev
Log:
Fixes TOMAHAWK-47

Added:
    myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeTest.java
Modified:
    myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTree.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTreeRenderer.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/TreeTag.java
    myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeRendererTest.java

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
URL: http://svn.apache.org/viewcvs/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java?rev=405131&r1=405130&r2=405131&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java Mon May  8 12:02:47 2006
@@ -116,13 +116,6 @@
     String VAR_ATTR                    = "var";
     String FIRST_ATTR                  = "first";
 
-    // Tree2 attributes
-    String SHOW_NAV                    = "org.apache.myfaces.tree2.SHOW_NAV";
-    String SHOW_LINES                  = "org.apache.myfaces.tree2.SHOW_LINES";
-    String CLIENT_SIDE_TOGGLE          = "org.apache.myfaces.tree2.CLIENT_SIDE_TOGGLE";
-    String SHOW_ROOT_NODE              = "org.apache.myfaces.tree2.SHOW_ROOT_NODE";
-    String PRESERVE_TOGGLE             = "org.apache.myfaces.tree2.PRESERVE_TOGGLE";
-
     // dataTable (extended) attributes
     String ROW_ID                      = "org.apache.myfaces.dataTable.ROW_ID";
     String ROW_STYLECLASS_ATTR         = "org.apache.myfaces.dataTable.ROW_STYLECLASS";

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTree.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTree.java?rev=405131&r1=405130&r2=405131&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTree.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTree.java Mon May  8 12:02:47 2006
@@ -19,6 +19,7 @@
 import javax.faces.component.html.HtmlCommandLink;
 import javax.faces.context.FacesContext;
 import javax.faces.el.MethodBinding;
+import javax.faces.el.ValueBinding;
 import java.util.Map;
 
 /**
@@ -26,7 +27,6 @@
  * state of the nodes in the tree.
  *
  * @author Sean Schofield
- * @version $Revision$ $Date$
  */
 public class HtmlTree extends UITreeData
 {
@@ -34,7 +34,13 @@
     private static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.HtmlTree2";
     private UICommand _expandControl;
     private String _varNodeToggler;
-    //private String _selectedNodeId;
+    private Boolean _showNav;
+    private Boolean _showLines;
+    private Boolean _clientSideToggle;
+    private Boolean _showRootNode;
+    private Boolean _preserveToggle;
+    private String _javascriptLocation;
+    private String _imageLocation;
 
     /**
      * Constructor
@@ -44,17 +50,28 @@
         setRendererType(DEFAULT_RENDERER_TYPE);
         _expandControl = new HtmlCommandLink();
         _expandControl.setParent(this);
+        _clientSideToggle = Boolean.TRUE;
+        _preserveToggle = Boolean.TRUE;
+        _showRootNode = Boolean.TRUE;
+        _showNav = Boolean.TRUE;
+        _showLines = Boolean.TRUE;
     }
 
     // see superclass for documentation
     public Object saveState(FacesContext context)
     {
-        Object values[] = new Object[2];
+        Object values[] = new Object[9];
         values[0] = super.saveState(context);
         values[1] = _varNodeToggler;
-        //values[2] = _selectedNodeId;
+        values[2] = _showLines;
+        values[3] = _showNav;
+        values[4] = _clientSideToggle;
+        values[5] = _showRootNode;
+        values[6] = _preserveToggle;
+        values[7] = _javascriptLocation;
+        values[8] = _imageLocation;
 
-        return ((Object) (values));
+        return (Object)values;
     }
 
     // see superclass for documentation
@@ -63,7 +80,13 @@
         Object values[] = (Object[])state;
         super.restoreState(context, values[0]);
         setVarNodeToggler((String)values[1]);
-        //_selectedNodeId = (String)values[2];
+        setShowLines(((Boolean)values[2]).booleanValue());
+        setShowNav(((Boolean)values[3]).booleanValue());
+        setClientSideToggle(((Boolean)values[4]).booleanValue());
+        setShowRootNode(((Boolean)values[5]).booleanValue());
+        setPreserveToggle(((Boolean)values[6]).booleanValue());
+        setJavascriptLocation((String)values[7]);
+        setImageLocation((String)values[8]);
     }
 
     // see superclass for documentation
@@ -100,24 +123,108 @@
         _expandControl.setAction(actionBinding);
     }
 
-//    /**
-//     * Implements the {@link javax.faces.event.ActionListener} interface.  Basically, this
-//     * method is used to listen for node selection events (when a user has clicked on a
-//     * leaf node.)
-//     *
-//     * @param event ActionEvent
-//     */
-//    public void setNodeSelected(ActionEvent event)
-//    {
-//        _selectedNodeId = getNodeId();
-//    }
-//
-//    /**
-//     * Indicates whether or not the current {@link TreeNode} is selected.
-//     * @return boolean
-//     */
-//    public boolean isNodeSelected()
-//    {
-//        return (getNodeId() != null) ? getNodeId().equals(_selectedNodeId) : false;
-//    }
+    public void setShowNav(boolean showNav)
+    {
+        _showNav = Boolean.valueOf(showNav);
+    }
+
+    public boolean isShowNav()
+    {
+        if (_showNav != null) return _showNav.booleanValue();
+        ValueBinding vb = getValueBinding("showNav");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v == null ||  v.booleanValue();
+    }
+
+    public void setShowLines(boolean showLines)
+    {
+        _showLines = Boolean.valueOf(showLines);
+    }
+
+    public boolean isShowLines()
+    {
+        if (_showLines != null) return _showLines.booleanValue();
+        ValueBinding vb = getValueBinding("showLines");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v == null || v.booleanValue();
+    }
+
+    public void setClientSideToggle(boolean clientSideToggle)
+    {
+        _clientSideToggle = Boolean.valueOf(clientSideToggle);
+    }
+
+    public boolean isClientSideToggle()
+    {
+        if (_clientSideToggle != null) return _clientSideToggle.booleanValue();
+        ValueBinding vb = getValueBinding("clientSideToggle");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v == null || v.booleanValue();
+    }
+
+    public void setShowRootNode(boolean showRootNode)
+    {
+        _showRootNode = Boolean.valueOf(showRootNode);
+    }
+
+    public boolean isShowRootNode()
+    {
+        if (_showRootNode != null) return _showRootNode.booleanValue();
+        ValueBinding vb = getValueBinding("showRootNode");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v == null || v.booleanValue();
+    }
+
+    public void setPreserveToggle(boolean preserveToggle)
+    {
+        _preserveToggle = Boolean.valueOf(preserveToggle);
+    }
+
+    public boolean isPreserveToggle()
+    {
+        if (_preserveToggle != null) return _preserveToggle.booleanValue();
+        ValueBinding vb = getValueBinding("preserveToggle");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v == null || v.booleanValue();
+    }
+
+    public void setJavascriptLocation(String javascriptLocation)
+    {
+        _javascriptLocation = javascriptLocation;
+    }
+
+    public String getJavascriptLocation()
+    {
+        if (_javascriptLocation != null) return _javascriptLocation;
+
+        ValueBinding vb = getValueBinding("javascriptLocation");
+        if (vb == null)
+        {
+            return null;
+        }
+        else
+        {
+            return (String)vb.getValue(getFacesContext());
+        }
+    }
+
+    public void setImageLocation(String imageLocation)
+    {
+        _imageLocation = imageLocation;
+    }
+
+    public String getImageLocation()
+    {
+        if (_imageLocation != null) return _imageLocation;
+
+        ValueBinding vb = getValueBinding("imageLocation");
+        if (vb == null)
+        {
+            return null;
+        }
+        else
+        {
+            return (String)vb.getValue(getFacesContext());
+        }
+    }
 }

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTreeRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTreeRenderer.java?rev=405131&r1=405130&r2=405131&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTreeRenderer.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/HtmlTreeRenderer.java Mon May  8 12:02:47 2006
@@ -21,7 +21,6 @@
 import org.apache.myfaces.renderkit.html.util.AddResourceFactory;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
-import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
 
 import javax.faces.component.NamingContainer;
@@ -121,7 +120,7 @@
         String nodeId = null;
         HtmlTree tree = (HtmlTree)component;
 
-        if (getBoolean(component, JSFAttr.CLIENT_SIDE_TOGGLE, true))
+        if (tree.isClientSideToggle())
         {
             restoreStateFromCookies(context, component);
         }
@@ -142,8 +141,12 @@
     {
         HtmlTree tree = (HtmlTree)component;
         // try to restore the tree state from cookies if no session scoped TreeState is supplied and preserveToggle is true in client mode
-        if (!tree.getDataModel().getTreeState().isTransient() && getBoolean(component, JSFAttr.CLIENT_SIDE_TOGGLE, true) && getBoolean(component, JSFAttr.PRESERVE_TOGGLE, true))
+        if (!tree.getDataModel().getTreeState().isTransient()
+                && tree.isClientSideToggle()
+                && tree.isPreserveToggle())
+        {
             restoreStateFromCookies(context, component);
+        }
 
         // write javascript functions
         encodeJavascript(context, component);
@@ -182,8 +185,8 @@
             out.writeAttribute("id", clientId, "id");
         }
 
-        boolean clientSideToggle = getBoolean(tree, JSFAttr.CLIENT_SIDE_TOGGLE, true);
-        boolean showRootNode = getBoolean(tree, JSFAttr.SHOW_ROOT_NODE, true);
+        boolean clientSideToggle = tree.isClientSideToggle();
+        boolean showRootNode = tree.isShowRootNode();
 
         TreeState state = tree.getDataModel().getTreeState();
         TreeWalker walker = tree.getDataModel().getTreeWalker();
@@ -244,7 +247,7 @@
     protected void encodeTree(FacesContext context, ResponseWriter out, HtmlTree tree, TreeWalker walker)
         throws IOException
     {
-        boolean clientSideToggle = getBoolean(tree, JSFAttr.CLIENT_SIDE_TOGGLE, true);
+        boolean clientSideToggle = tree.isClientSideToggle();
 
         // encode the current node
         HtmlRendererUtils.writePrettyLineSeparator(context);
@@ -301,10 +304,10 @@
         TreeNode node = tree.getNode();
 
         // set configurable values
-        boolean showRootNode = getBoolean(tree, JSFAttr.SHOW_ROOT_NODE, true);
-        boolean showNav = getBoolean(tree, JSFAttr.SHOW_NAV, true);
-        boolean showLines = getBoolean(tree, JSFAttr.SHOW_LINES, true);
-        boolean clientSideToggle = getBoolean(tree, JSFAttr.CLIENT_SIDE_TOGGLE, true);
+        boolean showRootNode = tree.isShowRootNode();
+        boolean showNav = tree.isShowNav();
+        boolean showLines = tree.isShowLines();
+        boolean clientSideToggle = tree.isClientSideToggle();
 
         if (clientSideToggle)
         {
@@ -391,8 +394,8 @@
         TreeNode node = tree.getNode();
         String nodeId = tree.getNodeId();
         String spanId = TOGGLE_SPAN + ":" + tree.getId() + ":" + nodeId;//TOGGLE_SPAN + nodeId;
-        boolean showLines = getBoolean(tree, JSFAttr.SHOW_LINES, true);
-        boolean clientSideToggle = getBoolean(tree, JSFAttr.CLIENT_SIDE_TOGGLE, true);
+        boolean showLines = tree.isShowLines();
+        boolean clientSideToggle = tree.isClientSideToggle();
         UIComponent nodeTypeFacet = tree.getFacet(node.getType());
         String navSrc = null;
         String altSrc = null;
@@ -604,7 +607,7 @@
     private void encodeJavascript(FacesContext context, UIComponent component) throws IOException
     {
         // render javascript function for client-side toggle (it won't be used if user has opted for server-side toggle)
-        String javascriptLocation = (String)component.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
+        String javascriptLocation = ((HtmlTree)component).getJavascriptLocation();
         AddResource addResource = AddResourceFactory.getInstance(context);
         if (javascriptLocation == null)
         {
@@ -622,7 +625,7 @@
      * Get the appropriate image src location.  Uses the extension filter mechanism for images if no image
      * location has been specified.
      *
-     * @param context The {@link FacesContex}.  NOTE: If <code>null</code> then context path information
+     * @param context The {@link FacesContext}.  NOTE: If <code>null</code> then context path information
      *    will not be used with extensions filter (assuming no imageLocation specified.)
      * @param component UIComponent
      * @param imageName The name of the image file to use.
@@ -630,7 +633,7 @@
      */
     private String getImageSrc(FacesContext context, UIComponent component, String imageName, boolean withContextPath)
     {
-        String imageLocation = (String)component.getAttributes().get(JSFAttr.IMAGE_LOCATION);
+        String imageLocation = ((HtmlTree)component).getImageLocation();
         AddResource addResource = AddResourceFactory.getInstance(context);
         if (imageLocation == null)
         {

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/TreeTag.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/TreeTag.java?rev=405131&r1=405130&r2=405131&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/TreeTag.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/tree2/TreeTag.java Mon May  8 12:02:47 2006
@@ -20,7 +20,6 @@
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.el.ValueBinding;
-import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
 
 /**
  * @author Sean Schofield
@@ -37,6 +36,8 @@
     private String _clientSideToggle;
     private String _showRootNode;
     private String _preserveToggle;
+    private String _javascriptLocation;
+    private String _imageLocation;
 
     public void release()
     {
@@ -50,6 +51,8 @@
         _clientSideToggle = null;
         _showRootNode = null;
         _preserveToggle = null;
+        _javascriptLocation = null;
+        _imageLocation = null;
     }
 
     public String getComponentType()
@@ -105,6 +108,28 @@
         _preserveToggle = preserveToggle;
     }
 
+    /**
+     * Overrides the super class method since we cannot store these properties in the component's attribute
+     * map and still have things work with facelets.
+     *
+     * @param javascriptLocation
+     */
+    public void setJavascriptLocation(String javascriptLocation)
+    {
+        _javascriptLocation = javascriptLocation;
+    }
+
+    /**
+     * Overrides the super class method since we cannot store these properties in the component's attribute
+     * map and still have things work with facelets.
+     *
+     * @param imageLocation
+     */
+    public void setImageLocation(String imageLocation)
+    {
+        _imageLocation = imageLocation;
+    }
+
     protected void setProperties(UIComponent component)
     {
         super.setProperties(component);
@@ -127,10 +152,39 @@
             ((HtmlTree)component).setVarNodeToggler(_varNodeToggler);
         }
 
-        setBooleanProperty(component, JSFAttr.SHOW_NAV, _showNav);
-        setBooleanProperty(component, JSFAttr.SHOW_LINES, _showLines);
-        setBooleanProperty(component, JSFAttr.CLIENT_SIDE_TOGGLE, _clientSideToggle);
-        setBooleanProperty(component, JSFAttr.SHOW_ROOT_NODE, _showRootNode);
-        setBooleanProperty(component, JSFAttr.PRESERVE_TOGGLE, _preserveToggle);
+        if (_showNav != null)
+        {
+            ((HtmlTree)component).setShowNav(Boolean.getBoolean(_showNav));
+        }
+
+        if (_showLines != null)
+        {
+            ((HtmlTree)component).setShowLines(Boolean.getBoolean(_showLines));
+        }
+
+        if (_clientSideToggle != null)
+        {
+            ((HtmlTree)component).setClientSideToggle(Boolean.getBoolean(_clientSideToggle));
+        }
+
+        if (_showRootNode != null)
+        {
+            ((HtmlTree)component).setShowRootNode(Boolean.getBoolean(_showRootNode));
+        }
+
+        if (_preserveToggle != null)
+        {
+            ((HtmlTree)component).setPreserveToggle(Boolean.getBoolean(_preserveToggle));
+        }
+
+        if (_javascriptLocation != null)
+        {
+            ((HtmlTree)component).setJavascriptLocation(_javascriptLocation);
+        }
+
+        if (_imageLocation != null)
+        {
+            ((HtmlTree)component).setImageLocation(_imageLocation);
+        }
     }
 }

Modified: myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeRendererTest.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeRendererTest.java?rev=405131&r1=405130&r2=405131&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeRendererTest.java (original)
+++ myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeRendererTest.java Mon May  8 12:02:47 2006
@@ -83,8 +83,8 @@
      */
     public void testHideRootNodeServer() throws Exception
     {
-        tree.getAttributes().put(JSFAttr.CLIENT_SIDE_TOGGLE, Boolean.FALSE);
-        tree.getAttributes().put(JSFAttr.SHOW_ROOT_NODE, Boolean.FALSE);
+        tree.setClientSideToggle(false);
+        tree.setShowRootNode(false);
 
         HtmlTreeRenderer treeRenderer = new HtmlTreeRenderer();
         treeRenderer.encodeChildren(facesContext, tree);
@@ -113,8 +113,8 @@
      */
     public void testHideRootNodeClient() throws Exception
     {
-        tree.getAttributes().put(JSFAttr.CLIENT_SIDE_TOGGLE, Boolean.TRUE);
-        tree.getAttributes().put(JSFAttr.SHOW_ROOT_NODE, Boolean.FALSE);
+        tree.setClientSideToggle(true);
+        tree.setShowRootNode(false);
 
         HtmlTreeRenderer treeRenderer = new HtmlTreeRenderer();
         treeRenderer.encodeChildren(facesContext, tree);

Added: myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeTest.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeTest.java?rev=405131&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeTest.java (added)
+++ myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/tree2/HtmlTreeTest.java Mon May  8 12:02:47 2006
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.myfaces.custom.tree2;
+
+import org.apache.shale.test.base.AbstractJsfTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * TestCase for HtmlTree
+ *
+ * @author Sean Schofield
+ */
+public class HtmlTreeTest extends AbstractTreeTestCase
+{
+    //private HtmlTree tree;
+
+    /**
+     * Constructor
+     * @param name Test name
+     */
+    public HtmlTreeTest(String name)
+    {
+        super(name);
+    }
+
+//    public void setUp()
+//    {
+//        super.setUp();
+//        tree = new HtmlTree();
+//    }
+//
+//    public void tearDown()
+//    {
+//        super.tearDown();
+//    }
+
+    // Return the tests included in this test case.
+    public static Test suite()
+    {
+        return new TestSuite(HtmlTreeTest.class);
+    }
+
+    /**
+     * Test default values of the tree
+     */
+    public void testDefaults()
+    {
+        assertTrue("clientSideToggle default should be true", tree.isClientSideToggle());
+        assertTrue("showNav default should be true", tree.isShowNav());
+        assertTrue("showLines default should be true", tree.isShowLines());
+        assertTrue("showRootNode default should be true", tree.isShowRootNode());
+        assertTrue("preserveToggle default should be true", tree.isPreserveToggle());
+    }
+
+    /**
+     *
+     */
+    public void testSaveAndRestore()
+    {
+
+    }
+}