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>&nbsp;
+       <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">&nbsp;<img
 src="/coreWeb/resources/images/folder_16_pad.gif" 
style="vertical-align:middle" border="0" alt="Tree 
Node">&nbsp;Item-PageOne&nbsp;</a>
+      <a 
href="/coreWeb/idmap/tree/select.do?netui_treeselected=0&netui_treeid=n0.tree">&nbsp;<img
 src="/coreWeb/resources/images/folder_16_pad.gif" 
style="vertical-align:middle" border="0" alt="Tree 
Node">&nbsp;Item-PageOne&nbsp;</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>

Reply via email to