You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ms...@apache.org on 2011/01/14 22:24:42 UTC

svn commit: r1059177 - in /myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml: PanelBorderLayoutRenderer.java jsLibs/PanelBorderIE6Scriptlet.java jsLibs/XhtmlScriptletFactory.java

Author: mstarets
Date: Fri Jan 14 21:24:41 2011
New Revision: 1059177

URL: http://svn.apache.org/viewvc?rev=1059177&view=rev
Log:
TRINIDAD-2008 - tr:panelBorderLayout is throwing exception with Mojarra during tag execution

Added:
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/PanelBorderIE6Scriptlet.java
Modified:
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBorderLayoutRenderer.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/XhtmlScriptletFactory.java

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBorderLayoutRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBorderLayoutRenderer.java?rev=1059177&r1=1059176&r2=1059177&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBorderLayoutRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBorderLayoutRenderer.java Fri Jan 14 21:24:41 2011
@@ -32,7 +32,7 @@ import org.apache.myfaces.trinidad.conte
 import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.util.ComponentUtils;
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
-import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.PanelBorderIE6Scriptlet;
 
 
 /**
@@ -731,7 +731,7 @@ public class PanelBorderLayoutRenderer e
     if (isIE6)
     {
       // send down the JS that we need to stretch the components
-      XhtmlUtils.addLib(context, rc, IE6_SCRIPT.getScriptletKey());
+      XhtmlUtils.addLib(context, rc, PanelBorderIE6Scriptlet.sharedInstance().getScriptletKey());
     }
 
     writer.startElement("div", component);
@@ -1031,74 +1031,4 @@ public class PanelBorderLayoutRenderer e
   private PropertyKey _innerStartWidthKey;
   private PropertyKey _endWidthKey;
   private PropertyKey _innerEndWidthKey;
-
-  // Since IE6 cannot stretch components using docking, we are forced to use
-  // JavaScript to do the dirty work
-  private static final Scriptlet IE6_SCRIPT = new Scriptlet()
-  {
-    private static final String IE_JS_CODE =
-      "function TrPanelBorderLayoutResizeIE6(elem)\n" +
-      "{\n" +
-      "  var id = elem.id;\n" +
-      "  var innerElems = elem._trInnerElems;\n" +
-      "  if (innerElems == null)\n" +
-      "  {\n" +
-      "    innerElems = elem._trInnerElems = new Array(\n" +
-      "      document.getElementById(id + '::top'),\n" +
-      "      document.getElementById(id + '::bottom'),\n" +
-      "      document.getElementById(id + '::left'),\n" +
-      "      document.getElementById(id + '::right'),\n" +
-      "      document.getElementById(id + '::center'),\n" +
-      "      document.getElementById(id + '::innerTop'),\n" +
-      "      document.getElementById(id + '::innerBottom'),\n" +
-      "      document.getElementById(id + '::innerLeft'),\n" +
-      "      document.getElementById(id + '::innerRight'),\n" +
-      "      document.getElementById(id + '::innerCenter'));\n" +
-      "  }\n" +
-      "  var topHeight = innerElems[0] ? innerElems[0].offsetHeight : 0;\n" +
-      "  var bottomHeight = innerElems[1] ? innerElems[1].offsetHeight : 0;\n" +
-      "  var leftWidth = innerElems[2] ? innerElems[2].offsetWidth : 0;\n" +
-      "  var rightWidth = innerElems[3] ? innerElems[3].offsetWidth : 0;\n" +
-      "  var center = innerElems[4];\n" +
-      "  var innerCenter = innerElems[9];\n" +
-      "  var width = elem.clientWidth;\n" +
-      "  var height = elem.clientHeight;\n" +
-      "  var centerHeight = (height - topHeight - bottomHeight);\n" +
-      "  var centerWidth = (width - leftWidth - rightWidth);\n" +
-      "  center.style.height = centerHeight + 'px';\n" +
-      "  center.style.width = centerWidth + 'px';\n" +
-      "  if (innerElems[2]) innerElems[2].style.height = centerHeight + 'px';\n" +
-      "  if (innerElems[3]) innerElems[3].style.height = centerHeight + 'px';\n" +
-      "  var innerTopHeight = innerElems[5] ? innerElems[5].offsetHeight : 0;\n" +
-      "  var innerBottomHeight = innerElems[6] ? innerElems[6].offsetHeight : 0;\n" +
-      "  var innerLeftWidth = innerElems[7] ? innerElems[7].offsetWidth : 0;\n" +
-      "  var innerRightWidth = innerElems[8] ? innerElems[8].offsetWidth : 0;\n" +
-      "  var innerCenterHeight = (centerHeight - innerTopHeight - innerBottomHeight);\n" +
-      "  var innerCenterWidth = (centerWidth - innerLeftWidth - innerRightWidth);\n" +
-      "  innerCenter.style.height = innerCenterHeight + 'px';\n" +
-      "  innerCenter.style.width = innerCenterWidth + 'px';\n" +
-      "  if (innerElems[7]) innerElems[7].style.height = innerCenterHeight + 'px';\n" +
-      "  if (innerElems[8]) innerElems[8].style.height = innerCenterHeight + 'px';\n" +
-      "}";
-
-    @Override
-    public Object getScriptletKey()
-    {
-      return "TrPanelBorderLayoutResizeIE6()";
-    };
-
-    @Override
-    protected void outputScriptletContent(
-      FacesContext context,
-      RenderingContext rc
-      ) throws IOException
-    {
-      context.getResponseWriter().writeText(IE_JS_CODE, null);
-    };
-  };
-
-  static
-  {
-    XhtmlUtils.registerScriptlet(IE6_SCRIPT.getScriptletKey(), IE6_SCRIPT);
-  };
 }

Added: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/PanelBorderIE6Scriptlet.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/PanelBorderIE6Scriptlet.java?rev=1059177&view=auto
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/PanelBorderIE6Scriptlet.java (added)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/PanelBorderIE6Scriptlet.java Fri Jan 14 21:24:41 2011
@@ -0,0 +1,105 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs;
+
+import java.io.IOException;
+import javax.faces.context.FacesContext;
+import org.apache.myfaces.trinidad.context.RenderingContext;
+
+
+// Since IE6 cannot stretch components using docking, we are forced to use
+// JavaScript to do the dirty work
+public class PanelBorderIE6Scriptlet extends Scriptlet
+{
+  static public Scriptlet sharedInstance()
+  {
+    return _sInstance;
+  }
+  
+  @Override
+  public Object getScriptletKey()
+  {
+    return "TrPanelBorderLayoutResizeIE6()";
+  }
+
+  @Override
+  protected void outputScriptletContent(
+    FacesContext context,
+    RenderingContext rc
+    ) throws IOException
+  {
+    context.getResponseWriter().writeText(IE_JS_CODE, null);
+  }
+  
+  private PanelBorderIE6Scriptlet()
+  {
+    super();
+  }
+  
+  
+  private static final String IE_JS_CODE =
+    "function TrPanelBorderLayoutResizeIE6(elem)\n" +
+    "{\n" +
+    "  var id = elem.id;\n" +
+    "  var innerElems = elem._trInnerElems;\n" +
+    "  if (innerElems == null)\n" +
+    "  {\n" +
+    "    innerElems = elem._trInnerElems = new Array(\n" +
+    "      document.getElementById(id + '::top'),\n" +
+    "      document.getElementById(id + '::bottom'),\n" +
+    "      document.getElementById(id + '::left'),\n" +
+    "      document.getElementById(id + '::right'),\n" +
+    "      document.getElementById(id + '::center'),\n" +
+    "      document.getElementById(id + '::innerTop'),\n" +
+    "      document.getElementById(id + '::innerBottom'),\n" +
+    "      document.getElementById(id + '::innerLeft'),\n" +
+    "      document.getElementById(id + '::innerRight'),\n" +
+    "      document.getElementById(id + '::innerCenter'));\n" +
+    "  }\n" +
+    "  var topHeight = innerElems[0] ? innerElems[0].offsetHeight : 0;\n" +
+    "  var bottomHeight = innerElems[1] ? innerElems[1].offsetHeight : 0;\n" +
+    "  var leftWidth = innerElems[2] ? innerElems[2].offsetWidth : 0;\n" +
+    "  var rightWidth = innerElems[3] ? innerElems[3].offsetWidth : 0;\n" +
+    "  var center = innerElems[4];\n" +
+    "  var innerCenter = innerElems[9];\n" +
+    "  var width = elem.clientWidth;\n" +
+    "  var height = elem.clientHeight;\n" +
+    "  var centerHeight = (height - topHeight - bottomHeight);\n" +
+    "  var centerWidth = (width - leftWidth - rightWidth);\n" +
+    "  center.style.height = centerHeight + 'px';\n" +
+    "  center.style.width = centerWidth + 'px';\n" +
+    "  if (innerElems[2]) innerElems[2].style.height = centerHeight + 'px';\n" +
+    "  if (innerElems[3]) innerElems[3].style.height = centerHeight + 'px';\n" +
+    "  var innerTopHeight = innerElems[5] ? innerElems[5].offsetHeight : 0;\n" +
+    "  var innerBottomHeight = innerElems[6] ? innerElems[6].offsetHeight : 0;\n" +
+    "  var innerLeftWidth = innerElems[7] ? innerElems[7].offsetWidth : 0;\n" +
+    "  var innerRightWidth = innerElems[8] ? innerElems[8].offsetWidth : 0;\n" +
+    "  var innerCenterHeight = (centerHeight - innerTopHeight - innerBottomHeight);\n" +
+    "  var innerCenterWidth = (centerWidth - innerLeftWidth - innerRightWidth);\n" +
+    "  innerCenter.style.height = innerCenterHeight + 'px';\n" +
+    "  innerCenter.style.width = innerCenterWidth + 'px';\n" +
+    "  if (innerElems[7]) innerElems[7].style.height = innerCenterHeight + 'px';\n" +
+    "  if (innerElems[8]) innerElems[8].style.height = innerCenterHeight + 'px';\n" +
+    "}";
+  
+  
+  static private final Scriptlet _sInstance = new PanelBorderIE6Scriptlet();
+  
+}

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/XhtmlScriptletFactory.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/XhtmlScriptletFactory.java?rev=1059177&r1=1059176&r2=1059177&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/XhtmlScriptletFactory.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/jsLibs/XhtmlScriptletFactory.java Fri Jan 14 21:24:41 2011
@@ -77,6 +77,7 @@ public class XhtmlScriptletFactory
     ConfigurationScriptlet.sharedInstance().registerSelf();
     GlobalVariablesScriptlet.sharedInstance().registerSelf();
     DialogStyleScriptlet.sharedInstance().registerSelf();
+    PanelBorderIE6Scriptlet.sharedInstance().registerSelf();
   }