Author: nbelaevski
Date: 2010-05-19 08:46:50 -0400 (Wed, 19 May 2010)
New Revision: 17121
Removed:
root/core/trunk/api/src/main/java/org/richfaces/event/PreRenderMetaComponentEvent.java
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
Log:
https://jira.jboss.org/browse/RF-7856
https://jira.jboss.org/browse/RF-8630
Deleted:
root/core/trunk/api/src/main/java/org/richfaces/event/PreRenderMetaComponentEvent.java
===================================================================
---
root/core/trunk/api/src/main/java/org/richfaces/event/PreRenderMetaComponentEvent.java 2010-05-19
12:35:46 UTC (rev 17120)
+++
root/core/trunk/api/src/main/java/org/richfaces/event/PreRenderMetaComponentEvent.java 2010-05-19
12:46:50 UTC (rev 17121)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2010, Red Hat, Inc. and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.richfaces.event;
-
-import javax.faces.component.UIComponent;
-import javax.faces.event.PreRenderComponentEvent;
-
-/**
- * @author Nick Belaevski
- *
- */
-public class PreRenderMetaComponentEvent extends PreRenderComponentEvent {
-
- /**
- *
- */
- private static final long serialVersionUID = 5755546878106468912L;
-
- private String metaComponentId;
-
- public PreRenderMetaComponentEvent(UIComponent component, String metaComponentId) {
- super(component);
-
- this.metaComponentId = metaComponentId;
- }
-
- /**
- * @return the metaComponentId
- */
- public String getMetaComponentId() {
- return metaComponentId;
- }
-}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-19
12:35:46 UTC (rev 17120)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-19
12:46:50 UTC (rev 17121)
@@ -35,12 +35,14 @@
import java.util.Map;
import javax.faces.FacesException;
+import javax.faces.application.Application;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.PartialResponseWriter;
import javax.faces.context.ResponseWriter;
+import javax.faces.event.PreRenderComponentEvent;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSReference;
@@ -319,17 +321,31 @@
encodeHeaderOrFooter(state, "header");
}
+ private void encodeBodyProlog(FacesContext context, UIComponent table, String
tableBodyId) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, tableBodyId, null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body",
null);
+ }
+
+ private void encodeBodyEpilog(FacesContext context) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ writer.endElement(HTML.DIV_ELEM);
+ }
+
public void encodeBody(RendererState state) throws IOException {
FacesContext context = state.getContext();
ResponseWriter writer = context.getResponseWriter();
UIDataTableBase table = state.getRow();
- //TODO nick - add startUpdate(...) for "noData" case
+ String tableBodyId = table.getClientId(context) + ":b";
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) +
":b", null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body",
null);
if (table.getRowCount() == 0) {
+ EncoderVariance encoderVariance = state.getEncoderVariance();
+ encoderVariance.encodeStartUpdate(context, tableBodyId);
+
+ encodeBodyProlog(context, table, tableBodyId);
+
UIComponent facet = table.getFacet("noData");
if (facet != null && facet.isRendered()) {
facet.encodeAll(context);
@@ -339,7 +355,14 @@
writer.writeText(noDataLabel, "noDataLabel");
}
}
+
+ encodeBodyEpilog(context);
+
+ encoderVariance.encodeEndUpdate(context);
+
} else {
+ encodeBodyProlog(context, table, tableBodyId);
+
table.getAttributes().put("clientFirst", 0);
writer.startElement(HTML.DIV_ELEM, table);
writer.startElement(HTML.DIV_ELEM, table);
@@ -384,8 +407,9 @@
writer.endElement(HTML.TBOBY_ELEMENT);
writer.endElement(HTML.TABLE_ELEMENT);
writer.endElement(HTML.DIV_ELEM);
+
+ encodeBodyEpilog(context);
}
- writer.endElement(HTML.DIV_ELEM);
}
public void encodeFooter(RendererState state) throws IOException {
@@ -514,11 +538,19 @@
RendererState state = createRowHolder(context, component);
state.setEncoderVariance(EncoderVariance.partial);
+ Application application = context.getApplication();
+
if (UIExtendedDataTable.HEADER.equals(metaComponentId)) {
+ application.publishEvent(context, PreRenderComponentEvent.class,
component);
+
encodeHeader(state);
} else if (UIExtendedDataTable.FOOTER.equals(metaComponentId)) {
+ application.publishEvent(context, PreRenderComponentEvent.class,
component);
+
encodeFooter(state);
} else if (UIExtendedDataTable.BODY.equals(metaComponentId)) {
+ application.publishEvent(context, PreRenderComponentEvent.class,
component);
+
encodeBody(state);
} else {
throw new IllegalArgumentException("Unsupported
metaComponentIdentifier: " + metaComponentId);