Author: pgolawski
Date: 2009-01-26 11:24:43 -0500 (Mon, 26 Jan 2009)
New Revision: 12428
Modified:
trunk/ui/extendedDataTable/src/main/config/component/ExtendedDataTable.xml
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
trunk/ui/extendedDataTable/src/main/resources/org/richfaces/renderkit/html/css/extendedDataTable.xcss
trunk/ui/extendedDataTable/src/main/templates/org/richfaces/htmlExtendedDataTable.jspx
Log:
added build-in information row in case there are no data rows to display
Modified: trunk/ui/extendedDataTable/src/main/config/component/ExtendedDataTable.xml
===================================================================
--- trunk/ui/extendedDataTable/src/main/config/component/ExtendedDataTable.xml 2009-01-26
16:23:06 UTC (rev 12427)
+++ trunk/ui/extendedDataTable/src/main/config/component/ExtendedDataTable.xml 2009-01-26
16:24:43 UTC (rev 12428)
@@ -46,6 +46,11 @@
<description>Defines an id of column which the data
is grouped by.</description>
</property>
<property>
+ <name>noDataLabel</name>
+ <classname>java.lang.String</classname>
+ <description>Defines label to be displayed in case
there are no data rows.</description>
+ </property>
+ <property>
<name>onselectionchange</name>
<classname>java.lang.String</classname>
<description> HTML: script expression to invoke on
changing of rows
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2009-01-26
16:23:06 UTC (rev 12427)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2009-01-26
16:24:43 UTC (rev 12428)
@@ -50,6 +50,7 @@
import org.richfaces.component.UIDataTable;
import org.richfaces.component.UIExtendedDataTable;
import org.richfaces.component.nsutils.NSUtils;
+import org.richfaces.component.util.ComponentMessageUtil;
import org.richfaces.event.extdt.ChangeColumnVisibilityEvent;
import org.richfaces.event.extdt.ColumnResizeEvent;
import org.richfaces.event.extdt.DragDropEvent;
@@ -106,6 +107,11 @@
private static final String MIN_COLUMN_WIDTH = "20";
//private final Log log = LogFactory.getLog(UIExtendedDataTable.class);
+
+ /*
+ * Message key constants
+ */
+ private static final String MSG_NODATA =
"org.richfaces.component.UIExtendedDataTable.NoData";
/**
* Encode all table structure - colgroups definitions, caption, header,
@@ -698,6 +704,30 @@
encodeRowStart(context, getRowSkinClass(), rowClass, table, holder,
writer);
}
+
+ public void encodeNoDataRow(FacesContext context,
+ UIComponent component) throws IOException {
+ UIDataTable table = (UIDataTable) component;
+ ResponseWriter writer = context.getResponseWriter();
+ int numberOfColumns = getColumnsCount(table) + 1;
+ writer.startElement(HTML.TR_ELEMENT, table);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, table.getBaseClientId(context)
+ + ":noDataRow", null);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, "extdt-noData-row " +
getRowSkinClass(), null);
+
+ writer.startElement(HTML.td_ELEM, table);
+ writer.writeAttribute(HTML.class_ATTRIBUTE,
+ "extdt-noData-cell " + getCellSkinClass(), null);
+ writer.writeAttribute("colspan", numberOfColumns, null);
+ String label = (String)table.getAttributes().get("noDataLabel");
+ if ((label == null) || (label.length() == 0)) {
+ label = ComponentMessageUtil.getMessage(context, MSG_NODATA, new Object[]
{}).getSummary();
+ }
+ writer.writeText(label, null);
+ writer.endElement(HTML.td_ELEM);
+ writer.endElement(HTML.TR_ELEMENT);
+
+ }
/**
* @return
Modified:
trunk/ui/extendedDataTable/src/main/resources/org/richfaces/renderkit/html/css/extendedDataTable.xcss
===================================================================
---
trunk/ui/extendedDataTable/src/main/resources/org/richfaces/renderkit/html/css/extendedDataTable.xcss 2009-01-26
16:23:06 UTC (rev 12427)
+++
trunk/ui/extendedDataTable/src/main/resources/org/richfaces/renderkit/html/css/extendedDataTable.xcss 2009-01-26
16:24:43 UTC (rev 12428)
@@ -36,6 +36,14 @@
display: none;
}
+ .extdt-noData-row {
+ }
+
+ .extdt-noData-cell {
+ text-align: center;
+ font-weight: bold;
+ }
+
.extdt-thead {
}
Modified:
trunk/ui/extendedDataTable/src/main/templates/org/richfaces/htmlExtendedDataTable.jspx
===================================================================
---
trunk/ui/extendedDataTable/src/main/templates/org/richfaces/htmlExtendedDataTable.jspx 2009-01-26
16:23:06 UTC (rev 12427)
+++
trunk/ui/extendedDataTable/src/main/templates/org/richfaces/htmlExtendedDataTable.jspx 2009-01-26
16:24:43 UTC (rev 12428)
@@ -43,11 +43,6 @@
variables.setVariable("columnsCount", getColumnsCount(component)+1);
]]>
</jsp:scriptlet>
-
- <!--
- TODO nick - enclose all HTML elements into one container element or add them
- to rendered areas manually in order to be handled correctly by AJAX updates
- -->
<div
id="#{clientId}"
@@ -88,6 +83,26 @@
<tr>
<td colspan="#{columnsCount}" style="padding: 0px;">
<div id="#{clientId}:sd" class="extdt-content"
style="height:50px;width:100%;">
+ <jsp:scriptlet>
+ <![CDATA[
+ if (component.getRowCount() <= 0) {
+ ]]>
+ </jsp:scriptlet>
+ <table id="#{clientId}:empty" width="100%"
+ class="extdt-table-layout rich-table
#{component.attributes['styleClass']}"
+ >
+ <f:call name="utils.encodePassThruWithExclusions">
+ <f:parameter
value="height,value,name,type,id,class,rows,style,width" />
+ </f:call>
+ <tbody>
+ <f:call name="encodeNoDataRow"/>
+ </tbody>
+ </table>
+ <jsp:scriptlet>
+ <![CDATA[
+ }
+ ]]>
+ </jsp:scriptlet>
<table id="#{clientId}:n" width="100%"
class="extdt-table-layout rich-table
#{component.attributes['styleClass']}"