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:39:17 UTC

[wicket] 01/01: several minor 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 73e611dac86623e615c359fa633b8a0a0a657d54
Author: reiern70 <re...@gmail.com>
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;