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;

Reply via email to