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;