Author: mgrigorov
Date: Tue Jul 19 13:04:15 2011
New Revision: 1148307
URL: http://svn.apache.org/viewvc?rev=1148307&view=rev
Log:
WICKET-3886 Option for providing caption to DataTable
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTablePage.java
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTableTest.java
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html?rev=1148307&r1=1148306&r2=1148307&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html
Tue Jul 19 13:04:15 2011
@@ -16,7 +16,7 @@
limitations under the License.
-->
<wicket:panel xmlns:wicket="http://wicket.apache.org">
-
+<caption wicket:id="caption"></caption>
<thead wicket:id="topToolbars">
<wicket:container wicket:id="toolbars"></wicket:container>
</thead>
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java?rev=1148307&r1=1148306&r2=1148307&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
Tue Jul 19 13:04:15 2011
@@ -24,6 +24,7 @@ import org.apache.wicket.behavior.Behavi
import
org.apache.wicket.extensions.markup.html.repeater.data.grid.DataGridView;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.IPageableItems;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.IItemReuseStrategy;
@@ -115,6 +116,8 @@ public class DataTable<T> extends Panel
private final ToolbarsContainer bottomToolbars;
+ private final Caption caption;
+
/**
* Constructor
*
@@ -138,6 +141,8 @@ public class DataTable<T> extends Panel
}
this.columns = columns;
+ this.caption = new Caption("caption", getCaptionModel());
+ add(caption);
body = newBodyContainer("body");
datagrid = new DataGridView<T>("rows", columns, dataProvider)
{
@@ -181,6 +186,17 @@ public class DataTable<T> extends Panel
}
/**
+ * Returns the model for table's caption. The caption wont be rendered
if the model has empty
+ * value.
+ *
+ * @return the model for table's caption
+ */
+ protected IModel<String> getCaptionModel()
+ {
+ return null;
+ }
+
+ /**
* Create the MarkupContainer for the <tbody> tag. Users may subclass
it to provide their own
* (modified) implementation.
*
@@ -452,4 +468,32 @@ public class DataTable<T> extends Panel
setVisible(visible);
}
}
+
+ /**
+ * A caption for the table. It renders itself only if {@link
DataTable#getCaptionModel()} has
+ * non-empty value.
+ */
+ private static class Caption extends Label
+ {
+ /**
+ * Construct.
+ *
+ * @param id
+ * the component id
+ * @param model
+ * the caption model
+ */
+ public Caption(String id, IModel<String> model)
+ {
+ super(id, model);
+ }
+
+ @Override
+ protected void onConfigure()
+ {
+
setRenderBodyOnly(Strings.isEmpty(getDefaultModelObjectAsString()));
+
+ super.onConfigure();
+ }
+ }
}
Modified:
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTablePage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTablePage.java?rev=1148307&r1=1148306&r2=1148307&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTablePage.java
(original)
+++
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTablePage.java
Tue Jul 19 13:04:15 2011
@@ -87,7 +87,21 @@ public class DataTablePage extends WebPa
@SuppressWarnings({ "rawtypes", "unchecked" })
DefaultDataTable defaultDataTable = new
DefaultDataTable("table", columns,
- new SortableContactDataProvider(), 8);
+ new SortableContactDataProvider(), 8)
+ {
+
+ @Override
+ protected IModel getCaptionModel()
+ {
+ return DataTablePage.this.getCaptionModel();
+ }
+
+ };
add(defaultDataTable);
}
+
+ protected IModel<String> getCaptionModel()
+ {
+ return null;
+ }
}
Modified:
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTableTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTableTest.java?rev=1148307&r1=1148306&r2=1148307&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTableTest.java
(original)
+++
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTableTest.java
Tue Jul 19 13:04:15 2011
@@ -81,6 +81,9 @@ public class DataTableTest extends TestC
index = document.indexOf("<tbody", index + 1);
assertTrue("There must be only one <tbody>", index == -1);
+ index = document.indexOf("<caption", index + 1);
+ assertTrue("There must be not be <caption>", index == -1);
+
log.error(document);
log.error("==============================================");
log.error("==============================================");
@@ -110,6 +113,30 @@ public class DataTableTest extends TestC
Assert.assertFalse(tester.getLastResponseAsString().contains("tfoot"));
}
+ /**
+ * Tests that a {@link DataTable} with non-empty {@link
DataTable#getCaptionModel()} will render
+ * <caption> element.
+ */
+ public void testWicket3886()
+ {
+ DataTablePage page = new DataTablePage()
+ {
+ @Override
+ protected IModel<String> getCaptionModel()
+ {
+ return Model.of("Caption");
+ }
+ };
+
+ tester.startPage(page);
+ tester.assertRenderedPage(DataTablePage.class);
+
+ String document = tester.getLastResponseAsString();
+ int index = document.indexOf("<caption
wicket:id=\"caption\">Caption</caption>");
+ assertTrue("Caption must be rendered!", index > -1);
+
+ }
+
private String removeFillers(String doc)
{
doc = doc.replaceAll("(?s)<span .*?>.*?</span>", "<x/>");