You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2005/12/27 10:59:52 UTC

svn commit: r359197 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/ tobago-example/tobago-example-demo/src/main/webapp/overview/ tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/r...

Author: weber
Date: Tue Dec 27 01:59:30 2005
New Revision: 359197

URL: http://svn.apache.org/viewcvs?rev=359197&view=rev
Log:
make tree, treelistbox and date ajaxable

Modified:
    incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
    incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/treeControl.jsp
    incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DateRenderer.java
    incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxRenderer.java
    incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java
    incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script/tree.js

Modified: incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java (original)
+++ incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java Tue Dec 27 01:59:30 2005
@@ -2,10 +2,10 @@
 
 import org.apache.myfaces.tobago.component.ComponentUtil;
 
-import javax.faces.context.FacesContext;
+import javax.faces.application.ViewHandler;
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.render.Renderer;
-import javax.faces.application.ViewHandler;
 import java.io.IOException;
 import java.util.Iterator;
 
@@ -21,6 +21,19 @@
 
 
   public static void processAjax(FacesContext facesContext, UIComponent component) throws IOException {
+
+    component.processValidators(facesContext);
+
+    if (! facesContext.getRenderResponse()) {
+      component.processUpdates(facesContext);
+    }
+
+    // invokeApplication here ??
+
+    renderAjax(facesContext, component);
+  }
+
+  private static void renderAjax(FacesContext facesContext, UIComponent component) throws IOException {
     final Iterator facetsAndChildren = component.getFacetsAndChildren();
     while (facetsAndChildren.hasNext()) {
       UIComponent child = (UIComponent) facetsAndChildren.next();
@@ -28,13 +41,12 @@
         ((AjaxComponent)child).processAjax(facesContext);
       }
       else {
-        processAjax(facesContext, child);
+        renderAjax(facesContext, child);
       }
       if (facesContext.getResponseComplete()) {
         return;
       }
     }
-
   }
 
   public static void checkParamValidity(FacesContext facesContext, UIComponent uiComponent, Class compClass)

Modified: incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/treeControl.jsp
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/treeControl.jsp?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/treeControl.jsp (original)
+++ incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/treeControl.jsp Tue Dec 27 01:59:30 2005
@@ -30,12 +30,12 @@
       <%-- column --%>
 
       <tc:box label="#{overviewBundle.tree_sampleTitle}" >
+        <tc:tabGroup state="#{overviewController.treeTabsState}" serverside="true">
+          <tc:tab label="#{overviewBundle.treeLabel}">
         <f:facet name="layout">
           <tc:gridLayout columns="2*;1*" />
         </f:facet>
 
-        <tc:tabGroup state="#{overviewController.treeTabsState}" serverside="true">
-          <tc:tab label="#{overviewBundle.treeLabel}">
             <tc:tree value="#{demo.tree}" state="#{demo.treeState}" id="tree"
                 idReference="userObject.id"
                 nameReference="userObject.name"
@@ -48,53 +48,66 @@
                 >
               <f:actionListener type="org.apache.myfaces.tobago.example.demo.actionlistener.TreeEditor" />
             </tc:tree>
+
+            <tc:panel>
+              <f:facet name="layout">
+                <tc:gridLayout rows="fixed;fixed;fixed;fixed;1*;fixed;fixed;fixed" />
+              </f:facet>
+
+              <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowIcons}"
+                                        value="#{demo.showIcons}"
+                                        disabled="#{overviewController.treeTabsState != 0}"/>
+              <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowJunctions}"
+                                        value="#{demo.showJunctions}"
+                                        disabled="#{overviewController.treeTabsState != 0}"/>
+              <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowRootJunction}"
+                                        value="#{demo.showRootJunction}"
+                                        disabled="#{overviewController.treeTabsState != 0}"/>
+              <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowRoot}"
+                                        value="#{demo.showRoot}"
+                                        disabled="#{overviewController.treeTabsState != 0}"/>
+              <tc:cell />
+              <tc:selectOneChoice value="#{overviewController.treeSelectMode}">
+                <f:selectItems value="#{overviewController.treeSelectModeItems}" />
+              </tc:selectOneChoice>
+
+              <tc:selectBooleanCheckbox label="#{overviewBundle.treeMutable}"
+                                        value="#{demo.mutable}"
+                                        disabled="#{overviewController.treeTabsState != 0}"/>
+              <tc:button action="redisplay" label="#{overviewBundle.submit}" />
+            </tc:panel>
+
           </tc:tab>
           <tc:tab label="#{overviewBundle.treeListboxLabel}">
 
+            <f:facet name="layout">
+              <tc:gridLayout columns="2*;1*" />
+            </f:facet>
+
             <tc:treeListbox value="#{demo.tree}" state="#{demo.treeState}" id="treeListbox"
                 idReference="userObject.id"
                 nameReference="userObject.name"
                 selectable="#{overviewController.treeListboxSelectMode}"
                 >
             </tc:treeListbox>
+
+            <tc:panel>
+              <f:facet name="layout">
+                <tc:gridLayout rows="1*;fixed;20px;fixed" />
+              </f:facet>
+
+              <tc:cell />
+
+              <tc:selectOneChoice value="#{overviewController.treeListboxSelectMode}">
+                <f:selectItems value="#{overviewController.treeListboxSelectModeItems}" />
+              </tc:selectOneChoice>
+
+              <tc:cell />
+
+              <tc:button action="redisplay" label="#{overviewBundle.submit}" />
+            </tc:panel>
           </tc:tab>
         </tc:tabGroup>
-
-      <%-- column --%>
-        <tc:panel>
-          <f:facet name="layout">
-            <tc:gridLayout rows="20px;fixed;fixed;fixed;fixed;1*;fixed;fixed;fixed;fixed" />
-          </f:facet>
-
-          <tc:cell />
-
-          <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowIcons}"
-              value="#{demo.showIcons}"
-              disabled="#{overviewController.treeTabsState != 0}"/>
-          <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowJunctions}"
-              value="#{demo.showJunctions}"
-              disabled="#{overviewController.treeTabsState != 0}"/>
-          <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowRootJunction}"
-              value="#{demo.showRootJunction}"
-              disabled="#{overviewController.treeTabsState != 0}"/>
-          <tc:selectBooleanCheckbox label="#{overviewBundle.treeShowRoot}"
-              value="#{demo.showRoot}"
-              disabled="#{overviewController.treeTabsState != 0}"/>
-          <tc:cell />
-          <tc:selectOneChoice value="#{overviewController.treeSelectMode}"
-              rendered="#{overviewController.treeTabsState == 0}">
-            <f:selectItems value="#{overviewController.treeSelectModeItems}" />
-          </tc:selectOneChoice>
-          <tc:selectOneChoice value="#{overviewController.treeListboxSelectMode}"
-              rendered="#{overviewController.treeTabsState == 1}">
-            <f:selectItems value="#{overviewController.treeListboxSelectModeItems}" />
-          </tc:selectOneChoice>
-
-          <tc:selectBooleanCheckbox label="#{overviewBundle.treeMutable}"
-              value="#{demo.mutable}"
-              disabled="#{overviewController.treeTabsState != 0}"/>
-          <tc:button action="redisplay" label="#{overviewBundle.submit}" />
-        </tc:panel>
 
       </tc:box>
 

Modified: incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DateRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DateRenderer.java?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DateRenderer.java (original)
+++ incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/DateRenderer.java Tue Dec 27 01:59:30 2005
@@ -27,6 +27,7 @@
 import org.apache.myfaces.tobago.config.ThemeConfig;
 import org.apache.myfaces.tobago.event.DatePickerController;
 import org.apache.myfaces.tobago.renderkit.RenderUtil;
+import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 
 import javax.faces.component.UICommand;
@@ -52,12 +53,20 @@
 
   protected void renderMain(FacesContext facesContext, UIInput input, TobagoResponseWriter writer) throws IOException {
 
+    final String[] scripts = {
+        "script/date.js",
+        "script/dateConverter.js",
+        "script/calendar.js"};
 
     final List<String> scriptFiles
         = ComponentUtil.findPage(input).getScriptFiles();
-    scriptFiles.add("script/date.js");
-    scriptFiles.add("script/dateConverter.js");
-    scriptFiles.add("script/calendar.js");
+    for (String script : scripts) {
+      scriptFiles.add(script);
+    }
+
+    if (AJAX_ENABLED) {
+      HtmlRendererUtil.writeScriptLoader(facesContext, scripts, null);
+    }
 
     String classes = ComponentUtil.getStringAttribute(input, ATTR_STYLE_CLASS);
     classes = classes.replaceAll("tobago-date-", "tobago-in-");

Modified: incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxRenderer.java?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxRenderer.java (original)
+++ incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxRenderer.java Tue Dec 27 01:59:30 2005
@@ -21,12 +21,13 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import static org.apache.myfaces.tobago.TobagoConstants.AJAX_ENABLED;
+import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STYLE;
 import org.apache.myfaces.tobago.component.ComponentUtil;
 import org.apache.myfaces.tobago.component.UIPage;
 import org.apache.myfaces.tobago.component.UITreeListbox;
 import org.apache.myfaces.tobago.component.UITreeNode;
 import org.apache.myfaces.tobago.context.ResourceManagerUtil;
-import org.apache.myfaces.tobago.renderkit.RenderUtil;
 import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 
@@ -38,7 +39,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import static org.apache.myfaces.tobago.TobagoConstants.*;
 
 public class TreeListboxRenderer extends TreeRenderer{
 
@@ -100,35 +100,48 @@
     writer.writeAttribute("value", value, null);
     writer.endElement("input");
 
-    page.getScriptFiles().add("script/tree.js");
+    String script = createJavascript(facesContext, clientId, root);
 
-    HtmlRendererUtil.startJavascript(writer);
+    final String[] scripts = {"script/tree.js"};
+    ComponentUtil.findPage(tree).getScriptFiles().add(scripts[0]);
 
-    writer.writeText("{\n", null);
+    if (! AJAX_ENABLED) {
+      HtmlRendererUtil.startJavascript(writer);
+      writer.writeText(script, null);
+      HtmlRendererUtil.endJavascript(writer);
+    } else {
+      HtmlRendererUtil.writeScriptLoader(facesContext, scripts,
+          new String[] {script.replaceAll("\n", " ")});
+    }
 
-    writer.writeText("  var treeResourcesHelp = new Object();\n", null);
-    writer.writeText("  treeResourcesHelp.getImage = function (name) {\n", null);
-    writer.writeText("    return \"", null);
-    writer.writeText(ResourceManagerUtil.getImageWithPath(facesContext, "image/blank.gif"), null);
-    writer.writeText("\";\n", null);
-    writer.writeText("  }\n", null);
+  }
 
+  private String  createJavascript(FacesContext facesContext, String clientId,
+                                   UITreeNode root) throws IOException {
 
-    RenderUtil.encode(facesContext, root);
+    StringBuffer sb = new StringBuffer();
+    sb.append("{\n");
 
-    writer.writeText("  var hidden =   document.getElementById('", null);
-    writer.writeText(clientId, null);
-    writer.writeText("'); \n", null);
-    writer.writeText("  hidden.rootNode = ", null);
+    sb.append("  var treeResourcesHelp = new Object();\n");
+    sb.append("  treeResourcesHelp.getImage = function (name) {\n");
+    sb.append("    return \"");
+    sb.append(ResourceManagerUtil.getImageWithPath(facesContext, "image/blank.gif"));
+    sb.append("\";\n");
+    sb.append("  };;\n");
+
+    sb.append(getNodesAsJavascript(facesContext, root));
+
+    sb.append("  var hidden =   document.getElementById('");
+    sb.append(clientId);
+    sb.append("'); \n");
+    sb.append("  hidden.rootNode = ");
     String rootNode = createJavascriptVariable(root.getClientId(facesContext));
-    writer.writeText(rootNode, null);
-    writer.writeText(";\n", null);
-
-    writer.writeText("}\n", null);
-
-    HtmlRendererUtil.endJavascript(writer);
+    sb.append(rootNode);
+    sb.append(";\n");
 
+    sb.append("}\n");
 
+    return sb.toString();
   }
 
 //  public void encodeChildrenTobago(

Modified: incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java (original)
+++ incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeRenderer.java Tue Dec 27 01:59:30 2005
@@ -21,6 +21,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import static org.apache.myfaces.tobago.TobagoConstants.*;
 import org.apache.myfaces.tobago.component.ComponentUtil;
 import org.apache.myfaces.tobago.component.UITree;
 import org.apache.myfaces.tobago.component.UITreeNode;
@@ -35,7 +36,7 @@
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
-import static org.apache.myfaces.tobago.TobagoConstants.*;
+import java.io.StringWriter;
 
 public class TreeRenderer extends RendererBase {
 
@@ -43,6 +44,24 @@
 
   private static final Log LOG = LogFactory.getLog(TreeRenderer.class);
 
+  // tree resources (TREE_IMAGES)
+  private static final String[] TREE_IMAGES = {
+      "openfoldericon.gif",
+      "foldericon.gif",
+      "unchecked.gif",
+      "checked.gif",
+      "new.gif",
+      "T.gif",
+      "L.gif",
+      "I.gif",
+      "Lminus.gif",
+      "Tminus.gif",
+      "Rminus.gif",
+      "Lplus.gif",
+      "Tplus.gif",
+      "Rplus.gif",
+  };
+
 // ///////////////////////////////////////////// attribute
 
 // ///////////////////////////////////////////// constructor
@@ -151,53 +170,74 @@
     writer.endElement("table");
 //    writer.endElement("div");
 
-    ComponentUtil.findPage(tree).getScriptFiles().add("script/tree.js");
 
-    HtmlRendererUtil.startJavascript(writer);
-    writer.writeText("{", null);
+    String script = createJavascript(facesContext, clientId, root);
 
-    // tree resources (images)
-    String[] images = {
-      "openfoldericon.gif", "foldericon.gif", "unchecked.gif", "checked.gif",
-      "new.gif", "T.gif", "L.gif", "I.gif",
-      "Lminus.gif", "Tminus.gif", "Rminus.gif",
-      "Lplus.gif", "Tplus.gif", "Rplus.gif",
-    };
-    writer.writeText("var treeResourcesHelp = new Object();\n", null);
-    for (int i = 0; i < images.length; i++) {
-      writer.writeText("treeResourcesHelp.", null);
-      writer.writeText(images[i].replace('.', '_'), null);
-      writer.writeText(" = \"", null);
-      writer.writeText(ResourceManagerUtil.getImageWithPath(facesContext, "image/" + images[i]), null);
-      writer.writeText("\";\n", null);
-    }
-    writer.writeText("treeResourcesHelp.getImage = function (name) {\n", null);
-    writer.writeText("  var result = this[name.replace('.', '_')];\n", null);
-    writer.writeText("  if (result) {\n", null);
-    writer.writeText("    return result;\n", null);
-    writer.writeText("  } else {\n", null);
-    writer.writeText("    return \"", null);
-    writer.writeText(ResourceManagerUtil.getImageWithPath(facesContext, "image/blank.gif"), null);
-    writer.writeText("\";\n", null);
-    writer.writeText("  }\n", null);
-    writer.writeText("}\n", null);
+    final String[] scripts = {"script/tree.js"};
+    ComponentUtil.findPage(tree).getScriptFiles().add(scripts[0]);
 
-    RenderUtil.encode(facesContext, root);
+    if (! AJAX_ENABLED) {
+      HtmlRendererUtil.startJavascript(writer);
+      writer.writeText(script, null);
+      HtmlRendererUtil.endJavascript(writer);
+    } else {
+      HtmlRendererUtil.writeScriptLoader(facesContext, scripts,
+          new String[] {script.replaceAll("\n", " ")});
+    }
+
+    writer.endElement("div");
+  }
 
-    writer.writeText("  var treeDiv = document.getElementById('", null);
-    writer.writeText(clientId, null);
-    writer.writeText("-cont');\n", null);
-    writer.writeText("treeDiv.innerHTML = ", null);
+  private String createJavascript(FacesContext facesContext, String clientId,
+                                  UITreeNode root)
+  throws IOException {
+    StringBuffer sb = new StringBuffer();
+
+    sb.append("{");
+
+    sb.append("var treeResourcesHelp = new Object();\n");
+    for (int i = 0; i < TREE_IMAGES.length; i++) {
+      sb.append("treeResourcesHelp.");
+      sb.append(TREE_IMAGES[i].replace('.', '_'));
+      sb.append(" = \"");
+      sb.append(ResourceManagerUtil.getImageWithPath(facesContext, "image/" + TREE_IMAGES[i]));
+      sb.append("\";\n");
+    }
+    sb.append("treeResourcesHelp.getImage = function (name) {\n");
+    sb.append("  var result = this[name.replace('.', '_')];\n");
+    sb.append("  if (result) {\n");
+    sb.append("    return result;\n");
+    sb.append("  } else {\n");
+    sb.append("    return \"");
+    sb.append(ResourceManagerUtil.getImageWithPath(facesContext, "image/blank.gif"));
+    sb.append("\";\n");
+    sb.append("  }\n");
+    sb.append("};\n");
+
+    sb.append(getNodesAsJavascript(facesContext, root));
+
+    sb.append("  var treeDiv = document.getElementById('");
+    sb.append(clientId);
+    sb.append("-cont');\n");
+    sb.append("treeDiv.innerHTML = ");
     String rootNode = createJavascriptVariable(root.getClientId(facesContext));
-    writer.writeText(rootNode, null);
-    writer.writeText(".toString(0, true);\n", null);
+    sb.append(rootNode);
+    sb.append(".toString(0, true);\n");
 
-    writer.writeText(rootNode, null);
-    writer.writeText(".initSelection();\n", null);
-    writer.writeText("}", null);
-    HtmlRendererUtil.endJavascript(writer);
+    sb.append(rootNode);
+    sb.append(".initSelection();\n");
 
-    writer.endElement("div");
+    sb.append("}");
+    return sb.toString();
+  }
+
+  protected String getNodesAsJavascript(FacesContext facesContext, UITreeNode root) throws IOException {
+    TobagoResponseWriter writer = (TobagoResponseWriter) facesContext.getResponseWriter();
+    StringWriter stringWriter = new StringWriter();
+    facesContext.setResponseWriter(writer.cloneWithWriter(stringWriter));
+    RenderUtil.encode(facesContext, root);
+    facesContext.setResponseWriter(writer);
+    return stringWriter.toString();
   }
 
 // ///////////////////////////////////////////// bean getter + setter

Modified: incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script/tree.js
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script/tree.js?rev=359197&r1=359196&r2=359197&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script/tree.js (original)
+++ incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/script/tree.js Tue Dec 27 01:59:30 2005
@@ -424,7 +424,9 @@
   this.initSelection = function() {
     if (this.selected) {
       var selectState = document.getElementById(treeHiddenId + '-selectState');
-      selectState.value = selectState.value + nodeStateId(this) + ";" ;
+      if (selectState) {
+        selectState.value = selectState.value + nodeStateId(this) + ";";
+      }
     }
   };