Author: dolander Date: Tue Jan 25 21:11:29 2005 New Revision: 126465 URL: http://svn.apache.org/viewcvs?view=rev&rev=126465 Log: Partial fix for a nasty bug where mutliple script containers are writting over each other. I've fixed the bug I found, but there is a generalization of that bug that needs to be fixed.
Fixed another bug (Jiri 192) where two trees inside script container, but having the same tagId interfer with each other. Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/Controller.jpf incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/index.jsp Modified: incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml Modified: incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js?view=diff&rev=126465&p1=incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js&r1=126464&p2=incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js&r2=126465 ============================================================================== --- incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js (original) +++ incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js Tue Jan 25 21:11:29 2005 @@ -30,8 +30,9 @@ for (var i=0;i<document.links.length;i++) { var attr = document.links[i].getAttribute("netui-tree-anchor"); if (attr != null) { - document.links[i].onclick = NetUICollapseTree; + document.links[i].onclick = NetUICollapseTree; if (attr == "collapse") { + alert("set collapse"); NetUICollapseTreeNode(document.links[i],false); } } @@ -184,7 +185,7 @@ var treeName = netUI.netUITree.getTreeName(node); var nodeName = node.getAttribute("netui-tree-id"); var url = netUI.netUITree.getTreeCommandUrl("treeCollapse",treeName,nodeName); - netUI.raiseCommand(url); + netUI.raiseCommand(url,NetUITreeXmlHttpRequestReturn); } var children = node.childNodes; Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java?view=diff&rev=126465&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java&r1=126464&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java&r2=126465 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ScriptContainer.java Tue Jan 25 21:11:29 2005 @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; +import javax.servlet.jsp.tagext.SimpleTagSupport; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -186,6 +187,12 @@ */ public void addInitMethod(String varClass) { + IScriptReporter sr = getParentScriptReporter(); + if (sr != null) { + sr.addInitMethod(varClass); + return; + } + assert (varClass != null) : "The parameter 'varClass' must not be null"; if (_initNames == null) { _initNames = new HashMap<String,String>(); @@ -222,6 +229,11 @@ */ public void writeInitScript(AbstractRenderAppender sb) { + IScriptReporter sr = getParentScriptReporter(); + if (sr != null) { + return; + } + defineNetUIScope(sb); _writeInitScript = true; } @@ -331,7 +343,6 @@ public int doEndTag() throws JspException { - // Add the code to support the JavaScript framework addInitCode(); @@ -552,6 +563,14 @@ } /////////////////////////////////// Local Release //////////////////////////////////// + private IScriptReporter getParentScriptReporter() + { + Tag parent = getParent(); + if (parent == null) + return null; + IScriptReporter sr = (IScriptReporter) SimpleTagSupport.findAncestorWithClass(parent, IScriptReporter.class); + return sr; + } /** * Release any acquired resources. Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java?view=diff&rev=126465&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r1=126464&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r2=126465 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java Tue Jan 25 21:11:29 2005 @@ -656,7 +656,10 @@ // this is the treeId from the request. If there was an tree expansion this will be // non-null and it identifies what tree had the expansion request. + // we need to qualify the tree based upon the tagId assert(_tagId != null); + _tagId = getIdForTagId(_tagId); + String treeId = request.getParameter(TreeElement.TREE_ID); if (treeId != null && _tagId.equals(treeId)) { TreeHelpers.processTreeRequest(treeId, treeRoot, request); @@ -682,7 +685,7 @@ _divState.style = _treeStyle; String divId = null; if (_outputJavaScript) { - _divState.id = getIdForTagId(_tagId); + _divState.id = _tagId; divId = _divState.id; } Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/Controller.jpf Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/Controller.jpf?view=auto&rev=126465 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/Controller.jpf Tue Jan 25 21:11:29 2005 @@ -0,0 +1,76 @@ +package idmap.treeNested; + +import javax.servlet.http.HttpSession; +import org.apache.beehive.netui.pageflow.FormData; +import org.apache.beehive.netui.pageflow.PageFlowController; +import org.apache.beehive.netui.pageflow.Forward; +import org.apache.beehive.netui.pageflow.annotations.Jpf; +import org.apache.beehive.netui.tags.tree.TreeElement; + +/** + * This is the default controller for a blank web application. + */ [EMAIL PROTECTED] +public class Controller extends PageFlowController +{ + TreeElement _tree = null; + public TreeElement getTree() { + return _tree; + } + public void setTree(TreeElement t) { + _tree = t; + } + + TreeElement _tree2 = null; + public TreeElement getTreeTwo() { + return _tree2; + } + public void setTreeTwo(TreeElement t) { + _tree2 = t; + } + + @Jpf.Action( + forwards={ + @Jpf.Forward(name="index", path="index.jsp") + } + ) + protected Forward begin() + { + return new Forward("index"); + } + + @Jpf.Action( + forwards={ + @Jpf.Forward(name="success", navigateTo= Jpf.NavigateTo.currentPage) + } + ) + protected Forward clearTree() + { + _tree = null; + return new Forward("success"); + } + + @Jpf.Action( + forwards={ + @Jpf.Forward(name="success", navigateTo= Jpf.NavigateTo.currentPage) + } + ) + protected Forward select() + { + return new Forward("success"); + } + + /** + * Callback that is invoked when this controller instance is created. + */ + protected void onCreate() + { + } + + /** + * Callback that is invoked when this controller instance is destroyed. + */ + protected void onDestroy(HttpSession session) + { + } +} Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/index.jsp Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/index.jsp?view=auto&rev=126465 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/idmap/treeNested/index.jsp Tue Jan 25 21:11:29 2005 @@ -0,0 +1,65 @@ +<%@ page language="java" contentType="text/html;charset=UTF-8"%> +<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%> + +<netui:html generateIdScope="true" runAtClient="true"> + <head> + <netui:base/> + </head> + <netui:body> + <h4>Nested Tree with RunAtClient Tree</h4> + <p style="color: green">This test sets the TagId on both a tree and an + item within it then accesses those nodes through the JavaScript lookup + methods. + </p> + <netui:anchor action="clearTree">Clear Tree</netui:anchor> + <hr> + <table width="100%"><tr><td width="50%" valign="top"> + <netui:scriptContainer generateIdScope="true" runAtClient="true"> + <netui:scriptHeader treeSupport='true'/> + <span id="scopeOneSpan" /> + <netui:tree dataSource="pageFlow.tree" selectionAction="select" tagId="tree" + selectionStyle="color:red" unselectStyle="color:blue" + renderJavaScript="true" runAtClient="true"> + <netui:treeItem expanded="true" tagId="item1"> + <netui:treeLabel>Item-PageOne</netui:treeLabel> + <netui:treeItem expanded="true" tagId="item2">Item-PageTwo</netui:treeItem> + <netui:treeItem expanded="true" tagId="item3">Item-PageThree</netui:treeItem> + </netui:treeItem> + </netui:tree> + </netui:scriptContainer> + </td><td> + <netui:scriptContainer generateIdScope="true" runAtClient="true"> + <span id="scopeTwoSpan" /> + <netui:tree dataSource="pageFlow.treeTwo" selectionAction="select" tagId="tree" + selectionStyle="color:red" unselectStyle="color:blue" + renderJavaScript="true"> + <netui:treeItem expanded="true" tagId="item1"> + <netui:treeLabel>Item-PageOne</netui:treeLabel> + <netui:treeItem expanded="true" tagId="item2">Item-PageTwo</netui:treeItem> + <netui:treeItem expanded="true" tagId="item3">Item-PageThree</netui:treeItem> + </netui:treeItem> + </netui:tree> + </netui:scriptContainer> + </td></tr></table> + <hr> + <p style="color: green">Below we access the tree and item using the + lookup method. + </p> + <p id="javaOut"></p> +<netui:scriptBlock placement="after"> + + var p = document.getElementById("javaOut"); + var s = document.getElementById("scopeOneSpan"); + + var val = "<b>Document Access</b><br>"; + val = val + "Tree by id is null: <b>" + + (document.getElementById(lookupIdByTagId("tree",s)) == null) + "</b><br>"; + val = val + "Item by id is null: <b>" + + (document.getElementById(lookupIdByTagId("item",s)) == null) + "</b><br>"; + + p.innerHTML = val; +</netui:scriptBlock> +</netui:body> +</netui:html> + + \ No newline at end of file Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml?view=diff&rev=126465&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml&r1=126464&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml&r2=126465 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/IdMapTree.xml Tue Jan 25 21:11:29 2005 @@ -2,7 +2,7 @@ <ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session"> <ses:sessionName>IdMapTree</ses:sessionName> <ses:tester>Daryl</ses:tester> - <ses:startDate>21 Jan 2005, 10:15:19.508 AM MST</ses:startDate> + <ses:startDate>25 Jan 2005, 09:52:20.906 PM MST</ses:startDate> <ses:description>Daryl</ses:description> <ses:tests> <ses:test> @@ -18,7 +18,7 @@ <ses:cookies> <ses:cookie> <ses:name>JSESSIONID</ses:name> - <ses:value>85DC4413DFEAD4943F15035A7C24BC46</ses:value> + <ses:value>FF346D3FB52BCB120AFA20897AFE9DD8</ses:value> </ses:cookie> </ses:cookies> <ses:headers> @@ -44,7 +44,7 @@ </ses:header> <ses:header> <ses:name>cookie</ses:name> - <ses:value>$Version=0; JSESSIONID=85DC4413DFEAD4943F15035A7C24BC46; $Path=/coreWeb</ses:value> + <ses:value>$Version=0; JSESSIONID=FF346D3FB52BCB120AFA20897AFE9DD8; $Path=/coreWeb</ses:value> </ses:header> <ses:header> <ses:name>host</ses:name> @@ -56,7 +56,7 @@ </ses:header> <ses:header> <ses:name>testrecorder.playback.testid</ses:name> - <ses:value>e27e6fa:10196412f8c:-7cb5</ses:value> + <ses:value>4de389f5:101ad56b82f:-7c7a</ses:value> </ses:header> <ses:header> <ses:name>user-agent</ses:name> @@ -86,7 +86,7 @@ <div id="n0.tree"> <div id="n0.item"> <img src="/coreWeb/resources/images/linelastnode.gif" style="vertical-align:middle;" border="0" alt=""> - <a href="/coreWeb/idmap/tree/select.do?netui_treeselected=0&netui_treeid=tree"> <img src="/coreWeb/resources/images/folder_16_pad.gif" style="vertical-align:middle" border="0" alt="Tree Node"> Item-PageOne </a> + <a href="/coreWeb/idmap/tree/select.do?netui_treeselected=0&netui_treeid=n0.tree"> <img src="/coreWeb/resources/images/folder_16_pad.gif" style="vertical-align:middle" border="0" alt="Tree Node"> Item-PageOne </a> </div> </div> @@ -147,7 +147,7 @@ </ses:testResults> </ses:test> </ses:tests> - <ses:endDate>21 Jan 2005, 10:15:20.139 AM MST</ses:endDate> + <ses:endDate>25 Jan 2005, 09:52:22.359 PM MST</ses:endDate> <ses:sessionStatus>fail</ses:sessionStatus> <ses:testCount>1</ses:testCount> <ses:passedCount>0</ses:passedCount>
