Author: tmjee Date: Sat May 20 09:11:06 2006 New Revision: 408016 URL: http://svn.apache.org/viewvc?rev=408016&view=rev Log: WW-1316
Added: struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css (with props) struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java (with props) struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java (with props) struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt (with props) struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt (with props) Modified: struts/action2/trunk/core/src/main/java/org/apache/struts/action2/components/Tree.java struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeNodeTag.java struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeTag.java struts/action2/trunk/core/src/main/resources/META-INF/taglib.tld struts/action2/trunk/core/src/main/resources/template/ajax/tree.ftl struts/action2/trunk/core/src/main/resources/template/ajax/treenode.ftl Modified: struts/action2/trunk/core/src/main/java/org/apache/struts/action2/components/Tree.java URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/java/org/apache/struts/action2/components/Tree.java?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/java/org/apache/struts/action2/components/Tree.java (original) +++ struts/action2/trunk/core/src/main/java/org/apache/struts/action2/components/Tree.java Sat May 20 09:11:06 2006 @@ -25,17 +25,34 @@ * description="Render a tree widget." */ public class Tree extends ClosingUIBean { - private static final String TEMPLATE = "tree-close"; + + private static final String TEMPLATE = "tree-close"; private static final String OPEN_TEMPLATE = "tree"; + private String toggle = "fade"; private String treeSelectedTopic; private String treeExpandedTopic; private String treeCollapsedTopic; - private String openAll; protected String rootNodeAttr; protected String childCollectionProperty; protected String nodeTitleProperty; protected String nodeIdProperty; + private String showRootGrid; + + private String showGrid; + private String blankIconSrc; + private String gridIconSrcL; + private String gridIconSrcV; + private String gridIconSrcP; + private String gridIconSrcC; + private String gridIconSrcX; + private String gridIconSrcY; + private String expandIconSrcPlus; + private String expandIconSrcMinus; + private String iconWidth; + private String iconHeight; + private String toggleDuration; + private String templateCssPath; public Tree(OgnlValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -75,8 +92,6 @@ addParameter("treeCollapsedTopic", findString(treeCollapsedTopic)); } - addParameter("openAll", Boolean.valueOf(openAll)); - if (rootNodeAttr != null) { addParameter("rootNode", findValue(rootNodeAttr)); } @@ -92,6 +107,64 @@ if (nodeIdProperty != null) { addParameter("nodeIdProperty", findString(nodeIdProperty)); } + + if (showRootGrid != null) { + addParameter("showRootGrid", findValue(showRootGrid, Boolean.class)); + } + + + if (showGrid != null) { + addParameter("showGrid", findValue(showGrid, Boolean.class)); + } + + if (blankIconSrc != null) { + addParameter("blankIconSrc", findString(blankIconSrc)); + } + + if (gridIconSrcL != null) { + addParameter("gridIconSrcL", findString(gridIconSrcL)); + } + + if (gridIconSrcV != null) { + addParameter("gridIconSrcV", findString(gridIconSrcV)); + } + + if (gridIconSrcP != null) { + addParameter("gridIconSrcP", findString(gridIconSrcP)); + } + + if (gridIconSrcC != null) { + addParameter("gridIconSrcC", findString(gridIconSrcC)); + } + + if (gridIconSrcX != null) { + addParameter("gridIconSrcX", findString(gridIconSrcX)); + } + + if (gridIconSrcY != null) { + addParameter("gridIconSrcY", findString(gridIconSrcY)); + } + + if (expandIconSrcPlus != null) { + addParameter("expandIconSrcPlus", findString(expandIconSrcPlus)); + } + + if (expandIconSrcMinus != null) { + addParameter("expandIconSrcMinus", findString(expandIconSrcMinus)); + } + + if (iconWidth != null) { + addParameter("iconWidth", findValue(iconWidth, Integer.class)); + } + if (iconHeight != null) { + addParameter("iconHeight", findValue(iconHeight, Integer.class)); + } + if (toggleDuration != null) { + addParameter("toggleDuration", findValue(toggleDuration, Integer.class)); + } + if (templateCssPath != null) { + addParameter("templateCssPath", findString(templateCssPath)); + } } public String getDefaultOpenTemplate() { @@ -107,7 +180,7 @@ } /** - * The toggle property. + * The toggle property (either 'explode' or 'fade'). Default is 'fade'. * @a2.tagattribute required="false" */ public void setToggle(String toggle) { @@ -150,18 +223,6 @@ this.treeCollapsedTopic = treeCollapsedTopic; } - public String getOpenAll() { - return openAll; - } - - /** - * The openAll property. - * @a2.tagattribute required="false" type="boolean" default="false" - */ - public void setOpenAll(String openAll) { - this.openAll = openAll; - } - public String getRootNode() { return rootNodeAttr; } @@ -209,7 +270,189 @@ public void setNodeIdProperty(String nodeIdProperty) { this.nodeIdProperty = nodeIdProperty; } - - + + /** + * The showRootGrid property (default true). + * @a2.tagattribute required="false" + */ + public void setShowRootGrid(String showRootGrid) { + this.showRootGrid = showRootGrid; + } + + public String getShowRootGrid() { + return showRootGrid; + } + + public String getBlankIconSrc() { + return blankIconSrc; + } + + /** + * Blank icon image source. + * @a2.tagattribute required="false" + */ + public void setBlankIconSrc(String blankIconSrc) { + this.blankIconSrc = blankIconSrc; + } + + public String getExpandIconSrcMinus() { + return expandIconSrcMinus; + } + + /** + * Expand icon (-) image source. + * @a2.tagattribute required="false" + */ + public void setExpandIconSrcMinus(String expandIconSrcMinus) { + this.expandIconSrcMinus = expandIconSrcMinus; + } + + public String getExpandIconSrcPlus() { + return expandIconSrcPlus; + } + + /** + * Expand Icon (+) image source. + * @a2.tagattribute required="false" + */ + public void setExpandIconSrcPlus(String expandIconSrcPlus) { + this.expandIconSrcPlus = expandIconSrcPlus; + } + + public String getGridIconSrcC() { + return gridIconSrcC; + } + + /** + * Image source for under child item child icons. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcC(String gridIconSrcC) { + this.gridIconSrcC = gridIconSrcC; + } + + public String getGridIconSrcL() { + return gridIconSrcL; + } + + + /** + * Image source for last child grid. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcL(String gridIconSrcL) { + this.gridIconSrcL = gridIconSrcL; + } + + public String getGridIconSrcP() { + return gridIconSrcP; + } + + /** + * Image source for under parent item child icons. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcP(String gridIconSrcP) { + this.gridIconSrcP = gridIconSrcP; + } + + public String getGridIconSrcV() { + return gridIconSrcV; + } + + /** + * Image source for vertical line. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcV(String gridIconSrcV) { + this.gridIconSrcV = gridIconSrcV; + } + + public String getGridIconSrcX() { + return gridIconSrcX; + } + + /** + * Image source for grid for sole root item. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcX(String gridIconSrcX) { + this.gridIconSrcX = gridIconSrcX; + } + + public String getGridIconSrcY() { + return gridIconSrcY; + } + + /** + * Image source for grid for last root item. + * @a2.tagattribute required="false" + */ + public void setGridIconSrcY(String gridIconSrcY) { + this.gridIconSrcY = gridIconSrcY; + } + + public String getIconHeight() { + return iconHeight; + } + + + /** + * Icon height (default 18 pixels). + * @a2.tagattribute required="false" + */ + public void setIconHeight(String iconHeight) { + this.iconHeight = iconHeight; + } + + public String getIconWidth() { + return iconWidth; + } + + /** + * Icon width (default 19 pixels). + * @a2.tagattribute required="false" + */ + public void setIconWidth(String iconWidth) { + this.iconWidth = iconWidth; + } + + + + public String getTemplateCssPath() { + return templateCssPath; + } + + /** + * Template css path (default {contextPath}/struts/tree.css. + * @a2.tagattribute required="false" + */ + public void setTemplateCssPath(String templateCssPath) { + this.templateCssPath = templateCssPath; + } + + public String getToggleDuration() { + return toggleDuration; + } + + /** + * Toggle duration (default 150 ms) + * @a2.tagattribute required="false" + */ + public void setToggleDuration(String toggleDuration) { + this.toggleDuration = toggleDuration; + } + + public String getShowGrid() { + return showGrid; + } + + /** + * Show grid (default true). + * @a2.tagattribute required="false" + */ + public void setShowGrid(String showGrid) { + this.showGrid = showGrid; + } } Modified: struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeNodeTag.java URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeNodeTag.java?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeNodeTag.java (original) +++ struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeNodeTag.java Sat May 20 09:11:06 2006 @@ -31,7 +31,6 @@ private static final long serialVersionUID = 7340746943017900803L; - private String label; public Component getBean(OgnlValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new TreeNode(stack,req,res); @@ -41,11 +40,11 @@ this.label = label; } - protected void populateParams() { + /*protected void populateParams() { if (label != null) { TreeNode treeNode = (TreeNode)component; treeNode.setLabel(label); } super.populateParams(); - } + }*/ } Modified: struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeTag.java URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeTag.java?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeTag.java (original) +++ struts/action2/trunk/core/src/main/java/org/apache/struts/action2/views/jsp/ui/TreeTag.java Sat May 20 09:11:06 2006 @@ -34,15 +34,30 @@ private String toggle; private String treeSelectedTopic; private String treeExpandedTopic; - private String treeCollapsedTopic; - private String openAll; + private String treeCollapsedTopic; private String rootNode; private String childCollectionProperty; private String nodeTitleProperty; private String nodeIdProperty; + private String showRootGrid; + + private String showGrid; + private String blankIconSrc; + private String gridIconSrcL; + private String gridIconSrcV; + private String gridIconSrcP; + private String gridIconSrcC; + private String gridIconSrcX; + private String gridIconSrcY; + private String expandIconSrcPlus; + private String expandIconSrcMinus; + private String iconWidth; + private String iconHeight; + private String toggleDuration; + private String templateCssPath; + - - public Component getBean(OgnlValueStack stack, HttpServletRequest req, HttpServletResponse res) { + public Component getBean(OgnlValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Tree(stack,req,res); } @@ -50,15 +65,53 @@ super.populateParams(); Tree tree = (Tree) component; - tree.setChildCollectionProperty(childCollectionProperty); - tree.setNodeIdProperty(nodeIdProperty); - tree.setNodeTitleProperty(nodeTitleProperty); - tree.setOpenAll(openAll); - tree.setRootNode(rootNode); - tree.setToggle(toggle); - tree.setTreeCollapsedTopic(treeCollapsedTopic); - tree.setTreeExpandedTopic(treeExpandedTopic); - tree.setTreeSelectedTopic(treeSelectedTopic); + if (childCollectionProperty != null) + tree.setChildCollectionProperty(childCollectionProperty); + if (nodeIdProperty != null) + tree.setNodeIdProperty(nodeIdProperty); + if (nodeTitleProperty != null) + tree.setNodeTitleProperty(nodeTitleProperty); + if (rootNode != null) + tree.setRootNode(rootNode); + if (toggle != null) + tree.setToggle(toggle); + if (treeCollapsedTopic != null) + tree.setTreeCollapsedTopic(treeCollapsedTopic); + if (treeExpandedTopic != null) + tree.setTreeExpandedTopic(treeExpandedTopic); + if (treeSelectedTopic != null) + tree.setTreeSelectedTopic(treeSelectedTopic); + if (showRootGrid != null) + tree.setShowRootGrid(showRootGrid); + + if (showGrid != null) + tree.setShowGrid(showGrid); + if (blankIconSrc != null) + tree.setBlankIconSrc(blankIconSrc); + if (gridIconSrcL != null) + tree.setGridIconSrcL(gridIconSrcC); + if (gridIconSrcV != null) + tree.setGridIconSrcV(gridIconSrcV); + if (gridIconSrcP != null) + tree.setGridIconSrcP(gridIconSrcP); + if (gridIconSrcC != null) + tree.setGridIconSrcC(gridIconSrcC); + if (gridIconSrcX != null) + tree.setGridIconSrcX(gridIconSrcX); + if (gridIconSrcY != null) + tree.setGridIconSrcY(gridIconSrcY); + if (expandIconSrcPlus != null) + tree.setExpandIconSrcPlus(expandIconSrcPlus); + if (expandIconSrcMinus != null) + tree.setExpandIconSrcMinus(expandIconSrcMinus); + if (iconWidth != null) + tree.setIconWidth(iconWidth); + if (iconHeight != null) + tree.setIconHeight(iconHeight); + if (toggleDuration != null) + tree.setToggleDuration(toggleDuration); + if (templateCssPath != null) + tree.setTemplateCssPath(templateCssPath); } public String getToggle() { @@ -93,14 +146,6 @@ this.treeCollapsedTopic = treeCollapsedTopic; } - public String getOpenAll() { - return openAll; - } - - public void setOpenAll(String openAll) { - this.openAll = openAll; - } - public String getRootNode() { return rootNode; } @@ -132,5 +177,125 @@ public void setNodeIdProperty(String nodeIdProperty) { this.nodeIdProperty = nodeIdProperty; } + + public String getShowRootGrid() { + return showRootGrid; + } + + public void setShowRootGrid(String showRootGrid) { + this.showRootGrid = showRootGrid; + } + + public String getBlankIconSrc() { + return blankIconSrc; + } + + public void setBlankIconSrc(String blankIconSrc) { + this.blankIconSrc = blankIconSrc; + } + + public String getExpandIconSrcMinus() { + return expandIconSrcMinus; + } + + public void setExpandIconSrcMinus(String expandIconSrcMinus) { + this.expandIconSrcMinus = expandIconSrcMinus; + } + + public String getExpandIconSrcPlus() { + return expandIconSrcPlus; + } + + public void setExpandIconSrcPlus(String expandIconSrcPlus) { + this.expandIconSrcPlus = expandIconSrcPlus; + } + + public String getGridIconSrcC() { + return gridIconSrcC; + } + + public void setGridIconSrcC(String gridIconSrcC) { + this.gridIconSrcC = gridIconSrcC; + } + + public String getGridIconSrcL() { + return gridIconSrcL; + } + + public void setGridIconSrcL(String gridIconSrcL) { + this.gridIconSrcL = gridIconSrcL; + } + + public String getGridIconSrcP() { + return gridIconSrcP; + } + + public void setGridIconSrcP(String gridIconSrcP) { + this.gridIconSrcP = gridIconSrcP; + } + + public String getGridIconSrcV() { + return gridIconSrcV; + } + + public void setGridIconSrcV(String gridIconSrcV) { + this.gridIconSrcV = gridIconSrcV; + } + + public String getGridIconSrcX() { + return gridIconSrcX; + } + + public void setGridIconSrcX(String gridIconSrcX) { + this.gridIconSrcX = gridIconSrcX; + } + + public String getGridIconSrcY() { + return gridIconSrcY; + } + + public void setGridIconSrcY(String gridIconSrcY) { + this.gridIconSrcY = gridIconSrcY; + } + + public String getIconHeight() { + return iconHeight; + } + + public void setIconHeight(String iconHeight) { + this.iconHeight = iconHeight; + } + + public String getIconWidth() { + return iconWidth; + } + + public void setIconWidth(String iconWidth) { + this.iconWidth = iconWidth; + } + + public String getTemplateCssPath() { + return templateCssPath; + } + + public void setTemplateCssPath(String templateCssPath) { + this.templateCssPath = templateCssPath; + } + + public String getToggleDuration() { + return toggleDuration; + } + + public void setToggleDuration(String toggleDuration) { + this.toggleDuration = toggleDuration; + } + + public String getShowGrid() { + return showGrid; + } + + public void setShowGrid(String showGrid) { + this.showGrid = showGrid; + } } Modified: struts/action2/trunk/core/src/main/resources/META-INF/taglib.tld URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/resources/META-INF/taglib.tld?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/resources/META-INF/taglib.tld (original) +++ struts/action2/trunk/core/src/main/resources/META-INF/taglib.tld Sat May 20 09:11:06 2006 @@ -132,6 +132,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -477,6 +485,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1007,6 +1023,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1313,6 +1337,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1648,7 +1680,7 @@ <required>false</required> <rtexprvalue>true</rtexprvalue> - <description><![CDATA[The toggle property.]]></description> + <description><![CDATA[The toggle property (either 'explode' or 'fade'). Default is 'fade'.]]></description> </attribute> <attribute> @@ -1676,14 +1708,6 @@ </attribute> <attribute> - <name>openAll</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - - <description><![CDATA[The openAll property.]]></description> - - </attribute> - <attribute> <name>rootNode</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1716,6 +1740,126 @@ </attribute> <attribute> + <name>showRootGrid</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The showRootGrid property (default true).]]></description> + + </attribute> + <attribute> + <name>blankIconSrc</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Blank icon image source.]]></description> + + </attribute> + <attribute> + <name>expandIconSrcMinus</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Expand icon (-) image source.]]></description> + + </attribute> + <attribute> + <name>expandIconSrcPlus</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Expand Icon (+) image source.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcC</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for under child item child icons.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcL</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for last child grid.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcP</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for under parent item child icons.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcV</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for vertical line.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcX</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for grid for sole root item.]]></description> + + </attribute> + <attribute> + <name>gridIconSrcY</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Image source for grid for last root item.]]></description> + + </attribute> + <attribute> + <name>iconHeight</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Icon height (default 18 pixels).]]></description> + + </attribute> + <attribute> + <name>iconWidth</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Icon width (default 19 pixels).]]></description> + + </attribute> + <attribute> + <name>templateCssPath</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Template css path (default {contextPath}/struts/tree.css.]]></description> + + </attribute> + <attribute> + <name>toggleDuration</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Toggle duration (default 150 ms)]]></description> + + </attribute> + <attribute> + <name>showGrid</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[Show grid (default true).]]></description> + + </attribute> + <attribute> <name>openTemplate</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1724,6 +1868,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -2285,6 +2437,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -3006,6 +3166,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -3376,6 +3544,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -3845,6 +4021,14 @@ <description><![CDATA[Render a hidden input field]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -4102,6 +4286,14 @@ <description><![CDATA[Stop double-submission of forms]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -4359,6 +4551,14 @@ <description><![CDATA[Render field error (all or partial depending on param tag nested)if they exists]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -4641,6 +4841,14 @@ <description><![CDATA[Render action messages if they exists]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -4995,6 +5203,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>template</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -5334,6 +5550,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -5631,6 +5855,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -6304,6 +6536,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -6569,6 +6809,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -6923,6 +7171,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -7245,6 +7501,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -7518,6 +7782,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -7807,6 +8079,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -8064,6 +8344,14 @@ <description><![CDATA[Render action errors if they exists]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -8337,6 +8625,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -8675,6 +8971,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -8948,6 +9252,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -9205,6 +9517,14 @@ <description><![CDATA[Render debug tag]]></description> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -9494,6 +9814,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -9775,6 +10103,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -10104,6 +10440,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>template</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -10377,6 +10721,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -10698,6 +11050,14 @@ </attribute> <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> + + </attribute> + <attribute> <name>theme</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -11081,6 +11441,14 @@ <rtexprvalue>true</rtexprvalue> <description><![CDATA[Set template to use for opening the rendered html.]]></description> + + </attribute> + <attribute> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[The template directory.]]></description> </attribute> <attribute> Added: struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css?rev=408016&view=auto ============================================================================== --- struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css (added) +++ struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css Sat May 20 09:11:06 2006 @@ -0,0 +1,29 @@ +.dojoTree { + font: caption; + font-size: 11px; + font-weight: normal; + overflow: auto; +} + +.dojoTreeNodeLabel { + padding: 1px 2px; + color: WindowText; + cursor: default; +} + +.dojoTreeNodeLabel:hover { + text-decoration: underline; +} + +.dojoTreeNodeLabelSelected { + background-color: Highlight; + color: HighlightText; +} + +.dojoTree div { + white-space: nowrap; +} + +.dojoTree img { + vertical-align: middle; +} Propchange: struts/action2/trunk/core/src/main/resources/org/apache/struts/action2/static/tree.css ------------------------------------------------------------------------------ svn:eol-style = native Modified: struts/action2/trunk/core/src/main/resources/template/ajax/tree.ftl URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/resources/template/ajax/tree.ftl?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/resources/template/ajax/tree.ftl (original) +++ struts/action2/trunk/core/src/main/resources/template/ajax/tree.ftl Sat May 20 09:11:06 2006 @@ -6,8 +6,58 @@ // dojo.hostenv.writeIncludes(); --> </script> -<div dojoType="Tree" showRootGrid="false" templateCssPath="${base}/css/Tree.css" - <#if parameters.id?exists>id="${parameters.id?html}"</#if> +<div dojoType="Tree" + <#if parameters.blankIconSrc?exists> + gridIconSrcT="<@saf.url value='${parameters.blankIconSrc}' encode="false" />" + </#if> + <#if parameters.gridIconSrcL?exists> + gridIconSrcL="<@saf.url value='${parameters.gridIconSrcL}' encode="false" />" + </#if> + <#if parameters.gridIconSrcV?exists> + gridIconSrcV="<@saf.url value='${parameters.gridIconSrcV}' encode="false" />" + </#if> + <#if parameters.gridIconSrcP?exists> + gridIconSrcP="<@saf.url value='${parameters.gridIconSrcP}' encode="false" />" + </#if> + <#if parameters.gridIconSrcC?exists> + gridIconSrcC="<@saf.url value='${parameters.gridIconSrcC}' encode="false" />" + </#if> + <#if parameters.gridIconSrcX?exists> + gridIconSrcX="<@saf.url value='${parameters.gridIconSrcX}' encode="false" />" + </#if> + <#if parameters.gridIconSrcY?exists> + gridIconSrcY="<@saf.url value='${parameters.gridIconSrcY}' encode="false" />" + </#if> + <#if parameters.gridIconSrcZ?exists> + gridIconSrcZ="<@saf.url value='${parameters.gridIconSrcZ}' encode="false" />" + </#if> + <#if parameters.expandIconSrcPlus?exists> + expandIconSrcPlus="<@saf.url value='${parameters.expandIconSrcPlus}' />" + </#if> + <#if parameters.expandIconSrcMinus?exists> + expandIconSrcMinus="<@saf.url value='${parameters.expandIconSrcMinus?html}' />" + </#if> + <#if parameters.iconWidth?exists> + iconWidth="<@saf.url value='${parameters.iconWidth?html}' encode="false" />" + </#if> + <#if parameters.iconHeight?exists> + iconHeight="<@saf.url value='${parameters.iconHeight?html}' encode="false" />" + </#if> + <#if parameters.toggleDuration?exists> + toggleDuration=${parameters.toggleDuration?c} + </#if> + <#if parameters.templateCssPath?exists> + templateCssPath="<@saf.url value='${parameters.templateCssPath}' encode="false" />" + </#if> + <#if parameters.showGrid?exists> + showGrid="${parameters.showGrid?default(true)?string}" + </#if> + <#if parameters.showRootGrid?exists> + showRootGrid="${parameters.showRootGrid?default(true)?string}" + </#if> + <#if parameters.id?exists> + id="${parameters.id?html}" + </#if> <#if parameters.treeSelectedTopic?exists> publishSelectionTopic="${parameters.treeSelectedTopic?html}" </#if> @@ -18,14 +68,11 @@ publishCollapsedTopic="${parameters.treeCollapsedTopic?html}" </#if> <#if parameters.toggle?exists> - toggle="${parameters.toggle}" - </#if> - <#if parameters.openAll?exists> - openAll="${parameters.openAll?string}" + toggle="${parameters.toggle?html}" </#if> > <#if parameters.label?exists> - <div dojoType="TreeNode" title="${parameters.label?html}" + <div dojoType="TreeNode" id="${parameters.id}_root" title="${parameters.label?html}" <#if parameters.nodeIdProperty?exists> id="${stack.findValue(parameters.nodeIdProperty)}" </#if> Modified: struts/action2/trunk/core/src/main/resources/template/ajax/treenode.ftl URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/main/resources/template/ajax/treenode.ftl?rev=408016&r1=408015&r2=408016&view=diff ============================================================================== --- struts/action2/trunk/core/src/main/resources/template/ajax/treenode.ftl (original) +++ struts/action2/trunk/core/src/main/resources/template/ajax/treenode.ftl Sat May 20 09:11:06 2006 @@ -1,3 +1,6 @@ -<div dojoType="TreeNode" +<div dojoType="TreeNode" + <#if parameters.childIconSrc?exists> + childIconSrc="<@saf.url value='${parameters.childIconSrc}' encode="false" />" + </#if> <#if parameters.id?exists>id="${parameters.id?html}"</#if> - title="${parameters.label?html}"> + title="${parameters.label}"> Added: struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java?rev=408016&view=auto ============================================================================== --- struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java (added) +++ struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java Sat May 20 09:11:06 2006 @@ -0,0 +1,104 @@ +/* + * $Id: AbstractUITagTest.java 394477 2006-04-16 12:50:53Z tmjee $ + * + * 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.struts.action2.views.jsp.ui; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Used by Tree Component Test. Copied from showcase. + */ +public class Category { + private static Map<Long, Category> catMap = new HashMap<Long, Category>(); + + static { + new Category(1, "Root", + new Category(2, "Java", + new Category(3, "Web Frameworks", + new Category(4, "WebWork"), + new Category(5, "Struts Action"), + new Category(6, "Struts Shale"), + new Category(7, "Stripes"), + new Category(8, "Rife")), + new Category(9, "Persistence", + new Category(10, "iBatis"), + new Category(11, "Hibernate"), + new Category(12, "JDO"), + new Category(13, "JDBC"))), + new Category(14, "JavaScript", + new Category(15, "Dojo"), + new Category(16, "Prototype"), + new Category(17, "Scriptaculous"), + new Category(18, "OpenRico"), + new Category(19, "DWR"))); + } + + public static Category getById(long id) { + return catMap.get(id); + } + + private long id; + private String name; + private List<Category> children; + private boolean toggle; + + public Category(long id, String name, Category... children) { + this.id = id; + this.name = name; + this.children = new ArrayList<Category>(); + for (Category child : children) { + this.children.add(child); + } + + catMap.put(id, this); + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List<Category> getChildren() { + return children; + } + + public void setChildren(List<Category> children) { + this.children = children; + } + + public void toggle() { + toggle = !toggle; + } + + public boolean isToggle() { + return toggle; + } +} Propchange: struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/Category.java ------------------------------------------------------------------------------ svn:eol-style = native Added: struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java?rev=408016&view=auto ============================================================================== --- struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java (added) +++ struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java Sat May 20 09:11:06 2006 @@ -0,0 +1,133 @@ +/* + * $Id: AbstractUITagTest.java 394477 2006-04-16 12:50:53Z tmjee $ + * + * 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.struts.action2.views.jsp.ui; + +import org.apache.struts.action2.views.jsp.AbstractUITagTest; + +import com.opensymphony.xwork.Action; +import com.opensymphony.xwork.ActionSupport; + +/** + * Test case for Tree component. + */ +public class TreeTest extends AbstractUITagTest{ + + public void testStaticTree() throws Exception { + // Root + TreeTag tag = new TreeTag(); + tag.setShowRootGrid("false"); + tag.setShowGrid("false"); + tag.setTemplateCssPath("/struts/tree.css"); + tag.setTheme("ajax"); + tag.setPageContext(pageContext); + tag.setId("rootId"); + tag.setLabel("Root"); + tag.doStartTag(); + + // Child 1 + TreeNodeTag nodeTag1 = new TreeNodeTag(); + nodeTag1.setTheme("ajax"); + nodeTag1.setPageContext(pageContext); + nodeTag1.setId("child1"); + nodeTag1.setLabel("Child 1"); + nodeTag1.doStartTag(); + nodeTag1.doEndTag(); + + // Child 2 + TreeNodeTag nodeTag2 = new TreeNodeTag(); + nodeTag2.setTheme("ajax"); + nodeTag2.setPageContext(pageContext); + nodeTag2.setId("child2"); + nodeTag2.setLabel("Child 2"); + nodeTag2.doStartTag(); + + // Grand Child 1 + TreeNodeTag gNodeTag1 = new TreeNodeTag(); + gNodeTag1.setTheme("ajax"); + gNodeTag1.setPageContext(pageContext); + gNodeTag1.setId("gChild1"); + gNodeTag1.setLabel("Grand Child 1"); + gNodeTag1.doStartTag(); + gNodeTag1.doEndTag(); + + // Grand Child 2 + TreeNodeTag gNodeTag2 = new TreeNodeTag(); + gNodeTag2.setTheme("ajax"); + gNodeTag2.setPageContext(pageContext); + gNodeTag2.setId("gChild2"); + gNodeTag2.setLabel("Grand Child 2"); + gNodeTag2.doStartTag(); + gNodeTag2.doEndTag(); + + // Grand Child 3 + TreeNodeTag gNodeTag3= new TreeNodeTag(); + gNodeTag3.setTheme("ajax"); + gNodeTag3.setPageContext(pageContext); + gNodeTag3.setId("gChild3"); + gNodeTag3.setLabel("Grand Child 3"); + gNodeTag3.doStartTag(); + gNodeTag3.doEndTag(); + + nodeTag2.doEndTag(); + + + // Child 3 + TreeNodeTag nodeTag3 = new TreeNodeTag(); + nodeTag3.setTheme("ajax"); + nodeTag3.setPageContext(pageContext); + nodeTag3.setId("child3"); + nodeTag3.setLabel("Child 4"); + nodeTag3.doStartTag(); + nodeTag3.doEndTag(); + + tag.doEndTag(); + + //System.out.println(writer.toString()); + verify(TreeTest.class.getResource("tree-1.txt")); + } + + + + public void testDynamicTree() throws Exception { + + TreeTag tag = new TreeTag(); + tag.setPageContext(pageContext); + tag.setTheme("ajax"); + tag.setId("myTree"); + tag.setRootNode("%{myTreeRoot}"); + tag.setNodeIdProperty("id"); + tag.setNodeTitleProperty("name"); + tag.setChildCollectionProperty("children"); + tag.doStartTag(); + tag.doEndTag(); + + //System.out.println(writer.toString()); + verify(TreeTest.class.getResource("tree-2.txt")); + } + + + public Action getAction() { + return new InternalActionSupport(); + } + + public static class InternalActionSupport extends ActionSupport { + public Category getMyTreeRoot() { + return Category.getById(1); + } + } +} Propchange: struts/action2/trunk/core/src/test/java/org/apache/struts/action2/views/jsp/ui/TreeTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt?rev=408016&view=auto ============================================================================== --- struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt (added) +++ struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt Sat May 20 09:11:06 2006 @@ -0,0 +1,42 @@ +<script language="JavaScript" type="text/javascript"> + <!-- + dojo.require("dojo.lang.*"); + dojo.require("dojo.widget.*"); + dojo.require("dojo.widget.Tree"); + // dojo.hostenv.writeIncludes(); + --> + </script> +<div dojoType="Tree" + templateCssPath="/struts/tree.css" + showGrid="false" + showRootGrid="false" + id="rootId" + toggle="fade" + > + <div dojoType="TreeNode" id="rootId_root" title="Root" + > +<div dojoType="TreeNode" + id="child1" + title="Child 1"> +</div> +<div dojoType="TreeNode" + id="child2" + title="Child 2"> +<div dojoType="TreeNode" + id="gChild1" + title="Grand Child 1"> +</div> +<div dojoType="TreeNode" + id="gChild2" + title="Grand Child 2"> +</div> +<div dojoType="TreeNode" + id="gChild3" + title="Grand Child 3"> +</div> +</div> +<div dojoType="TreeNode" + id="child3" + title="Child 4"> +</div> +</div></div> \ No newline at end of file Propchange: struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-1.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt URL: http://svn.apache.org/viewvc/struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt?rev=408016&view=auto ============================================================================== --- struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt (added) +++ struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt Sat May 20 09:11:06 2006 @@ -0,0 +1,70 @@ +<script language="JavaScript" type="text/javascript"> + <!-- + dojo.require("dojo.lang.*"); + dojo.require("dojo.widget.*"); + dojo.require("dojo.widget.Tree"); + // dojo.hostenv.writeIncludes(); + --> + </script> +<div dojoType="Tree" + id="myTree" + toggle="fade" + > + +<div dojoType="TreeNode" title="Root" id="1"> + +<div dojoType="TreeNode" title="Java" id="2"> + +<div dojoType="TreeNode" title="Web Frameworks" id="3"> + +<div dojoType="TreeNode" title="WebWork" id="4"> +</div> + +<div dojoType="TreeNode" title="Struts Action" id="5"> +</div> + +<div dojoType="TreeNode" title="Struts Shale" id="6"> +</div> + +<div dojoType="TreeNode" title="Stripes" id="7"> +</div> + +<div dojoType="TreeNode" title="Rife" id="8"> +</div> +</div> + +<div dojoType="TreeNode" title="Persistence" id="9"> + +<div dojoType="TreeNode" title="iBatis" id="10"> +</div> + +<div dojoType="TreeNode" title="Hibernate" id="11"> +</div> + +<div dojoType="TreeNode" title="JDO" id="12"> +</div> + +<div dojoType="TreeNode" title="JDBC" id="13"> +</div> +</div> +</div> + +<div dojoType="TreeNode" title="JavaScript" id="14"> + +<div dojoType="TreeNode" title="Dojo" id="15"> +</div> + +<div dojoType="TreeNode" title="Prototype" id="16"> +</div> + +<div dojoType="TreeNode" title="Scriptaculous" id="17"> +</div> + +<div dojoType="TreeNode" title="OpenRico" id="18"> +</div> + +<div dojoType="TreeNode" title="DWR" id="19"> +</div> +</div> +</div> +</div> \ No newline at end of file Propchange: struts/action2/trunk/core/src/test/resources/org/apache/struts/action2/views/jsp/ui/tree-2.txt ------------------------------------------------------------------------------ svn:eol-style = native