This is an automated email from the ASF dual-hosted git repository. reiern70 pushed a commit to branch make_datatables_more_easy_to_ooverride in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 73e611dac86623e615c359fa633b8a0a0a657d54 Author: reiern70 <[email protected]> AuthorDate: Sat Nov 13 10:50:01 2021 +0300 several minor datatable improvements --- .../data/table/AjaxFallbackDefaultDataTable.java | 11 +++++- .../repeater/data/table/NavigationToolbar.java | 43 +++++++++++++++++----- .../html/repeater/data/table/NavigatorLabel.java | 14 ++++++- 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java index 0cf9af3..795cef7 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java @@ -71,8 +71,17 @@ public class AjaxFallbackDefaultDataTable<T, S> extends DataTable<T, S> super(id, columns, dataProvider, rowsPerPage); setOutputMarkupId(true); setVersioned(false); + addToolBars(dataProvider); + } + + /** + * Factory method for toolbars + * @param dataProvider {@link org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider} + */ + protected void addToolBars(final ISortableDataProvider<T, S> dataProvider) + { addTopToolbar(new AjaxNavigationToolbar(this)); - addTopToolbar(new AjaxFallbackHeadersToolbar(this, dataProvider)); + addTopToolbar(new AjaxFallbackHeadersToolbar<>(this, dataProvider)); addBottomToolbar(new NoRecordsToolbar(this)); } 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 70515de..c68b9cb 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 @@ -17,8 +17,10 @@ package org.apache.wicket.extensions.markup.html.repeater.data.table; import org.apache.wicket.AttributeModifier; +import org.apache.wicket.Component; import org.apache.wicket.markup.html.WebComponent; import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.navigation.paging.IPageableItems; import org.apache.wicket.markup.html.navigation.paging.PagingNavigator; import org.apache.wicket.model.IModel; @@ -44,17 +46,18 @@ public class NavigationToolbar extends AbstractToolbar WebMarkupContainer span = new WebMarkupContainer("span"); add(span); - span.add(AttributeModifier.replace("colspan", new IModel<String>() - { - @Override - public String getObject() - { - return String.valueOf(table.getColumns().size()).intern(); - } - })); + span.add(AttributeModifier.replace("colspan", (IModel<String>) () -> String.valueOf(table.getColumns().size()).intern())); span.add(newPagingNavigator("navigator", table)); - span.add(newNavigatorLabel("navigatorLabel", table)); + Component complexLabel = newComplexNavigatorLabel("navigatorLabel", table); + if (complexLabel != null) + { + span.add(complexLabel); + } + else + { + span.add(newNavigatorLabel("navigatorLabel", table)); + } } /** @@ -73,7 +76,9 @@ public class NavigationToolbar extends AbstractToolbar } /** - * Factory method used to create the navigator label that will be used by the datatable + * Factory method used to create the navigator label that will be used by the datatable. + * @deprecated use {@link NavigationToolbar#newComplexNavigatorLabel(String, IPageableItems)} instead if you + * want to override label. * * @param navigatorId * component id navigator label should be created with @@ -82,11 +87,29 @@ public class NavigationToolbar extends AbstractToolbar * @return navigator label that will be used to navigate the data table * */ + @Deprecated protected WebComponent newNavigatorLabel(final String navigatorId, final DataTable<?, ?> table) { return new NavigatorLabel(navigatorId, table); } + /** + * Factory method used to create the navigator component in place of label that will be used by the datatable. + * This will take precedence over {@link NavigationToolbar#newNavigatorLabel(String, DataTable)}. + * By default, returns null; + * + * @param navigatorId + * component id navigator label should be created with + * @param table + * DataTable used by label + * @return navigator label that will be used to navigate the data table + * + */ + protected Component newComplexNavigatorLabel(final String navigatorId, final IPageableItems table) + { + return null; + } + /** {@inheritDoc} */ @Override protected void onConfigure() diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigatorLabel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigatorLabel.java index 283118e..ceb7ff8 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigatorLabel.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigatorLabel.java @@ -46,11 +46,21 @@ public class NavigatorLabel extends Label public NavigatorLabel(final String id, final IPageableItems pageable) { super(id); - setDefaultModel(new StringResourceModel("NavigatorLabel", this, + setDefaultModel(new StringResourceModel(getNavigationLabelKey(), this, new Model<>(new LabelModelObject(pageable)))); } - private static class LabelModelObject implements IClusterable + /** + * Allows to override the key used for navigation label. + * + * @return The i18n key. + */ + protected String getNavigationLabelKey() + { + return "NavigatorLabel"; + } + + public static class LabelModelObject implements IClusterable { private static final long serialVersionUID = 1L; private final IPageableItems pageable;
