JBoss Rich Faces SVN: r17166 - in root: examples-sandbox/trunk/components/tables/src/main/webapp and 4 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2010-05-20 12:21:07 -0400 (Thu, 20 May 2010)
New Revision: 17166
Modified:
root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/DataBean.java
root/examples-sandbox/trunk/components/tables/src/main/webapp/extendedtable.xhtml
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.css
root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.js
root/ui-sandbox/tables/trunk/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java
Log:
RF-8659
Modified: root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/DataBean.java
===================================================================
--- root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/DataBean.java 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/DataBean.java 2010-05-20 16:21:07 UTC (rev 17166)
@@ -29,6 +29,7 @@
private String operation = "operation";
+ private boolean rendered = true;
public String getTarget() {
return target;
@@ -117,4 +118,12 @@
public Date getDate() {
return new Date();
}
+
+ public void setRendered(boolean rendered) {
+ this.rendered = rendered;
+ }
+
+ public boolean isRendered() {
+ return rendered;
+ }
}
Modified: root/examples-sandbox/trunk/components/tables/src/main/webapp/extendedtable.xhtml
===================================================================
--- root/examples-sandbox/trunk/components/tables/src/main/webapp/extendedtable.xhtml 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/examples-sandbox/trunk/components/tables/src/main/webapp/extendedtable.xhtml 2010-05-20 16:21:07 UTC (rev 17166)
@@ -4,6 +4,7 @@
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich">
<!--
@@ -48,6 +49,11 @@
<f:ajax render="extendedDataTable" />
</h:selectBooleanCheckbox>
<br />
+ <h:outputText value="Render footer" />
+ <h:selectBooleanCheckbox value="#{dataBean.rendered}">
+ <f:ajax render="extendedDataTable" />
+ </h:selectBooleanCheckbox>
+ <br />
JS API
<script type="text/javascript">
<!--
@@ -73,30 +79,36 @@
<f:facet name="noData">
<h:outputText value="There isn't data." style="border: solid black 1px;"/>
</f:facet>
- <rich:column >
+ <rich:column id="rkv">
<f:facet name="header">
<h:outputText value="Index"/>
</f:facet>
<h:outputText value="#{rkv}" />
- <f:facet name="footer">
- <h:outputText value="index"/>
- </f:facet>
+ <c:if test="#{dataBean.rendered}">
+ <f:facet name="footer">
+ <h:outputText id="footerFacet" value="index"/>
+ </f:facet>
+ </c:if>
</rich:column>
<rich:column id="column_name" filterExpression="#{fn:containsIgnoreCase(record.name, fv)}" sortBy="#{record.name}">
<f:facet name="header">
<h:outputText id="columnHeader1" value="Column Header Facet"/>
</f:facet>
<h:outputText value="#{record.name}" />
- <f:facet name="footer">
- <h:outputText id="columnFooter1" value="Column Footer Facet"/>
- </f:facet>
+ <c:if test="#{dataBean.rendered}">
+ <f:facet name="footer">
+ <h:outputText id="columnFooter1" value="Column Footer Facet"/>
+ </f:facet>
+ </c:if>
</rich:column>
<rich:column id="column_title" width="200px" sortBy="#{record.title}">
<h:outputText value="#{record.title}" />
- <f:facet name="footer">
- <h:outputText id="columnFooter2" value="Column Footer Facet2"/>
- </f:facet>
+ <c:if test="#{dataBean.rendered}">
+ <f:facet name="footer">
+ <h:outputText id="columnFooter2" value="Column Footer Facet2"/>
+ </f:facet>
+ </c:if>
</rich:column>
<rich:column id="column_email" width="300px">
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-05-20 16:21:07 UTC (rev 17166)
@@ -112,7 +112,10 @@
boolean result = false;
while (columns.hasNext() && !result) {
UIComponent component = columns.next();
- result = (component.isRendered() && null != component.getFacet(facetName));
+ if (component.isRendered()) {
+ UIComponent facet = component.getFacet(facetName);
+ result = facet != null && facet.isRendered();
+ }
}
return result;
}
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-20 15:11:06 UTC (rev 17165)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-20 16:21:07 UTC (rev 17166)
@@ -201,6 +201,18 @@
}
+ private void encodeEmptyFooterCell(FacesContext context, ResponseWriter writer, UIComponent column)
+ throws IOException {
+ if (column.isRendered()) {
+ writer.startElement(HTML.TD_ELEM, column);
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-empty-footer-cell rich-extable-cell-width-"
+ + column.getId(), null);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ }
+
private void encodeHeaderOrFooterCell(FacesContext context, ResponseWriter writer, UIComponent column,
String facetName) throws IOException {
if (column.isRendered()) {
@@ -237,7 +249,8 @@
FacesContext context = state.getContext();
ResponseWriter writer = context.getResponseWriter();
UIDataTableBase table = state.getRow();
- if (table.isColumnFacetPresent(name)) {
+ boolean columnFacetPresent = table.isColumnFacetPresent(name);
+ if (columnFacetPresent || "footer".equals(name)) {
writer.startElement(HTML.DIV_ELEM, table);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + name, (String) table
.getAttributes().get(name + "Class")), null);
@@ -278,7 +291,11 @@
writer.startElement(HTML.TBOBY_ELEMENT, table);
writer.startElement(HTML.TR_ELEMENT, table);
while (columns.hasNext()) {
- encodeHeaderOrFooterCell(context, writer, columns.next(), name);
+ if(columnFacetPresent) {
+ encodeHeaderOrFooterCell(context, writer, columns.next(), name);
+ } else {
+ encodeEmptyFooterCell(context, writer, columns.next());
+ }
}
writer.endElement(HTML.TR_ELEMENT);
writer.endElement(HTML.TBOBY_ELEMENT);
Modified: root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.css
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.css 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.css 2010-05-20 16:21:07 UTC (rev 17166)
@@ -103,6 +103,11 @@
border-right: 1px solid #C4C0C9;
}
+.rich-extable-empty-footer-cell{
+ border-right: 1px solid #C4C0C9;
+ height: 1px;
+}
+
.rich-extable-cell-content, .rich-extable-header-cell-content, .rich-extable-footer-cell-content{
padding: 2px;
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.js
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.js 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/resources/extendedDataTable.js 2010-05-20 16:21:07 UTC (rev 17166)
@@ -37,7 +37,6 @@
richfaces.ExtendedDataTable = function(id, rowCount, ajaxFunction, ajaxParameters) {
var WIDTH_CLASS_NAME_BASE = "rich-extable-cell-width-";
var MIN_WIDTH = 20;
- var idSuffixs = [":header", ":footer"]; //TODO Not use idSuffixs
var element = document.getElementById(id);
var bodyElement = document.getElementById(id + ":b");
@@ -54,11 +53,13 @@
var frozenColumnCount = frozenHeaderPartElement ? frozenHeaderPartElement.firstChild.rows[0].cells.length : 0;//TODO Richfaces.firstDescendant;
if (contentElement) {
- idSuffixs[idSuffixs.length] = ":body";
var spacerElement = contentElement.firstChild;//TODO this.marginElement = Richfaces.firstDescendant(this.contentElement);
var dataTableElement = contentElement.lastChild;//TODO this.dataTableElement = Richfaces.lastDescendant(this.contentElement);
var rows = document.getElementById(id + ":body").firstChild.rows.length;//TODO Richfaces.firstDescendant;
}
+
+ var parts = jQuery(element).find(".rich-extable-part");
+
var scrollElement = document.getElementById(id + ":footer");
var resizeData = {};
@@ -79,9 +80,15 @@
var updateLayout = function() {
var offsetWidth = frozenHeaderPartElement ? frozenHeaderPartElement.offsetWidth : 0;
var width = Math.max(0, element.clientWidth - offsetWidth);
- if (width && scrollElement) {
+ if (width) {
normalPartStyle.width = width + "px";
- normalPartStyle.display = "";
+ normalPartStyle.display = "block";
+ if (scrollElement.clientWidth < scrollElement.scrollWidth
+ && scrollElement.clientHeight == scrollElement.offsetHeight) {
+ scrollElement.style.overflowX = "scroll";
+ } else {
+ scrollElement.style.overflowX = "";
+ }
var delta = scrollElement.firstChild.offsetHeight - scrollElement.clientHeight;
if (delta) {
scrollElement.style.height = scrollElement.offsetHeight + delta;
@@ -101,7 +108,7 @@
};
var adjustResizers = function() {
- var scrollLeft = scrollElement ? scrollElement.scrollLeft : 0;
+ var scrollLeft = scrollElement.scrollLeft;
var clientWidth = element.clientWidth - 3;
var i = 0;
for (; i < frozenColumnCount; i++) {
@@ -137,16 +144,13 @@
}
};
- if (scrollElement) {
- var updateScrollPosition = function() {
- var scrollLeft = scrollElement.scrollLeft;
- for (var i = 0; i < idSuffixs.length; i++) {
- document.getElementById(id + idSuffixs[i]).scrollLeft = scrollLeft;//TODO Not use getElementById here
- }
- adjustResizers();
- };
- jQuery(scrollElement).bind("scroll", updateScrollPosition);
- }
+ var updateScrollPosition = function() {
+ var scrollLeft = scrollElement.scrollLeft;
+ parts.each(function() {
+ this.scrollLeft = scrollLeft;
+ });
+ adjustResizers();
+ };
var initializeLayout = function() {
//TODO Use "var rowHeight" instead of "dataTableElement.offsetHeight / rows"
@@ -154,9 +158,7 @@
contentElement.style.height = (rowCount * dataTableElement.offsetHeight / rows) + "px";
}
updateLayout();
- if (scrollElement) {
- updateScrollPosition(); //TODO Restore horizontal scroll position
- }
+ updateScrollPosition(); //TODO Restore horizontal scroll position
};
var drag = function(event) {
@@ -279,6 +281,7 @@
jQuery(document).ready(initializeLayout);
jQuery(window).bind("resize", updateLayout);
+ jQuery(scrollElement).bind("scroll", updateScrollPosition);
//TODO nick - use end() or alike functions
jQuery(element).children(".rich-extable-header").find(".rich-extable-resizer").bind("mousedown", beginResize);
jQuery(element).children(".rich-extable-header").find(".rich-extable-header-cell").bind("mousedown", beginReorder);
Modified: root/ui-sandbox/tables/trunk/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java 2010-05-20 15:11:06 UTC (rev 17165)
+++ root/ui-sandbox/tables/trunk/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java 2010-05-20 16:21:07 UTC (rev 17166)
@@ -34,7 +34,7 @@
*/
public class ExtendedDataTableRendererTest {
- private HtmlUnitEnvironment environment = new HtmlUnitEnvironment();
+ private HtmlUnitEnvironment environment;
@Before
public void setUp() {
14 years, 1 month
JBoss Rich Faces SVN: r17165 - root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-05-20 11:11:06 -0400 (Thu, 20 May 2010)
New Revision: 17165
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
Log:
https://jira.jboss.org/browse/RF-8629
https://jira.jboss.org/browse/RF-8630
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 15:09:42 UTC (rev 17164)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 15:11:06 UTC (rev 17165)
@@ -35,7 +35,6 @@
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTableBase;
import org.richfaces.component.UISubTable;
-import org.richfaces.context.OnOffResponseWriter;
@ResourceDependencies(value = { @ResourceDependency(library = "javax.faces", name = "jsf.js"),
@ResourceDependency(name = "jquery.js"), @ResourceDependency(name = "richfaces.js"), @ResourceDependency(name = "richfaces-event.js")})
@@ -99,7 +98,7 @@
encodeTableStructure(writer, context, dataTable);
String id = dataTable.getClientId(context);
- put(context, id, CELL_ELEMENT_KEY, HTML.TH_ELEM);
+ setupTableStartElement(context, dataTable);
encodeHeaderFacet(writer, context, dataTable, false);
encodeFooterFacet(writer, context, dataTable, false);
put(context, id, CELL_ELEMENT_KEY, HTML.TD_ELEM);
@@ -188,7 +187,7 @@
boolean encodeTfoot = containsThead();
if (encodeTfoot) {
- String footerClientId = dataTable.getClientId(context) + ":footer";
+ String footerClientId = dataTable.getClientId(context) + ":tf";
if (encodePartialUpdate) {
partialUpdateEncoded = true;
@@ -218,7 +217,7 @@
saveRowStyles(context,id, firstClass, rowClass, cellClass);
- String targetId = id + ":colsFooter";
+ String targetId = id + ":cf";
if (encodePartialUpdateForChildren) {
context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
@@ -290,7 +289,7 @@
boolean partialUpdateEncoded = false;
if (encodeThead) {
- String headerClientId = dataTable.getClientId(context) + ":header";
+ String headerClientId = dataTable.getClientId(context) + ":th";
if (encodePartialUpdate) {
partialUpdateEncoded = true;
@@ -332,7 +331,7 @@
firstClass = mergeStyleClasses("columnHeaderFirstClass", firstClass, dataTable);
saveRowStyles(context, id, firstClass, rowClass, cellClass);
- String targetId = id + ":colsHeader";
+ String targetId = id + ":ch";
if (encodePartialUpdateForChildren) {
context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
@@ -417,7 +416,7 @@
boolean partialUpdateEncoded = false;
if (!isColumnGroup) {
- String targetId = id + ":" + facetName;
+ String targetId = id + ":" + facetName.charAt(0);
if (encodePartialUpdate) {
partialUpdateEncoded = true;
@@ -496,28 +495,21 @@
public abstract String getCellSkinClass();
+ protected abstract void setupTableStartElement(FacesContext context, UIComponent component);
+
public void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId)
throws IOException {
- ResponseWriter initialWriter = context.getResponseWriter();
- assert !(initialWriter instanceof OnOffResponseWriter);
-
- try {
- context.setResponseWriter(new OnOffResponseWriter(initialWriter));
-
- UIDataTableBase table = (UIDataTableBase) component;
-
- if (UIDataTableBase.HEADER.equals(metaComponentId)) {
- encodeHeaderFacet(context.getResponseWriter(), context, table, true);
- } else if (UIDataTableBase.FOOTER.equals(metaComponentId)) {
- encodeFooterFacet(context.getResponseWriter(), context, table, true);
-// } else if (UIDataTableBase.BODY.equals(metaComponentId)) {
-// encodeBody(state);
- } else {
- throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
- }
- } finally {
- context.setResponseWriter(initialWriter);
+ UIDataTableBase table = (UIDataTableBase) component;
+
+ setupTableStartElement(context, component);
+
+ if (UIDataTableBase.HEADER.equals(metaComponentId)) {
+ encodeHeaderFacet(context.getResponseWriter(), context, table, true);
+ } else if (UIDataTableBase.FOOTER.equals(metaComponentId)) {
+ encodeFooterFacet(context.getResponseWriter(), context, table, true);
+ } else {
+ throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
}
}
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-05-20 15:09:42 UTC (rev 17164)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-05-20 15:11:06 UTC (rev 17165)
@@ -415,4 +415,9 @@
public String getFooterCellSkinClass() {
return "rich-table-footer-cell";
}
+
+ protected void setupTableStartElement(FacesContext context, UIComponent component) {
+ put(context, component.getClientId(context), CELL_ELEMENT_KEY, HTML.TH_ELEM);
+ }
+
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 15:09:42 UTC (rev 17164)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 15:11:06 UTC (rev 17165)
@@ -89,7 +89,7 @@
@Override
public void encodeTableStart(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
- put(context, dataTable.getClientId(context), CELL_ELEMENT_KEY, HTML.TD_ELEM);
+ setupTableStartElement(context, dataTable);
UISubTable subTable = (UISubTable)dataTable;
encodeTableBodyStart(writer, context, subTable);
}
@@ -265,4 +265,8 @@
public String getHeaderSkinClass() {
return "rich-subtable-header";
}
+
+ protected void setupTableStartElement(FacesContext context, UIComponent component) {
+ put(context, component.getClientId(context), CELL_ELEMENT_KEY, HTML.TD_ELEM);
+ }
}
14 years, 1 month
JBoss Rich Faces SVN: r17164 - root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-05-20 11:09:42 -0400 (Thu, 20 May 2010)
New Revision: 17164
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
Log:
display: none instaed of visibility: hidden
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:54:00 UTC (rev 17163)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 15:09:42 UTC (rev 17164)
@@ -136,7 +136,7 @@
public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
//encode DataTable client script
writer.startElement(HTML.TBOBY_ELEMENT, component);
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "visibility: hidden", null);
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "display: none", null);
writer.startElement(HTML.TR_ELEMENT, component);
writer.startElement(HTML.TD_ELEM, component);
@@ -151,7 +151,6 @@
writer.endElement(HTML.TABLE_ELEMENT);
}
-
public abstract void encodeClientScript(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException;
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 14:54:00 UTC (rev 17163)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 15:09:42 UTC (rev 17164)
@@ -121,7 +121,7 @@
encodeFooterFacet(writer, facesContext, subTable, false);
writer.startElement(HTML.TR_ELEMENT, component);
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "visibility: hidden", null);
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "display: none", null);
writer.startElement(HTML.TD_ELEM, component);
encodeStateInput(writer, facesContext, subTable);
14 years, 1 month
JBoss Rich Faces SVN: r17163 - in root/examples/richfaces-showcase/trunk/src/main: java/org/richfaces/demo/common and 6 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: ilya_shaikovsky
Date: 2010-05-20 10:54:00 -0400 (Thu, 20 May 2010)
New Revision: 17163
Added:
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/common/data/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/common/data/RandomHelper.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/Capital.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsBean.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsParser.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/CarsBean.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryItem.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorItem.java
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorList.java
Removed:
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/capitals/
root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/carsstore/
Modified:
root/examples/richfaces-showcase/trunk/src/main/webapp/richfaces/dataTable/simpleTable.xhtml
Log:
https://jira.jboss.org/browse/RF-8290
+ refactoring.
Added: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/common/data/RandomHelper.java
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/common/data/RandomHelper.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/common/data/RandomHelper.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,33 @@
+package org.richfaces.demo.common.data;
+
+import java.util.Random;
+
+public class RandomHelper {
+
+ public static int genRand() {
+ return rand(1, 10000);
+ }
+
+ public static int rand(int lo, int hi) {
+ Random rn2 = new Random();
+ int n = hi - lo + 1;
+ int i = rn2.nextInt() % n;
+
+ if (i < 0) {
+ i = -i;
+ }
+
+ return lo + i;
+ }
+
+ public static String randomstring(int lo, int hi) {
+ int n = rand(lo, hi);
+ byte[] b = new byte[n];
+
+ for (int i = 0; i < n; i++) {
+ b[i] = (byte) rand('A', 'Z');
+ }
+
+ return new String(b);
+ }
+}
Copied: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/Capital.java (from rev 17153, root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/capitals/Capital.java)
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/Capital.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/Capital.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,56 @@
+package org.richfaces.demo.tables.data.capitals;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlElement;
+
+public class Capital implements Serializable {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1042449580199397136L;
+
+ private static final String FILE_EXT = ".gif";
+
+ private String name;
+ private String state;
+ private String timeZone;
+
+ public Capital() {
+ }
+
+ @XmlElement
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @XmlElement
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ private String stateNameToFileName() {
+ return state.replaceAll("\\s", "").toLowerCase();
+ }
+
+ public String getStateFlag() {
+ return "/images/capitals/" + stateNameToFileName() + FILE_EXT;
+ }
+
+ @XmlElement
+ public String getTimeZone() {
+ return timeZone;
+ }
+
+ public void setTimeZone(String timeZone) {
+ this.timeZone = timeZone;
+ }
+}
Copied: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsBean.java (from rev 17153, root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/capitals/CapitalsBean.java)
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsBean.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsBean.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,29 @@
+package org.richfaces.demo.tables.data.capitals;
+
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+
+@ManagedBean
+@SessionScoped
+public class CapitalsBean {
+
+ @ManagedProperty(value = "#{capitalsParser.capitalsList}")
+ private List<Capital> capitals;
+
+ public CapitalsBean() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public List<Capital> getCapitals() {
+ return capitals;
+ }
+
+ public void setCapitals(List<Capital> capitals) {
+ this.capitals = capitals;
+ }
+
+
+}
Copied: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsParser.java (from rev 17153, root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/capitals/CapitalsParser.java)
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsParser.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/capitals/CapitalsParser.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,52 @@
+package org.richfaces.demo.tables.data.capitals;
+
+import java.net.URL;
+import java.util.List;
+
+import javax.faces.FacesException;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@ManagedBean
+@ApplicationScoped
+public class CapitalsParser {
+
+ private List<Capital> capitalsList;
+
+ @XmlRootElement(name = "capitals")
+ private static final class CapitalsHolder {
+
+ private List<Capital> capitals;
+
+ @XmlElement(name = "capital")
+ public List<Capital> getCapitals() {
+ return capitals;
+ }
+
+ @SuppressWarnings("unused")
+ public void setCapitals(List<Capital> capitals) {
+ this.capitals = capitals;
+ }
+ }
+
+ public synchronized List<Capital> getCapitalsList() {
+ if (capitalsList == null) {
+ ClassLoader ccl = Thread.currentThread().getContextClassLoader();
+ URL resource = ccl.getResource("org/richfaces/demo/data/capitals/capitals.xml");
+ JAXBContext context;
+ try {
+ context = JAXBContext.newInstance(CapitalsHolder.class);
+ CapitalsHolder capitalsHolder = (CapitalsHolder) context.createUnmarshaller().unmarshal(resource);
+ capitalsList = capitalsHolder.getCapitals();
+ } catch (JAXBException e) {
+ throw new FacesException(e.getMessage(), e);
+ }
+ }
+
+ return capitalsList;
+ }
+}
Copied: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/CarsBean.java (from rev 17153, root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/carsstore/CarsBean.java)
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/CarsBean.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/CarsBean.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,178 @@
+/**
+ *
+ */
+package org.richfaces.demo.tables.data.carstore;
+
+import java.math.BigDecimal;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+import javax.faces.model.SelectItem;
+
+import org.richfaces.demo.common.data.RandomHelper;
+
+@ManagedBean(name = "carsBean")
+@SessionScoped
+public class CarsBean {
+ private static final int DECIMALS = 1;
+ private static final int ROUNDING_MODE = BigDecimal.ROUND_HALF_UP;
+ private List<InventoryItem> allInventoryItems = null;
+ private List<InventoryVendorList> inventoryVendorLists = null;
+
+ public List<InventoryVendorList> getInventoryVendorLists() {
+ synchronized (this) {
+ if (inventoryVendorLists == null){
+ inventoryVendorLists = new ArrayList<InventoryVendorList>();
+ List<InventoryItem> inventoryItems = getAllInventoryItems();
+
+ Collections.sort(inventoryItems, new Comparator<InventoryItem>() {
+ public int compare(InventoryItem o1, InventoryItem o2) {
+ if (o1.getVendor().equals(o2.getVendor())){
+ return 0;
+ }
+ return 1;
+ }
+ });
+ Iterator<InventoryItem> iterator = inventoryItems.iterator();
+ InventoryVendorList vendorList = new InventoryVendorList();
+ vendorList.setVendor(inventoryItems.get(0).getVendor());
+ while (iterator.hasNext()){
+ InventoryItem item = iterator.next();
+ InventoryVendorItem newItem = new InventoryVendorItem();
+ itemToVendorItem(item, newItem);
+ if (!item.getVendor().equals(vendorList.getVendor())){
+ inventoryVendorLists.add(vendorList);
+ vendorList = new InventoryVendorList();
+ vendorList.setVendor(item.getVendor());
+ }
+ vendorList.getVendorItems().add(newItem);
+ }
+ inventoryVendorLists.add(vendorList);
+ }
+ }
+ return inventoryVendorLists;
+ }
+
+ private void itemToVendorItem(InventoryItem item, InventoryVendorItem newItem) {
+ newItem.setActivity(item.getActivity());
+ newItem.setChangePrice(item.getChangePrice());
+ newItem.setChangeSearches(item.getChangeSearches());
+ newItem.setDaysLive(item.getDaysLive());
+ newItem.setExposure(item.getExposure());
+ newItem.setInquiries(item.getInquiries());
+ newItem.setMileage(item.getMileage());
+ newItem.setMileageMarket(item.getMileageMarket());
+ newItem.setModel(item.getModel());
+ newItem.setPrice(item.getPrice());
+ newItem.setPriceMarket(item.getPriceMarket());
+ newItem.setPrinted(item.getPrinted());
+ newItem.setStock(item.getStock());
+ newItem.setVin(item.getVin());
+ }
+
+ public List<InventoryItem> getAllInventoryItems() {
+ synchronized (this) {
+ if (allInventoryItems == null) {
+ allInventoryItems = new ArrayList<InventoryItem>();
+
+ for (int k = 0; k <= 5; k++) {
+ try {
+ switch (k) {
+ case 0:
+ allInventoryItems.addAll(createCar("Chevrolet", "Corvette", 5));
+ allInventoryItems.addAll(createCar("Chevrolet", "Malibu", 8));
+ allInventoryItems.addAll(createCar("Chevrolet", "Tahoe", 6));
+
+ break;
+
+ case 1:
+ allInventoryItems.addAll(createCar("Ford", "Taurus", 12));
+ allInventoryItems.addAll(createCar("Ford", "Explorer", 11));
+
+ break;
+
+ case 2:
+ allInventoryItems.addAll(createCar("Nissan", "Maxima", 9));
+ allInventoryItems.addAll(createCar("Nissan", "Frontier", 6));
+
+ break;
+
+ case 3:
+ allInventoryItems.addAll(createCar("Toyota", "4-Runner", 7));
+ allInventoryItems.addAll(createCar("Toyota", "Camry", 15));
+ allInventoryItems.addAll(createCar("Toyota", "Avalon", 13));
+
+ break;
+
+ case 4:
+ allInventoryItems.addAll(createCar("GMC", "Sierra", 8));
+ allInventoryItems.addAll(createCar("GMC", "Yukon", 10));
+
+ break;
+
+ case 5:
+ allInventoryItems.addAll(createCar("Infiniti", "G35", 6));
+ allInventoryItems.addAll(createCar("Infiniti", "EX35", 5));
+
+ break;
+
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ System.out.println("!!!!!!loadallInventoryItems Error: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ return allInventoryItems;
+ }
+
+ public List<InventoryItem> createCar(String vendor, String model, int count) {
+ ArrayList<InventoryItem> iiList = null;
+
+ try {
+ int arrayCount = count;
+ InventoryItem[] demoInventoryItemArrays = new InventoryItem[arrayCount];
+
+ for (int j = 0; j < demoInventoryItemArrays.length; j++) {
+ InventoryItem ii = new InventoryItem();
+
+ ii.setVendor(vendor);
+ ii.setModel(model);
+ ii.setStock(RandomHelper.randomstring(6, 7));
+ ii.setVin(RandomHelper.randomstring(14, 15));
+ ii.setMileage(new BigDecimal(RandomHelper.rand(5000, 80000)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setMileageMarket(new BigDecimal(RandomHelper.rand(25000, 45000)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setPrice(new Integer(RandomHelper.rand(15000, 55000)));
+ ii.setPriceMarket(new BigDecimal(RandomHelper.rand(15000, 55000)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setDaysLive(RandomHelper.rand(1, 90));
+ ii.setChangeSearches(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setChangePrice(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setExposure(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setActivity(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setPrinted(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ ii.setInquiries(new BigDecimal(RandomHelper.rand(0, 5)).setScale(DECIMALS, ROUNDING_MODE));
+ demoInventoryItemArrays[j] = ii;
+ }
+
+ iiList = new ArrayList<InventoryItem>(Arrays.asList(demoInventoryItemArrays));
+ } catch (Exception e) {
+ System.out.println("!!!!!!createCategory Error: " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ return iiList;
+ }
+}
Copied: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryItem.java (from rev 17153, root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java)
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryItem.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryItem.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,13 @@
+package org.richfaces.demo.tables.data.carstore;
+
+public class InventoryItem extends InventoryVendorItem {
+ public String vendor;
+
+ public String getVendor() {
+ return vendor;
+ }
+
+ public void setVendor(String vendor) {
+ this.vendor = vendor;
+ }
+}
Added: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorItem.java
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorItem.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorItem.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,132 @@
+package org.richfaces.demo.tables.data.carstore;
+
+import java.math.BigDecimal;
+
+public class InventoryVendorItem {
+ BigDecimal activity;
+ BigDecimal changePrice;
+ BigDecimal changeSearches;
+ int daysLive;
+ BigDecimal exposure;
+ BigDecimal inquiries;
+ BigDecimal mileage;
+ BigDecimal mileageMarket;
+ String model;
+ Integer price;
+ BigDecimal priceMarket;
+ BigDecimal printed;
+ String stock;
+ String vin;
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getStock() {
+ return stock;
+ }
+
+ public void setStock(String stock) {
+ this.stock = stock;
+ }
+
+ public String getVin() {
+ return vin;
+ }
+
+ public void setVin(String vin) {
+ this.vin = vin;
+ }
+
+ public BigDecimal getMileage() {
+ return mileage;
+ }
+
+ public void setMileage(BigDecimal mileage) {
+ this.mileage = mileage;
+ }
+
+ public BigDecimal getMileageMarket() {
+ return mileageMarket;
+ }
+
+ public void setMileageMarket(BigDecimal mileageMarket) {
+ this.mileageMarket = mileageMarket;
+ }
+
+ public Integer getPrice() {
+ return price;
+ }
+
+ public void setPrice(Integer price) {
+ this.price = price;
+ }
+
+ public BigDecimal getPriceMarket() {
+ return priceMarket;
+ }
+
+ public void setPriceMarket(BigDecimal priceMarket) {
+ this.priceMarket = priceMarket;
+ }
+
+ public int getDaysLive() {
+ return daysLive;
+ }
+
+ public void setDaysLive(int daysLive) {
+ this.daysLive = daysLive;
+ }
+
+ public BigDecimal getChangeSearches() {
+ return changeSearches;
+ }
+
+ public void setChangeSearches(BigDecimal changeSearches) {
+ this.changeSearches = changeSearches;
+ }
+
+ public BigDecimal getChangePrice() {
+ return changePrice;
+ }
+
+ public void setChangePrice(BigDecimal changePrice) {
+ this.changePrice = changePrice;
+ }
+
+ public BigDecimal getExposure() {
+ return exposure;
+ }
+
+ public void setExposure(BigDecimal exposure) {
+ this.exposure = exposure;
+ }
+
+ public BigDecimal getActivity() {
+ return activity;
+ }
+
+ public void setActivity(BigDecimal activity) {
+ this.activity = activity;
+ }
+
+ public BigDecimal getPrinted() {
+ return printed;
+ }
+
+ public void setPrinted(BigDecimal printed) {
+ this.printed = printed;
+ }
+
+ public BigDecimal getInquiries() {
+ return inquiries;
+ }
+
+ public void setInquiries(BigDecimal inquiries) {
+ this.inquiries = inquiries;
+ }
+}
Added: root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorList.java
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorList.java (rev 0)
+++ root/examples/richfaces-showcase/trunk/src/main/java/org/richfaces/demo/tables/data/carstore/InventoryVendorList.java 2010-05-20 14:54:00 UTC (rev 17163)
@@ -0,0 +1,29 @@
+package org.richfaces.demo.tables.data.carstore;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class InventoryVendorList {
+ private String vendor;
+ private List<InventoryVendorItem> vendorItems;
+
+ public InventoryVendorList() {
+ vendorItems = new ArrayList<InventoryVendorItem>();
+ }
+
+ public String getVendor() {
+ return vendor;
+ }
+
+ public void setVendor(String vendor) {
+ this.vendor = vendor;
+ }
+
+ public List<InventoryVendorItem> getVendorItems() {
+ return vendorItems;
+ }
+
+ public void setVendorItems(List<InventoryVendorItem> vendorItems) {
+ this.vendorItems = vendorItems;
+ }
+}
Modified: root/examples/richfaces-showcase/trunk/src/main/webapp/richfaces/dataTable/simpleTable.xhtml
===================================================================
--- root/examples/richfaces-showcase/trunk/src/main/webapp/richfaces/dataTable/simpleTable.xhtml 2010-05-20 14:47:37 UTC (rev 17162)
+++ root/examples/richfaces-showcase/trunk/src/main/webapp/richfaces/dataTable/simpleTable.xhtml 2010-05-20 14:54:00 UTC (rev 17163)
@@ -8,18 +8,52 @@
<ui:composition>
<h:form>
- <tbl:extendedDataTable frozenColumns="1" value="#{capitalsBean.capitals}" rows="100" var="cap" id="table" clientRows="50" style="width:300px; height:300px;">
- <tbl:column>
- <f:facet name="header">
- <h:outputText value="name" />
- </f:facet>
- <h:outputText value="#{cap.name}"/>
- <f:facet name="footer">
- remove this also to check
- </f:facet>
+ <tbl:dataTable value="#{carsBean.inventoryVendorLists}" var="list">
+ <f:facet name="header">
+ <h:outputText value="Cars marketplace"/>
+ </f:facet>
+ <tbl:column colspan="3">
+ <h:outputText value="#{list.vendor}" />
</tbl:column>
- </tbl:extendedDataTable>
- <a4j:commandButton execute="@this" render="table" value="table"></a4j:commandButton>
+ <tbl:subTable value="#{list.vendorItems}" var="item">
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="Model" />
+ </f:facet>
+ <h:outputText value="#{item.model}" />
+ </tbl:column>
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="Price" />
+ </f:facet>
+ <h:outputText value="#{item.price}" />
+ </tbl:column>
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="Mileage" />
+ </f:facet>
+ <h:outputText value="#{item.mileage}" />
+ </tbl:column>
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="VIN Code" />
+ </f:facet>
+ <h:outputText value="#{item.vin}" />
+ </tbl:column>
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="Items stock" />
+ </f:facet>
+ <h:outputText value="#{item.stock}" />
+ </tbl:column>
+ <tbl:column>
+ <f:facet name="header">
+ <h:outputText value="Days Live" />
+ </f:facet>
+ <h:outputText value="#{item.daysLive}" />
+ </tbl:column>
+ </tbl:subTable>
+ </tbl:dataTable>
</h:form>
</ui:composition>
</html>
\ No newline at end of file
14 years, 1 month
JBoss Rich Faces SVN: r17162 - root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-05-20 10:47:37 -0400 (Thu, 20 May 2010)
New Revision: 17162
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
Log:
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:37:49 UTC (rev 17161)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:47:37 UTC (rev 17162)
@@ -134,6 +134,7 @@
}
public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
+ //encode DataTable client script
writer.startElement(HTML.TBOBY_ELEMENT, component);
writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "visibility: hidden", null);
@@ -146,6 +147,7 @@
writer.endElement(HTML.TR_ELEMENT);
writer.endElement(HTML.TBOBY_ELEMENT);
+
writer.endElement(HTML.TABLE_ELEMENT);
}
14 years, 1 month
JBoss Rich Faces SVN: r17161 - root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-05-20 10:37:49 -0400 (Thu, 20 May 2010)
New Revision: 17161
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
Log:
encode script inside hidden <tbody>/<tr>
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:19:33 UTC (rev 17160)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:37:49 UTC (rev 17161)
@@ -134,7 +134,18 @@
}
public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
+ writer.startElement(HTML.TBOBY_ELEMENT, component);
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "visibility: hidden", null);
+
+ writer.startElement(HTML.TR_ELEMENT, component);
+ writer.startElement(HTML.TD_ELEM, component);
+
encodeClientScript(writer, context, component);
+
+ writer.endElement(HTML.TD_ELEM);
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+
writer.endElement(HTML.TABLE_ELEMENT);
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 14:19:33 UTC (rev 17160)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 14:37:49 UTC (rev 17161)
@@ -119,8 +119,17 @@
UISubTable subTable = (UISubTable)component;
encodeFooterFacet(writer, facesContext, subTable, false);
+
+ writer.startElement(HTML.TR_ELEMENT, component);
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "visibility: hidden", null);
+ writer.startElement(HTML.TD_ELEM, component);
+
encodeStateInput(writer, facesContext, subTable);
encodeClientScript(writer, facesContext, subTable);
+
+ writer.endElement(HTML.TD_ELEM);
+ writer.endElement(HTML.TR_ELEMENT);
+
encodeTableBodyEnd(writer, facesContext, subTable);
}
14 years, 1 month
JBoss Rich Faces SVN: r17160 - in root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces: renderkit and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-05-20 10:19:33 -0400 (Thu, 20 May 2010)
New Revision: 17160
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
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/SubTableRenderer.java
Log:
https://jira.jboss.org/browse/RF-8629
https://jira.jboss.org/browse/RF-8630
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-05-20 13:45:30 UTC (rev 17159)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-05-20 14:19:33 UTC (rev 17160)
@@ -22,17 +22,27 @@
package org.richfaces.component;
+import java.io.IOException;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.faces.component.UIComponent;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitResult;
import javax.faces.context.FacesContext;
+import javax.faces.event.PreRenderComponentEvent;
import org.ajax4jsf.model.ExtendedDataModel;
+import org.richfaces.context.ExtendedVisitContext;
+import org.richfaces.context.ExtendedVisitContextMode;
+import org.richfaces.log.RichfacesLogger;
import org.richfaces.model.Arrangeable;
import org.richfaces.model.ArrangeableModel;
import org.richfaces.model.ArrangeableState;
@@ -40,14 +50,29 @@
import org.richfaces.model.FilterField;
import org.richfaces.model.SortField;
import org.richfaces.model.SortMode;
+import org.richfaces.renderkit.MetaComponentRenderer;
+import org.slf4j.Logger;
-public class UIDataTableBase extends UISequence implements Row {
+public class UIDataTableBase extends UISequence implements Row, MetaComponentResolver, MetaComponentEncoder {
+ public static final String HEADER = "header";
+ public static final String FOOTER = "footer";
+ public static final String BODY = "body";
+
+ private static final Logger RENDERKIT_LOG = RichfacesLogger.RENDERKIT.getLogger();
+
+ private static final Set<String> SUPPORTED_META_COMPONENTS = new HashSet<String>();
+
+ static {
+ SUPPORTED_META_COMPONENTS.add(HEADER);
+ SUPPORTED_META_COMPONENTS.add(FOOTER);
+ SUPPORTED_META_COMPONENTS.add(BODY);
+ }
+
protected enum PropertyKeys {
filterVar, sortPriority, sortMode, first, rows, noDataLabel
}
-
public Iterator<UIComponent> columns() {
return new DataTableColumnsIterator(this);
}
@@ -177,4 +202,86 @@
public void setSortMode(SortMode sortMode) {
getStateHelper().put(PropertyKeys.sortMode, sortMode);
}
+
+ public String resolveClientId(FacesContext facesContext, UIComponent contextComponent, String metaComponentId) {
+ if (SUPPORTED_META_COMPONENTS.contains(metaComponentId)) {
+ Object oldRowKey = getRowKey();
+
+ try {
+ setRowKey(facesContext, null);
+ return getClientId(facesContext) + MetaComponentResolver.META_COMPONENT_SEPARATOR_CHAR + metaComponentId;
+ } finally {
+ try {
+ setRowKey(facesContext, oldRowKey);
+ } catch (Exception e) {
+ RENDERKIT_LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public void encodeMetaComponent(FacesContext context, String metaComponentId) throws IOException {
+ context.getApplication().publishEvent(context, PreRenderComponentEvent.class, this);
+
+ MetaComponentRenderer renderer = (MetaComponentRenderer) getRenderer(context);
+ renderer.encodeMetaComponent(context, this, metaComponentId);
+ }
+
+ @Override
+ protected boolean visitFixedChildren(VisitContext visitContext, VisitCallback callback) {
+ if (visitContext instanceof ExtendedVisitContext) {
+ ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) visitContext;
+
+ if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
+ //TODO nick - call preEncodeBegin(...) and emit PreRenderEvent
+ VisitResult visitResult;
+
+ visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, HEADER);
+
+ if (visitResult == VisitResult.ACCEPT) {
+ //TODO nick - visit header?
+ } else if (visitResult == VisitResult.COMPLETE) {
+ return true;
+ }
+
+ visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, FOOTER);
+
+ if (visitResult == VisitResult.ACCEPT) {
+ //TODO nick - visit footer?
+ } else if (visitResult == VisitResult.COMPLETE) {
+ return true;
+ }
+
+ if (visitResult == VisitResult.REJECT) {
+ return false;
+ }
+ }
+ }
+
+ return super.visitFixedChildren(visitContext, callback);
+ }
+
+ @Override
+ protected boolean visitDataChildren(VisitContext visitContext, final VisitCallback callback, boolean visitRows) {
+ if (visitContext instanceof ExtendedVisitContext && visitRows) {
+ ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) visitContext;
+
+ if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
+ //TODO nick - call preEncodeBegin(...) and emit PreRenderEvent
+ setRowKey(visitContext.getFacesContext(), null);
+
+ VisitResult result = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, BODY);
+
+ if (result == VisitResult.ACCEPT) {
+ //TODO nick - visit body?
+ } else {
+ return result == VisitResult.COMPLETE;
+ }
+ }
+ }
+
+ return super.visitDataChildren(visitContext, callback, visitRows);
+ }
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2010-05-20 13:45:30 UTC (rev 17159)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2010-05-20 14:19:33 UTC (rev 17160)
@@ -23,9 +23,7 @@
package org.richfaces.component;
import java.io.IOException;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
@@ -39,7 +37,6 @@
import org.richfaces.context.ExtendedVisitContext;
import org.richfaces.context.ExtendedVisitContextMode;
import org.richfaces.log.RichfacesLogger;
-import org.richfaces.renderkit.MetaComponentRenderer;
import org.slf4j.Logger;
@@ -50,30 +47,18 @@
public class UIExtendedDataTable extends UIDataTableBase implements MetaComponentResolver, MetaComponentEncoder {
public static final String SCROLL = "scroll";
- public static final String HEADER = "header";
- public static final String FOOTER = "footer";
- public static final String BODY = "body";
public static final String SUBMITTED_CLIENT_FIRST = "submittedClientFirst";
public static final String OLD_CLIENT_FIRST = "oldClientFirst";
private static final Logger RENDERKIT_LOG = RichfacesLogger.RENDERKIT.getLogger();
- private static final Set<String> SUPPORTED_META_COMPONENTS = new HashSet<String>();
-
- static {
- SUPPORTED_META_COMPONENTS.add(SCROLL);
- SUPPORTED_META_COMPONENTS.add(HEADER);
- SUPPORTED_META_COMPONENTS.add(FOOTER);
- SUPPORTED_META_COMPONENTS.add(BODY);
- }
-
protected enum PropertyKeys {
clientFirst, clientRows
}
-
+
public String resolveClientId(FacesContext facesContext, UIComponent contextComponent, String metaComponentId) {
- if (SUPPORTED_META_COMPONENTS.contains(metaComponentId)) {
+ if (SCROLL.equals(metaComponentId)) {
Object oldRowKey = getRowKey();
try {
@@ -88,64 +73,23 @@
}
}
- return null;
+ return super.resolveClientId(facesContext, contextComponent, metaComponentId);
}
-
+
public void encodeMetaComponent(FacesContext context, String metaComponentId) throws IOException {
- if (SUPPORTED_META_COMPONENTS.contains(metaComponentId)) {
-
- if (SCROLL.equals(metaComponentId)) {
- Map<String, Object> attributes = getAttributes();
- Integer submittedClientFirst = (Integer) attributes.remove(SUBMITTED_CLIENT_FIRST);
- if (submittedClientFirst != null) {
- attributes.put(OLD_CLIENT_FIRST, getClientFirst());
- setClientFirst(submittedClientFirst);
- }
+ if (SCROLL.equals(metaComponentId)) {
+ Map<String, Object> attributes = getAttributes();
+ Integer submittedClientFirst = (Integer) attributes.remove(SUBMITTED_CLIENT_FIRST);
+ if (submittedClientFirst != null) {
+ attributes.put(OLD_CLIENT_FIRST, getClientFirst());
+ setClientFirst(submittedClientFirst);
}
-
- MetaComponentRenderer renderer = (MetaComponentRenderer) getRenderer(context);
- renderer.encodeMetaComponent(context, this, metaComponentId);
- }
+ }
+
+ super.encodeMetaComponent(context, metaComponentId);
}
- /* (non-Javadoc)
- * @see org.richfaces.component.UIDataAdaptor#visitFixedChildren(javax.faces.component.visit.VisitContext, javax.faces.component.visit.VisitCallback, boolean)
- */
@Override
- protected boolean visitFixedChildren(VisitContext visitContext, VisitCallback callback) {
- if (visitContext instanceof ExtendedVisitContext) {
- ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) visitContext;
-
- if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
- //TODO nick - call preEncodeBegin(...) and emit PreRenderEvent
- VisitResult visitResult;
-
- visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, HEADER);
-
- if (visitResult == VisitResult.ACCEPT) {
- //TODO nick - visit header?
- } else if (visitResult == VisitResult.COMPLETE) {
- return true;
- }
-
- visitResult = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, FOOTER);
-
- if (visitResult == VisitResult.ACCEPT) {
- //TODO nick - visit footer?
- } else if (visitResult == VisitResult.COMPLETE) {
- return true;
- }
-
- if (visitResult == VisitResult.REJECT) {
- return false;
- }
- }
- }
-
- return super.visitFixedChildren(visitContext, callback);
- }
-
- @Override
protected boolean visitDataChildren(VisitContext visitContext, final VisitCallback callback, boolean visitRows) {
if (visitContext instanceof ExtendedVisitContext && visitRows) {
ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) visitContext;
@@ -163,20 +107,6 @@
} else if (result == VisitResult.COMPLETE) {
return true;
}
-
- //TODO nick - scroll vs body?
-
- result = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, BODY);
-
- if (result == VisitResult.ACCEPT) {
- //TODO nick - visit body?
- } else if (result == VisitResult.COMPLETE) {
- return true;
- }
-
- if (result == VisitResult.REJECT) {
- return false;
- }
}
}
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 13:45:30 UTC (rev 17159)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-20 14:19:33 UTC (rev 17160)
@@ -35,10 +35,11 @@
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTableBase;
import org.richfaces.component.UISubTable;
+import org.richfaces.context.OnOffResponseWriter;
@ResourceDependencies(value = { @ResourceDependency(library = "javax.faces", name = "jsf.js"),
@ResourceDependency(name = "jquery.js"), @ResourceDependency(name = "richfaces.js"), @ResourceDependency(name = "richfaces-event.js")})
-public abstract class AbstractTableRenderer extends AbstractTableBaseRenderer {
+public abstract class AbstractTableRenderer extends AbstractTableBaseRenderer implements MetaComponentRenderer {
public static final String ROW_CLASS = "rowClass";
@@ -99,8 +100,8 @@
String id = dataTable.getClientId(context);
put(context, id, CELL_ELEMENT_KEY, HTML.TH_ELEM);
- encodeHeaderFacet(writer, context, dataTable);
- encodeFooterFacet(writer, context, dataTable);
+ encodeHeaderFacet(writer, context, dataTable, false);
+ encodeFooterFacet(writer, context, dataTable, false);
put(context, id, CELL_ELEMENT_KEY, HTML.TD_ELEM);
dataTable.setRowKey(context, key);
dataTable.restoreOrigValue(context);
@@ -164,21 +165,34 @@
public abstract RowHolderBase createRowHolder(FacesContext context, UIComponent component);
- public void encodeFooterFacet(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+ public void encodeFooterFacet(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable,
+ boolean encodePartialUpdate) throws IOException {
UIComponent footer = dataTable.getFooter();
boolean columnFacetPresent = dataTable.isColumnFacetPresent("footer");
if ((footer != null && footer.isRendered()) || columnFacetPresent) {
+ boolean partialUpdateEncoded = false;
+
boolean encodeTfoot = containsThead();
if (encodeTfoot) {
+ String footerClientId = dataTable.getClientId(context) + ":footer";
+
+ if (encodePartialUpdate) {
+ partialUpdateEncoded = true;
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(footerClientId);
+ }
+
writer.startElement(HTML.TFOOT_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, footerClientId, null);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-tfoot", null);
}
int columns = getColumnsCount(dataTable);
String id = dataTable.getClientId(context);
+ boolean encodePartialUpdateForChildren = (encodePartialUpdate && !partialUpdateEncoded);
+
if (columnFacetPresent) {
@@ -192,10 +206,22 @@
saveRowStyles(context,id, firstClass, rowClass, cellClass);
+ String targetId = id + ":colsFooter";
+
+ if (encodePartialUpdateForChildren) {
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
+ }
+
writer.startElement(HTML.TR_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, targetId, null);
+
encodeStyleClass(writer, context, dataTable, null, rowClass);
encodeColumnFacet(context, writer, dataTable, "footer",columns, cellClass);
writer.endElement(HTML.TR_ELEMENT);
+
+ if (encodePartialUpdateForChildren) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
if (footer != null && footer.isRendered()) {
@@ -209,11 +235,16 @@
firstClass = mergeStyleClasses("footerFirstClass", firstClass, dataTable);
// TODO nick - rename method "encodeTableHeaderFacet"
saveRowStyles(context, id, firstClass, rowClass, cellClass);
- encodeTableFacet(context, writer, id, columns, footer, "footer", rowClass, cellClass);
+ encodeTableFacet(context, writer, id, columns, footer, "footer", rowClass, cellClass,
+ encodePartialUpdateForChildren);
}
if (encodeTfoot) {
writer.endElement(HTML.TFOOT_ELEMENT);
+
+ if (partialUpdateEncoded) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
}
@@ -235,7 +266,8 @@
return resultClass;
}
- public void encodeHeaderFacet(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+ public void encodeHeaderFacet(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable,
+ boolean encodePartialUpdate) throws IOException {
UIComponent header = dataTable.getHeader();
boolean isEncodeHeaders = isEncodeHeaders(dataTable);
@@ -243,15 +275,26 @@
boolean encodeThead = containsThead();
if ((header != null && header.isRendered()) || isEncodeHeaders) {
+ boolean partialUpdateEncoded = false;
if (encodeThead) {
+ String headerClientId = dataTable.getClientId(context) + ":header";
+
+ if (encodePartialUpdate) {
+ partialUpdateEncoded = true;
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(headerClientId);
+ }
+
writer.startElement(HTML.THEAD_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, headerClientId, null);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-thead", null);
}
int columns = getColumnsCount(dataTable);
String id = dataTable.getClientId(context);
-
+
+ boolean encodePartialUpdateForChildren = (encodePartialUpdate && !partialUpdateEncoded);
+
if (header != null && header.isRendered()) {
String rowClass = getHeaderSkinClass();
@@ -263,11 +306,11 @@
firstClass = mergeStyleClasses("headerFirstClass", firstClass, dataTable);
saveRowStyles(context, id, firstClass, rowClass, cellClass);
- encodeTableFacet(context, writer, id, columns, header, "header", rowClass, cellClass);
+ encodeTableFacet(context, writer, id, columns, header, "header", rowClass, cellClass,
+ encodePartialUpdateForChildren);
}
if (isEncodeHeaders) {
-
String rowClass = getColumnHeaderSkinClass();
String cellClass = getColumnHeaderCellSkinClass();
String firstClass = getColumnHeaderFirstSkinClass();
@@ -277,15 +320,31 @@
firstClass = mergeStyleClasses("columnHeaderFirstClass", firstClass, dataTable);
saveRowStyles(context, id, firstClass, rowClass, cellClass);
+ String targetId = id + ":colsHeader";
+
+ if (encodePartialUpdateForChildren) {
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
+ }
+
writer.startElement(HTML.TR_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, targetId, null);
+
encodeStyleClass(writer, context, dataTable, null, rowClass);
encodeColumnFacet(context, writer, dataTable, "header", columns, cellClass);
writer.endElement(HTML.TR_ELEMENT);
+
+ if (encodePartialUpdateForChildren) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
if (encodeThead) {
writer.endElement(HTML.THEAD_ELEMENT);
+
+ if (partialUpdateEncoded) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
}
@@ -337,13 +396,24 @@
}
}
- protected void encodeTableFacet(FacesContext context,ResponseWriter writer, String id, int columns, UIComponent footer, String facetName, String rowClass, String cellClass) throws IOException {
+ protected void encodeTableFacet(FacesContext context, ResponseWriter writer, String id, int columns,
+ UIComponent footer, String facetName, String rowClass, String cellClass, boolean encodePartialUpdate) throws IOException {
boolean isColumnGroup = (footer instanceof Row);
String element = getCellElement(context, id);
- if(!isColumnGroup) {
+ boolean partialUpdateEncoded = false;
+
+ if (!isColumnGroup) {
+ String targetId = id + ":" + facetName;
+
+ if (encodePartialUpdate) {
+ partialUpdateEncoded = true;
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(targetId);
+ }
+
writer.startElement(HTML.TR_ELEMENT, footer);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, targetId, null);
encodeStyleClass(writer, context, footer, null, rowClass);
@@ -358,11 +428,23 @@
writer.writeAttribute("scope", "colgroup", null);
}
+ if (encodePartialUpdate && !partialUpdateEncoded) {
+ context.getPartialViewContext().getPartialResponseWriter().startUpdate(footer.getClientId(context));
+ }
+
footer.encodeAll(context);
- if(!isColumnGroup){
+ if (encodePartialUpdate && !partialUpdateEncoded) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
+
+ if (!isColumnGroup){
writer.endElement(element);
writer.endElement(HTML.TR_ELEMENT);
+
+ if (partialUpdateEncoded) {
+ context.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
}
@@ -402,4 +484,28 @@
public abstract String getCellSkinClass();
+ public void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId)
+ throws IOException {
+
+ ResponseWriter initialWriter = context.getResponseWriter();
+ assert !(initialWriter instanceof OnOffResponseWriter);
+
+ try {
+ context.setResponseWriter(new OnOffResponseWriter(initialWriter));
+
+ UIDataTableBase table = (UIDataTableBase) component;
+
+ if (UIDataTableBase.HEADER.equals(metaComponentId)) {
+ encodeHeaderFacet(context.getResponseWriter(), context, table, true);
+ } else if (UIDataTableBase.FOOTER.equals(metaComponentId)) {
+ encodeFooterFacet(context.getResponseWriter(), context, table, true);
+// } else if (UIDataTableBase.BODY.equals(metaComponentId)) {
+// encodeBody(state);
+ } else {
+ throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
+ }
+ } finally {
+ context.setResponseWriter(initialWriter);
+ }
+ }
}
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-20 13:45:30 UTC (rev 17159)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-20 14:19:33 UTC (rev 17160)
@@ -35,14 +35,12 @@
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;
@@ -539,19 +537,11 @@
RendererState state = createRowHolder(context, component);
state.setEncoderVariance(EncoderVariance.partial);
- Application application = context.getApplication();
-
- if (UIExtendedDataTable.HEADER.equals(metaComponentId)) {
- application.publishEvent(context, PreRenderComponentEvent.class, component);
-
+ if (UIDataTableBase.HEADER.equals(metaComponentId)) {
encodeHeader(state);
- } else if (UIExtendedDataTable.FOOTER.equals(metaComponentId)) {
- application.publishEvent(context, PreRenderComponentEvent.class, component);
-
+ } else if (UIDataTableBase.FOOTER.equals(metaComponentId)) {
encodeFooter(state);
- } else if (UIExtendedDataTable.BODY.equals(metaComponentId)) {
- application.publishEvent(context, PreRenderComponentEvent.class, component);
-
+ } else if (UIDataTableBase.BODY.equals(metaComponentId)) {
encodeBody(state);
} else {
throw new IllegalArgumentException("Unsupported metaComponentIdentifier: " + metaComponentId);
Modified: root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
--- root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 13:45:30 UTC (rev 17159)
+++ root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-20 14:19:33 UTC (rev 17160)
@@ -74,7 +74,7 @@
public void encodeTableFacets(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
UISubTable subTable = (UISubTable)dataTable;
- encodeHeaderFacet(writer, context, subTable);
+ encodeHeaderFacet(writer, context, subTable, false);
String rowClass = getRowSkinClass();
String cellClass = getCellSkinClass();
@@ -118,7 +118,7 @@
protected void doEncodeEnd(ResponseWriter writer, FacesContext facesContext, UIComponent component) throws IOException {
UISubTable subTable = (UISubTable)component;
- encodeFooterFacet(writer, facesContext, subTable);
+ encodeFooterFacet(writer, facesContext, subTable, false);
encodeStateInput(writer, facesContext, subTable);
encodeClientScript(writer, facesContext, subTable);
encodeTableBodyEnd(writer, facesContext, subTable);
14 years, 1 month
JBoss Rich Faces SVN: r17159 - root/build/resources/trunk.
by richfaces-svn-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2010-05-20 09:45:30 -0400 (Thu, 20 May 2010)
New Revision: 17159
Modified:
root/build/resources/trunk/checkout.sh
Log:
Fixed issue with directory path
Modified: root/build/resources/trunk/checkout.sh
===================================================================
--- root/build/resources/trunk/checkout.sh 2010-05-20 13:29:52 UTC (rev 17158)
+++ root/build/resources/trunk/checkout.sh 2010-05-20 13:45:30 UTC (rev 17159)
@@ -37,7 +37,7 @@
SVNARGS="--quiet"
fi
-if [ -d $DESTINATION ]
+if [ -d "$DESTINATION" ]
then
echo "Checking out to $DESTINATION"
else
@@ -75,13 +75,13 @@
echo
echo =================================
- if [ -d $moduledir ]
+ if [ -d "$moduledir" ]
then
echo "Updating $module"
- svncmd="svn up $SVNARGS $DESTINATION/$module"
+ svncmd="svn up $SVNARGS $moduledir"
else
echo "Checking out $module"
- svncmd="svn co $SVNARGS $url $DESTINATION/$module"
+ svncmd="svn co $SVNARGS $url $moduledir"
fi
echo =================================
14 years, 1 month
JBoss Rich Faces SVN: r17158 - root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-05-20 09:29:52 -0400 (Thu, 20 May 2010)
New Revision: 17158
Modified:
root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss
Log:
Modified: root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss
===================================================================
--- root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss 2010-05-20 13:14:52 UTC (rev 17157)
+++ root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss 2010-05-20 13:29:52 UTC (rev 17158)
@@ -15,7 +15,7 @@
background: '#{richSkin.tableBackgroundColor}';
}
-.rf-ds-cont_dec {
+.rf-ds-cont-dec {
border-width: 1px;
border-style: solid;
border-color: '#{richSkin.tableBorderColor}';
14 years, 1 month
JBoss Rich Faces SVN: r17157 - in root/ui-sandbox/datascroller/trunk/ui/src/main: resources/META-INF/resources/css and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-05-20 09:14:52 -0400 (Thu, 20 May 2010)
New Revision: 17157
Modified:
root/ui-sandbox/datascroller/trunk/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java
root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss
root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/script/datascroller.js
root/ui-sandbox/datascroller/trunk/ui/src/main/templates/datascroller.template.xml
Log:
apply css name conv
Modified: root/ui-sandbox/datascroller/trunk/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java
===================================================================
--- root/ui-sandbox/datascroller/trunk/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java 2010-05-20 11:34:03 UTC (rev 17156)
+++ root/ui-sandbox/datascroller/trunk/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java 2010-05-20 13:14:52 UTC (rev 17157)
@@ -204,10 +204,10 @@
if (isCurrentPage) {
out.startElement(HTML.SPAN_ELEM, component);
- out.writeAttribute(HTML.CLASS_ATTRIBUTE, "ds_digital ds_current " + styleClass, null);
+ out.writeAttribute(HTML.CLASS_ATTRIBUTE, "rf-ds-dtl rf-ds-cur " + styleClass, null);
} else {
out.startElement(HTML.A_ELEMENT, component);
- out.writeAttribute(HTML.CLASS_ATTRIBUTE, "ds_digital " + styleClass, null);
+ out.writeAttribute(HTML.CLASS_ATTRIBUTE, "rf-ds-dtl " + styleClass, null);
out.writeAttribute(HTML.HREF_ATTR, "javascript:void(0);", null);
}
Modified: root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss
===================================================================
--- root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss 2010-05-20 11:34:03 UTC (rev 17156)
+++ root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/css/datascroller.ecss 2010-05-20 13:14:52 UTC (rev 17157)
@@ -1,12 +1,12 @@
-a.ds_digital {
+a.rf-ds-dtl {
color: '#{richSkin.generalTextColor}';
}
-a.ds_button {
+a.rf-ds-btn {
color: '#{richSkin.generalTextColor}';
}
-.ds_container {
+.rf-ds-cont {
white-space: nowrap;
display: inline-block;
font-size: '#{richSkin.generalSizeFont}';
@@ -15,13 +15,13 @@
background: '#{richSkin.tableBackgroundColor}';
}
-.ds_container_decor {
+.rf-ds-cont_dec {
border-width: 1px;
border-style: solid;
border-color: '#{richSkin.tableBorderColor}';
}
-.ds_button {
+.rf-ds-btn {
cursor: pointer;
padding: 2px 10px 3px 10px;
border-width: 1px;
@@ -41,15 +41,15 @@
font-weight: normal;
}
-.ds_left {
+.rf-ds-l {
margin-right: 1px;
}
-.ds_right {
+.rf-ds-r {
margin-left: 1px;
}
-.ds_digital {
+.rf-ds-dtl {
cursor: pointer;
width: 2em;
text-align: center;
@@ -79,7 +79,7 @@
}
-.ds_over {
+.rf-ds-over {
border-width : 1px;
border-style: solid;
border-color: '#{richSkin.tableBorderColor}';
@@ -89,14 +89,14 @@
background-image: "url(#{resource['org.richfaces.renderkit.html.images.DSButtonOverGradientImage']})";
}
-.ds_press {
+.rf-ds-press {
border-width: 1px;
border-style: solid;
border-color: '#{richSkin.tableBorderColor}';
background: '#{richSkin.additionalBackgroundColor}';
}
-.ds_current {
+.rf-ds-cur {
cursor: default;
font-weight: bold;
border-width: 1px;
@@ -108,7 +108,7 @@
background: none;
}
-.ds_disabled{
+.rf-ds-dis{
color: '#{richSkin.tableBorderColor}';
cursor: default;
}
\ No newline at end of file
Modified: root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/script/datascroller.js
===================================================================
--- root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/script/datascroller.js 2010-05-20 11:34:03 UTC (rev 17156)
+++ root/ui-sandbox/datascroller/trunk/ui/src/main/resources/META-INF/resources/script/datascroller.js 2010-05-20 13:14:52 UTC (rev 17157)
@@ -69,25 +69,25 @@
if(buttons) {
var leftButtons = buttons.left;
- css.mouseover = "ds_button ds_left";
- css.mouseup = "ds_button ds_left";
- css.mouseout = "ds_button ds_left";
- css.mousedown = "ds_button ds_left ds_over";
+ css.mouseover = "rf-ds-btn rf-ds-l";
+ css.mouseup = "rf-ds-btn rf-ds-l";
+ css.mouseout = "rf-ds-btn rf-ds-l";
+ css.mousedown = "rf-ds-btn rf-ds-l rf-ds-over";
initButtons(leftButtons,css, this);
var rightButtons = buttons.right;
- css.mouseover = "ds_button ds_right";
- css.mouseup = "ds_button ds_right";
- css.mouseout = "ds_button ds_right";
- css.mousedown = "ds_button ds_right ds_over";
+ css.mouseover = "rf-ds-btn rf-ds-r";
+ css.mouseup = "rf-ds-btn rf-ds-r";
+ css.mouseout = "rf-ds-btn rf-ds-r";
+ css.mousedown = "rf-ds-btn rf-ds-r rf-ds-over";
initButtons(rightButtons,css, this);
}
if(digitals) {
- css.mouseover= "ds_digital ds_over";
- css.mouseup= "ds_digital ds_over";
- css.mouseout = "ds_digital";
- css.mousedown="ds_digital ds_press";
+ css.mouseover= "rf-ds-dtl rf-ds-over";
+ css.mouseup= "rf-ds-dtl rf-ds-over";
+ css.mouseout = "rf-ds-dtl";
+ css.mousedown="rf-ds-dtl rf-ds-press";
initButtons(digitals, css,this);
}
};
Modified: root/ui-sandbox/datascroller/trunk/ui/src/main/templates/datascroller.template.xml
===================================================================
--- root/ui-sandbox/datascroller/trunk/ui/src/main/templates/datascroller.template.xml 2010-05-20 11:34:03 UTC (rev 17156)
+++ root/ui-sandbox/datascroller/trunk/ui/src/main/templates/datascroller.template.xml 2010-05-20 13:14:52 UTC (rev 17157)
@@ -20,12 +20,12 @@
<c:if test="#{controlsState.firstRendered}">
<c:choose>
<c:when test="#{controlsState.firstEnabled}">
- <a id="#{clientId}_ds_f" class="ds_button ds_left" href="javascript:void(0)" >
+ <a id="#{clientId}_ds_f" class="rf-ds-btn rf-ds-l" href="javascript:void(0)" >
««
</a>
</c:when>
<c:otherwise>
- <span id="#{clientId}_ds_f" class="ds_button ds_left ds_disabled">
+ <span id="#{clientId}_ds_f" class="rf-ds-btn rf-ds-l rf-ds-dis">
««
</span>
</c:otherwise>
@@ -36,12 +36,12 @@
<c:if test="#{controlsState.fastRewindRendered}">
<c:choose>
<c:when test="#{controlsState.fastRewindEnabled}">
- <a id="#{clientId}_ds_fr" class="ds_button ds_left" href="javascript:void(0)">
+ <a id="#{clientId}_ds_fr" class="rf-ds-btn rf-ds-l" href="javascript:void(0)">
«
</a>
</c:when>
<c:otherwise>
- <span id="#{clientId}_ds_fr" class="ds_button ds_left ds_disabled">
+ <span id="#{clientId}_ds_fr" class="rf-ds-btn rf-ds-l rf-ds-dis">
«
</span>
</c:otherwise>
@@ -53,12 +53,12 @@
<c:if test="#{controlsState.fastForwardRendered}">
<c:choose>
<c:when test="#{controlsState.fastForwardEnabled}">
- <a id="#{clientId}_ds_ff" class="ds_button ds_right" href="javascript:void(0)">
+ <a id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
»
</a>
</c:when>
<c:otherwise>
- <span id="#{clientId}_ds_ff" class="ds_button ds_right ds_disabled">
+ <span id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r rf-ds-dis">
»
</span>
</c:otherwise>
@@ -68,19 +68,20 @@
<c:if test="#{controlsState.lastRendered}">
<c:choose>
<c:when test="#{controlsState.lastEnabled}">
- <a id="#{clientId}_ds_l" class="ds_button ds_right" href="javascript:void(0)">
+ <a id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
»»
</a>
</c:when>
<c:otherwise>
- <span id="#{clientId}_ds_l" class="ds_button ds_right ds_disabled">
+ <span id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r rf-ds-dis">
»»
</span>
</c:otherwise>
</c:choose>
</c:if>
+
<cdk:object type="java.util.Map" name="buttons" value="#{getControls(facesContext, component, controlsState)}" />
-
+
<script type="text/javascript">
<cdk:call expression="buildScript(responseWriter, facesContext, component, buttons, digitals);"/>
</script>
14 years, 1 month