[richfaces-svn-commits] JBoss Rich Faces SVN: r2205 - in trunk: framework/impl/src/main/java/org/richfaces/renderkit and 2 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Aug 10 13:26:28 EDT 2007
Author: nbelaevski
Date: 2007-08-10 13:26:28 -0400 (Fri, 10 Aug 2007)
New Revision: 2205
Added:
trunk/framework/api/src/main/java/org/richfaces/component/TemplateComponent.java
Modified:
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp
trunk/ui/calendar/src/main/java/org/richfaces/component/UICalendar.java
Log:
- TemplateComponent class added
- Handling for TemplateComponent in Calendar component added
- Test case updated
Added: trunk/framework/api/src/main/java/org/richfaces/component/TemplateComponent.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/component/TemplateComponent.java (rev 0)
+++ trunk/framework/api/src/main/java/org/richfaces/component/TemplateComponent.java 2007-08-10 17:26:28 UTC (rev 2205)
@@ -0,0 +1,18 @@
+/**
+ *
+ */
+package org.richfaces.component;
+
+/**
+ * @author Nick Belaevski
+ * mailto:nbelaevski at exadel.com
+ * created 10.08.2007
+ *
+ */
+public interface TemplateComponent {
+ public static final String TEMPLATE_CLIENT_ID = "{componentId}";
+
+ public void startTemplateEncode();
+
+ public void endTemplateEncode();
+}
Modified: trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2007-08-10 16:13:35 UTC (rev 2204)
+++ trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2007-08-10 17:26:28 UTC (rev 2205)
@@ -23,6 +23,7 @@
import org.ajax4jsf.webapp.tidy.TidyParser;
import org.ajax4jsf.webapp.tidy.TidyXMLFilter;
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+import org.richfaces.component.TemplateComponent;
import org.richfaces.json.JSContentHandler;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@@ -99,13 +100,27 @@
StringWriter dumpingWriter = new StringWriter();
ResponseWriter clonedWriter = writer.cloneWithWriter(dumpingWriter);
context.setResponseWriter(clonedWriter);
+
+ TemplateComponent templateComponent = null;
+ if (component instanceof TemplateComponent) {
+ templateComponent = (TemplateComponent) component;
+ }
+
try {
+ if (templateComponent != null) {
+ templateComponent.startTemplateEncode();
+ }
+
if (children) {
this.renderChildren(context, component);
} else {
this.renderChild(context, component);
}
} finally {
+ if (templateComponent != null) {
+ templateComponent.endTemplateEncode();
+ }
+
clonedWriter.flush();
context.setResponseWriter(writer);
}
Modified: trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp
===================================================================
--- trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp 2007-08-10 16:13:35 UTC (rev 2204)
+++ trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp 2007-08-10 17:26:28 UTC (rev 2205)
@@ -50,7 +50,7 @@
<f:validator validatorId="org.richfaces.CalendarValidator" />
- <h:panelGrid columns="2">
+ <h:panelGrid columns="2" id="dayTable">
<f:verbatim><p style="padding: 2px;" <%-- class="largeText"--%>>{day}</p></f:verbatim>
<%-- h:panelGrid>
<h:outputText styleClass="smallText" value="{data.enLabel}" />
Modified: trunk/ui/calendar/src/main/java/org/richfaces/component/UICalendar.java
===================================================================
--- trunk/ui/calendar/src/main/java/org/richfaces/component/UICalendar.java 2007-08-10 16:13:35 UTC (rev 2204)
+++ trunk/ui/calendar/src/main/java/org/richfaces/component/UICalendar.java 2007-08-10 17:26:28 UTC (rev 2205)
@@ -32,6 +32,8 @@
import java.util.TimeZone;
import javax.faces.application.FacesMessage;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
@@ -57,7 +59,7 @@
* JSF component class
*
*/
-public abstract class UICalendar extends UIInput {
+public abstract class UICalendar extends UIInput implements TemplateComponent, NamingContainer {
public static final String COMPONENT_TYPE = "org.richfaces.Calendar";
@@ -279,6 +281,31 @@
}
+ private transient boolean inTemplateEncode = false;
+
+ public void startTemplateEncode() {
+ if (getChildCount() > 0) {
+ Iterator children = getChildren().iterator();
+ while (children.hasNext()) {
+ UIComponent child = (UIComponent) children.next();
+ child.setId(child.getId());
+ }
+ }
+ inTemplateEncode = true;
+ }
+
+ public void endTemplateEncode() {
+ inTemplateEncode = false;
+ }
+
+ public String getClientId(FacesContext context) {
+ if (inTemplateEncode) {
+ return TemplateComponent.TEMPLATE_CLIENT_ID;
+ } else {
+ return super.getClientId(context);
+ }
+ }
+
public void broadcast(FacesEvent event) throws AbortProcessingException {
// TODO Auto-generated method stub
if (event instanceof AjaxEvent) {
More information about the richfaces-svn-commits
mailing list