Author: nbelaevski
Date: 2009-01-21 14:39:59 -0500 (Wed, 21 Jan 2009)
New Revision: 12364
Modified:
trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
trunk/ui/tree/src/main/templates/htmlTree.jspx
Log:
https://jira.jboss.org/jira/browse/RF-5835
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2009-01-21
17:51:29 UTC (rev 12363)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2009-01-21
19:39:59 UTC (rev 12364)
@@ -47,6 +47,7 @@
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.renderkit.ComponentsVariableResolver;
import org.ajax4jsf.renderkit.RendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UITree;
import org.richfaces.component.UITreeNode;
import org.richfaces.component.nsutils.NSUtils;
@@ -570,29 +571,45 @@
return buffer.toString();
}
+ public String writeScriptElement(FacesContext context, UITree tree, String code) throws
IOException {
+ /*
+ <div id="#{clientId}:script" class="dr-tree-h-script">
+ <script type="text/javascript">
+ </script>
+ </div>
+ */
+
+ String scriptId = tree.getBaseClientId(context) + NamingContainer.SEPARATOR_CHAR +
"script";
+ ResponseWriter responseWriter = context.getResponseWriter();
+ responseWriter.startElement(HTML.DIV_ELEM, tree);
+ responseWriter.writeAttribute(HTML.id_ATTRIBUTE, scriptId, null);
+ responseWriter.writeAttribute(HTML.class_ATTRIBUTE, "dr-tree-h-script",
null);
+
+ responseWriter.startElement(HTML.SCRIPT_ELEM, tree);
+ responseWriter.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+
+ if (code != null && code.length() != 0) {
+ responseWriter.writeText(code, null);
+ }
+
+ responseWriter.endElement(HTML.SCRIPT_ELEM);
+
+ responseWriter.endElement(HTML.DIV_ELEM);
+
+ return scriptId;
+ }
+
private void writeScript(FacesContext context, UITree tree, List encodedAreaIds,
Set renderedAreas) throws IOException {
- final ResponseWriter writer = context.getResponseWriter();
+
final String clientId = tree.getBaseClientId(context);
-
- String scriptId = clientId + NamingContainer.SEPARATOR_CHAR + "script";
- writer.startElement("div", tree);
- getUtils().writeAttribute(writer, "id", scriptId);
- writer.startElement("script", tree);
- getUtils().writeAttribute(writer, "type", "text/javascript");
-
StringBuffer sb = new StringBuffer("$(");
sb.append(ScriptUtils.toScript(clientId));
sb.append(").component.");
new JSFunction("refreshAfterAjax", encodedAreaIds, getSelectionValue(context,
tree)).appendScript(sb);
- writer.writeText(sb, null);
- writer.endElement("script");
- writer.endElement("div");
-
- renderedAreas.add(scriptId);
-
+ renderedAreas.add(writeScriptElement(context, tree, sb.toString()));
}
public void encodeChildren(FacesContext context, UIComponent component)
Modified: trunk/ui/tree/src/main/templates/htmlTree.jspx
===================================================================
--- trunk/ui/tree/src/main/templates/htmlTree.jspx 2009-01-21 17:51:29 UTC (rev 12363)
+++ trunk/ui/tree/src/main/templates/htmlTree.jspx 2009-01-21 19:39:59 UTC (rev 12364)
@@ -65,9 +65,10 @@
#{this:getScriptContributions("tree", context, component)}
}());
</script>
- <div id="#{clientId}:script" class="dr-tree-h-script">
- <script type="text/javascript">
- </script>
+
+ <f:call name="writeScriptElement">
+ <f:parameter value=""/>
+ </f:call>
+
</div>
- </div>
</f:root>