You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2012/06/14 20:58:29 UTC
git commit: WICKET-4596 DataTable toolbars support for dynamic columns
Updated Branches:
refs/heads/master bf1340b71 -> 31c719812
WICKET-4596 DataTable toolbars support for dynamic columns
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/31c71981
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/31c71981
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/31c71981
Branch: refs/heads/master
Commit: 31c71981248da2be9b230a00f414bf394667794e
Parents: bf1340b
Author: Sven Meier <sv...@apache.org>
Authored: Thu Jun 14 20:57:25 2012 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Thu Jun 14 20:57:25 2012 +0200
----------------------------------------------------------------------
.../repeater/data/table/AjaxNavigationToolbar.html | 25 -----
.../html/repeater/data/table/HeadersToolbar.java | 84 +++++++++------
.../repeater/data/table/NavigationToolbar.html | 4 +-
.../repeater/data/table/NavigationToolbar.java | 15 +++-
.../html/repeater/data/table/NoRecordsToolbar.java | 12 ++-
.../repeater/data/table/filter/FilterToolbar.java | 81 +++++++++------
6 files changed, 127 insertions(+), 94 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxNavigationToolbar.html
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxNavigationToolbar.html b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxNavigationToolbar.html
deleted file mode 100644
index ff21d73..0000000
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxNavigationToolbar.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<wicket:panel xmlns:wicket="http://wicket.apache.org">
- <tr class="navigation">
- <td wicket:id="span">
- <div style="float: left;" class="navigatorLabel"><span wicket:id="navigatorLabel">[navigator-label]</span></div>
- <div style="text-align: right;" class="navigator"><span wicket:id="navigator">[navigator]</span></div>
- </td>
- </tr>
-</wicket:panel>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
index 118df15..54aa820 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
@@ -16,22 +16,26 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.table;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByBorder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable.CssAttributeBehavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.list.AbstractItem;
-import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.RefreshingView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
/**
* Toolbars that displays column headers. If the column is sortable a sortable header will be
* displayed.
- *
+ *
* @param <S>
- * the type of the sorting parameter
+ * the type of the sorting parameter
* @see DefaultDataTable
*
* @author Igor Vaynberg (ivaynberg)
@@ -55,45 +59,61 @@ public class HeadersToolbar<S> extends AbstractToolbar
{
super(table);
- RepeatingView headers = new RepeatingView("headers");
- add(headers);
-
- final List<IColumn<T, S>> columns = table.getColumns();
- for (final IColumn<T, S> column : columns)
+ RefreshingView<IColumn<T, S>> headers = new RefreshingView<IColumn<T, S>>("headers")
{
- AbstractItem item = new AbstractItem(headers.newChildId());
- headers.add(item);
+ private static final long serialVersionUID = 1L;
- WebMarkupContainer header = null;
- if (column.isSortable())
- {
- header = newSortableHeader("header", column.getSortProperty(), stateLocator);
- }
- else
+ @Override
+ protected Iterator<IModel<IColumn<T, S>>> getItemModels()
{
- header = new WebMarkupContainer("header");
+ List<IModel<IColumn<T, S>>> columnsModels = new LinkedList<IModel<IColumn<T, S>>>();
+
+ for (IColumn<T, S> column : table.getColumns())
+ {
+ columnsModels.add(Model.of(column));
+ }
+
+ return columnsModels.iterator();
}
- if (column instanceof IStyledColumn)
+ @Override
+ protected void populateItem(Item<IColumn<T, S>> item)
{
- CssAttributeBehavior cssAttributeBehavior = new DataTable.CssAttributeBehavior()
+ final IColumn<T, S> column = item.getModelObject();
+
+ WebMarkupContainer header = null;
+
+ if (column.isSortable())
{
- private static final long serialVersionUID = 1L;
+ header = newSortableHeader("header", column.getSortProperty(), stateLocator);
+ }
+ else
+ {
+ header = new WebMarkupContainer("header");
+ }
- @Override
- protected String getCssClass()
+ if (column instanceof IStyledColumn)
+ {
+ CssAttributeBehavior cssAttributeBehavior = new DataTable.CssAttributeBehavior()
{
- return ((IStyledColumn<?, S>)column).getCssClass();
- }
- };
+ private static final long serialVersionUID = 1L;
- header.add(cssAttributeBehavior);
- }
+ @Override
+ protected String getCssClass()
+ {
+ return ((IStyledColumn<?, S>)column).getCssClass();
+ }
+ };
+
+ header.add(cssAttributeBehavior);
+ }
- item.add(header);
- item.setRenderBodyOnly(true);
- header.add(column.getHeader("label"));
- }
+ item.add(header);
+ item.setRenderBodyOnly(true);
+ header.add(column.getHeader("label"));
+ }
+ };
+ add(headers);
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
index 07b9cc8..8fe0db7 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
@@ -18,8 +18,8 @@
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<tr class="navigation">
<td wicket:id="span">
- <div class="navigatorLabel"><wicket:container wicket:id="navigatorLabel">[navigator-label]</wicket:container></div>
- <div class="navigator"><wicket:container wicket:id="navigator">[navigator]</wicket:container></div>
+ <div class="navigatorLabel"><span wicket:id="navigatorLabel">[navigator-label]</span></div>
+ <div class="navigator"><span wicket:id="navigator">[navigator]</span></div>
</td>
</tr>
</wicket:panel>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
index 6b0101d..58b7801 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
@@ -20,6 +20,7 @@ import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
+import org.apache.wicket.model.AbstractReadOnlyModel;
/**
* Toolbar that displays links used to navigate the pages of the datatable as well as a message
@@ -43,7 +44,16 @@ public class NavigationToolbar extends AbstractToolbar
WebMarkupContainer span = new WebMarkupContainer("span");
add(span);
- span.add(AttributeModifier.replace("colspan", String.valueOf(table.getColumns().size())));
+ span.add(AttributeModifier.replace("colspan", new AbstractReadOnlyModel<String>()
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getObject()
+ {
+ return String.valueOf(table.getColumns().size());
+ }
+ }));
span.add(newPagingNavigator("navigator", table));
span.add(newNavigatorLabel("navigatorLabel", table));
@@ -58,7 +68,8 @@ public class NavigationToolbar extends AbstractToolbar
* dataview used by datatable
* @return paging navigator that will be used to navigate the data table
*/
- protected PagingNavigator newPagingNavigator(final String navigatorId, final DataTable<?, ?> table)
+ protected PagingNavigator newPagingNavigator(final String navigatorId,
+ final DataTable<?, ?> table)
{
return new PagingNavigator(navigatorId, table);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
index c9f0ec7..bdb5410 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
@@ -19,6 +19,7 @@ package org.apache.wicket.extensions.markup.html.repeater.data.table;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
@@ -64,7 +65,16 @@ public class NoRecordsToolbar extends AbstractToolbar
WebMarkupContainer td = new WebMarkupContainer("td");
add(td);
- td.add(AttributeModifier.replace("colspan", String.valueOf(table.getColumns().size())));
+ td.add(AttributeModifier.replace("colspan", new AbstractReadOnlyModel<String>()
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getObject()
+ {
+ return String.valueOf(table.getColumns().size());
+ }
+ }));
td.add(new Label("msg", messageModel));
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/31c71981/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
index e7bada4..9e63dff 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
@@ -16,14 +16,18 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.table.filter;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.RefreshingView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
/**
@@ -65,47 +69,60 @@ public class FilterToolbar extends AbstractToolbar
}
// populate the toolbar with components provided by filtered columns
-
- RepeatingView filters = new RepeatingView("filters");
- filters.setRenderBodyOnly(true);
- add(filters);
-
- List<IColumn<T, S>> cols = table.getColumns();
- for (IColumn<T, S> col : cols)
+ RefreshingView<IColumn<T, S>> filters = new RefreshingView<IColumn<T, S>>("filters")
{
- WebMarkupContainer item = new WebMarkupContainer(filters.newChildId());
- item.setRenderBodyOnly(true);
-
- Component filter = null;
+ private static final long serialVersionUID = 1L;
- if (col instanceof IFilteredColumn)
+ @Override
+ protected Iterator<IModel<IColumn<T, S>>> getItemModels()
{
- IFilteredColumn<T, S> filteredCol = (IFilteredColumn<T, S>)col;
- filter = filteredCol.getFilter(FILTER_ID, form);
- }
+ List<IModel<IColumn<T, S>>> columnsModels = new LinkedList<IModel<IColumn<T, S>>>();
- if (filter == null)
- {
- filter = new NoFilter(FILTER_ID);
+ for (IColumn<T, S> column : table.getColumns())
+ {
+ columnsModels.add(Model.of(column));
+ }
+
+ return columnsModels.iterator();
}
- else
+
+ @Override
+ protected void populateItem(Item<IColumn<T, S>> item)
{
- if (!filter.getId().equals(FILTER_ID))
+ final IColumn<T, S> col = item.getModelObject();
+ item.setRenderBodyOnly(true);
+
+ Component filter = null;
+
+ if (col instanceof IFilteredColumn)
{
- throw new IllegalStateException(
- "filter component returned with an invalid component id. invalid component id [" +
- filter.getId() +
- "] required component id [" +
- getId() +
- "] generating column [" + col.toString() + "] ");
+ IFilteredColumn<T, S> filteredCol = (IFilteredColumn<T, S>)col;
+ filter = filteredCol.getFilter(FILTER_ID, form);
}
- }
- item.add(filter);
+ if (filter == null)
+ {
+ filter = new NoFilter(FILTER_ID);
+ }
+ else
+ {
+ if (!filter.getId().equals(FILTER_ID))
+ {
+ throw new IllegalStateException(
+ "filter component returned with an invalid component id. invalid component id [" +
+ filter.getId() +
+ "] required component id [" +
+ getId() +
+ "] generating column [" + col.toString() + "] ");
+ }
+ }
- filters.add(item);
- }
+ item.add(filter);
+ }
+ };
+ filters.setRenderBodyOnly(true);
+ add(filters);
}
@Override