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;