You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by re...@apache.org on 2021/11/14 06:29:35 UTC

[wicket] 01/01: datatable improvements.

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 fc56b48e70b760310a202e9675042b6202f4a419
Author: reiern70 <re...@gmail.com>
AuthorDate: Sat Nov 13 10:50:01 2021 +0300

    datatable improvements.
---
 .../data/table/AjaxFallbackDefaultDataTable.java   | 11 +++++++-
 .../repeater/data/table/NavigationToolbar.java     | 30 +++++++++++++++++++++-
 .../html/repeater/data/table/NavigatorLabel.java   | 12 ++++++++-
 3 files changed, 50 insertions(+), 3 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..5a0b90e 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;
 
@@ -54,7 +56,15 @@ public class NavigationToolbar extends AbstractToolbar
 		}));
 
 		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));
+		}
 	}
 
 	/**
@@ -87,6 +97,24 @@ public class NavigationToolbar extends AbstractToolbar
 		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 org.apache.wicket.extensions.markup.html.repeater.data.table.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..2b513c6 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,10 +46,20 @@ 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))));
 	}
 
+	/**
+	 * Allows to override the key used for navigation label.
+	 *
+	 * @return The i18n key.
+	 */
+	protected String getNavigationLabelKey()
+	{
+		return "NavigatorLabel";
+	}
+
 	private static class LabelModelObject implements IClusterable
 	{
 		private static final long serialVersionUID = 1L;