You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cr...@apache.org on 2005/11/18 00:56:15 UTC

svn commit: r345369 - in /beehive/trunk/netui: src/tags-html/org/apache/beehive/netui/tags/tree/ test/webapps/drt/testRecorder/config/ test/webapps/drt/testRecorder/tests/ test/webapps/drt/web/tree/renderer/

Author: crogers
Date: Thu Nov 17 15:56:00 2005
New Revision: 345369

URL: http://svn.apache.org/viewcvs?rev=345369&view=rev
Log:
Some code clean up to resolve http://issues.apache.org/jira/browse/BEEHIVE-974 - Allow users to define their own tree renderer

The treeRenderer attribute on the <netui:tree> tag with a Java class name of a custom TreeRenderer implementation to use for a given tree has been removed. The long term, prefered option/solution will be to do this with some Dependency Injection. Removing this attribute will avoid having to support and then deprecate these code changes. The support for using the new element in the NetUI config file to define a custom TreeRenderer (to use for trees in the entire web app) remains in place. This is the mechanism to use until we get DI support.

The TreeRenderer testRecorder file was removed but the test files remain so that it can be run manually (after editing the beehive-netui-config.xml).

tests: drt, bvt in netui (WinXP)
BB: self


Removed:
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/TreeRenderer.xml
Modified:
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderState.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderer.java
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
    beehive/trunk/netui/test/webapps/drt/web/tree/renderer/index.jsp

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java Thu Nov 17 15:56:00 2005
@@ -708,36 +708,6 @@
     }
 
     /**
-     * Sets the name of the specific TreeRenderer class to use for rendering this tree.
-     * Use this attribute to define a custom renderer to override the behavior of the
-     * default renderer defined for the Web application. By default, the predefined
-     * NetUI implementation, {@link TreeRenderer}, is defined as the renderer to use
-     * across the Web application. The class must extend the NetUI implementation,
-     * {@link TreeRenderer}.
-     * <p>Note that NetUI may be configured to use a different tree renderer
-     * implementation as the default renderer in the Web application. The Web application
-     * default tree renderer is configured by setting the &lt;tree-renderer-class>
-     * element in the beehive-netui-config file to the name of a class that extends
-     * {@link org.apache.beehive.netui.tags.tree.TreeRenderer}.
-     * </p>
-     * <p>&lt;tree-renderer-class>com.xyz.tree.CustomTreeRenderer&lt;/tree-renderer-class>
-     * </p>
-     * <p>Setting this attribute will always override the configured NetUI default
-     * tree renderer.
-     * </p>
-     * @param treeRendererClassName the name of the TreeRenderer class to use to render the tree.
-     * @jsptagref.attributedescription The name of the TreeRenderer class to use to render the tree.
-     * @jsptagref.databindable false
-     * @jsptagref.attributesyntaxvalue <i>string_treeRendererClassName</i>
-     * @netui:attribute required="false" rtexprvalue="true"
-     * description="Sets the name of the TreeRenderer class to use to render the tree."
-     */
-    public void setTreeRenderer(String treeRendererClassName)
-    {
-        _trs.treeRendererClassName = setNonEmptyValueAttribute(treeRendererClassName);
-    }
-
-    /**
      * Prepare the Tree for rendering.
      * @throws JspException if a JSP exception has occurred
      */
@@ -926,10 +896,7 @@
 
         // Render the tree.
         AttributeRenderer extraAttrs = new AttributeRenderer();
-        String treeRendererClassName = _trs.treeRendererClassName;
-        if (treeRendererClassName == null) {
-            treeRendererClassName = TagConfig.getTreeRendererClassName();
-        }
+        String treeRendererClassName = TagConfig.getTreeRendererClassName();
         TreeRenderer tr = TreeRendererFactory.getInstance(treeRendererClassName);
         if (tr == null) {
             tr = new TreeRenderer();

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java Thu Nov 17 15:56:00 2005
@@ -143,10 +143,7 @@
                 }
 
                 TreeRenderState trs = root.getTreeRenderState();
-                String treeRendererClassName = trs.treeRendererClassName;
-                if (treeRendererClassName == null) {
-                    treeRendererClassName = TagConfig.getTreeRendererClassName();
-                }
+                String treeRendererClassName = TagConfig.getTreeRendererClassName();
                 TreeRenderer tr = TreeRendererFactory.getInstance(treeRendererClassName);
                 if (tr == null) {
                     tr = new TreeRenderer();

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderState.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderState.java?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderState.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderState.java Thu Nov 17 15:56:00 2005
@@ -30,6 +30,4 @@
 
     public boolean runAtClient;
     public boolean escapeContent = false;  // esapce the content of labels
-
-    public String treeRendererClassName;  // name of the TreeRenderer class to use for rendering
 }

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderer.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderer.java?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderer.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeRenderer.java Thu Nov 17 15:56:00 2005
@@ -48,6 +48,9 @@
     protected static final String FORMAT_INDENT = "      ";
     protected static final String FORMAT_NBSP = "&nbsp;";
     protected static final String FORMAT_NEWLINE = "\n";
+    protected static final String FORMAT_SHORT_INDENT = "   ";
+    protected static final String FORMAT_NEWLINE_INDENT = FORMAT_NEWLINE + FORMAT_INDENT;
+    protected static final String FORMAT_NEWLINE_SHORT_INDENT = FORMAT_NEWLINE + FORMAT_SHORT_INDENT;
 
     private TagRenderingBase _imageRenderer;
     private TagRenderingBase _anchorRenderer;
@@ -152,10 +155,10 @@
         if (_trs.runAtClient) {
             _divState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, TreeElement.TREE_LEVEL, Integer.toString(level));
         }
-        writer.append("   ");
+        renderStartDivPrefix(writer, node);
         renderBeforeNode(writer, node);
         _divRenderer.doStartTag(writer, _divState);
-        writer.append("\n");
+        renderStartDivSuffix(writer, node);
         if (script != null)
             writer.append(script);
 
@@ -216,9 +219,9 @@
         renderContent(writer, node);
 
         // render the end of this node
-        writer.append("\n   ");
+        renderEndDivPrefix(writer, node);
         _divRenderer.doEndTag(writer);
-        writer.append("\n");
+        renderEndDivPrefix(writer, node);
         renderAfterNode(writer, node);
 
         // now remove all of the attributes scoped with this...
@@ -883,8 +886,7 @@
      */
     protected void renderContentPrefix(AbstractRenderAppender writer, TreeElement node)
     {
-        writer.append(FORMAT_NEWLINE);
-        writer.append(FORMAT_INDENT);
+        writer.append(FORMAT_NEWLINE_INDENT);
     }
 
     /**
@@ -894,5 +896,45 @@
      */
     protected void renderContentSuffix(AbstractRenderAppender writer, TreeElement node)
     {
+    }
+
+    /**
+     * Render the indent formatting of the start div tag used before the node markup.
+     * @param writer the appender where the tree markup is appended
+     * @param node the node to render
+     */
+    protected void renderStartDivPrefix(AbstractRenderAppender writer, TreeElement node)
+    {
+        writer.append(FORMAT_SHORT_INDENT);
+    }
+
+    /**
+     * Render the formatting after the start div tag and before the node markup.
+     * @param writer the appender where the tree markup is appended
+     * @param node the node to render
+     */
+    protected void renderStartDivSuffix(AbstractRenderAppender writer, TreeElement node)
+    {
+        writer.append(FORMAT_NEWLINE);
+    }
+
+    /**
+     * Render the indent formatting of the end div tag used after the node markup.
+     * @param writer the appender where the tree markup is appended
+     * @param node the node to render
+     */
+    protected void renderEndDivPrefix(AbstractRenderAppender writer, TreeElement node)
+    {
+        writer.append(FORMAT_NEWLINE_SHORT_INDENT);
+    }
+
+    /**
+     * Render the formatting after the end div tag that follows the node markup.
+     * @param writer the appender where the tree markup is appended
+     * @param node the node to render
+     */
+    protected void renderEndDivSuffix(AbstractRenderAppender writer, TreeElement node)
+    {
+        writer.append(FORMAT_NEWLINE);
     }
 }

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Thu Nov 17 15:56:00 2005
@@ -8170,21 +8170,6 @@
          </features>
       </test>
       <test>
-         <name>TreeRenderer</name>
-         <description>Use a custom TreeRenderer</description>
-         <webapp>coreWeb</webapp>
-         <categories>
-            <category>bvt</category>
-            <category>bvt.struts11</category>
-            <category>trees</category>
-         </categories>
-         <features>
-            <feature>Tree</feature>
-            <feature>expandOnServer</feature>
-            <feature>runAtClient</feature>
-         </features>
-      </test>
-      <test>
          <name>TreeTitle</name>
          <description>The treeItem title attribute is placed on the selection action anchor.</description>
          <webapp>coreWeb</webapp>

Modified: beehive/trunk/netui/test/webapps/drt/web/tree/renderer/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/tree/renderer/index.jsp?rev=345369&r1=345368&r2=345369&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/tree/renderer/index.jsp (original)
+++ beehive/trunk/netui/test/webapps/drt/web/tree/renderer/index.jsp Thu Nov 17 15:56:00 2005
@@ -10,6 +10,17 @@
         of the dynamic tree are created during the onExpand method
         while the children of the other tree are declared in the JSP.
     </p>
+    <p>
+        This is just a manual test. To run the test, edit the NetUI config
+        file, beehive-netui-config.xml, and the following new element 
+        &lt;tree-renderer-class&gt; within the 
+        &lt;jsp-tag-config&gt;...&lt;/jsp-tag-config&gt; section.
+        It should have the Java class name of the custom TreeRenderer you
+        want to test. For example, with the implementation in this test, use...
+    </p>
+    <code>&lt;tree-renderer-class&gt;tree.renderer.TestTreeRenderer&lt;/tree-renderer-class&gt;
+
+    <br>
     <netui:anchor action="reset">Reset</netui:anchor>
 
     <hr>
@@ -19,7 +30,7 @@
         <p>Dynamic Tree</p>
         <netui:scriptContainer>
             <netui:scriptHeader/>
-            <netui:tree treeRenderer="tree.renderer.TestTreeRenderer"
+            <netui:tree 
                 dataSource="pageFlow.root" escapeForHtml="true"
                 selectionAction="select" tagId="dynTree" runAtClient="true"
                 selectedStyle="background-color: #FFD185; font-color: #FFFFFF;"/>
@@ -29,7 +40,7 @@
         <td valign="top" width="50%">
         <p>JSP Tree</p>
         <netui:scriptContainer>
-        <netui:tree treeRenderer="tree.renderer.TestTreeRenderer"
+        <netui:tree 
                 dataSource="pageFlow.myJspTree" selectionAction="postback"
                 runAtClient="true" tagId="jspTree" >
             <netui:treeItem><netui:treeLabel>TreeItem0</netui:treeLabel>