This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new de69412114 [SYNCOPE-1845] Doubleclick on AjaxDataTablePanel defaults
to trigger first action link available
de69412114 is described below
commit de69412114416641a9f5cf5b6dd44113fcf9bca3
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Nov 15 12:10:48 2024 +0100
[SYNCOPE-1845] Doubleclick on AjaxDataTablePanel defaults to trigger first
action link available
---
.../syncope/client/ui/commons/Constants.java | 2 ++
.../client/console/panels/AjaxDataTablePanel.java | 11 +++++++
.../client/console/panels/DirectoryPanel.java | 9 ++++++
.../repeater/data/table/AjaxFallbackDataTable.java | 34 +++++++++++++++-------
4 files changed, 45 insertions(+), 11 deletions(-)
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/Constants.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/Constants.java
index ba40bd2598..16b31890dd 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/Constants.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/Constants.java
@@ -55,6 +55,8 @@ public final class Constants {
public static final String ON_CLICK = "click";
+ public static final String ON_DOUBLE_CLICK = "dblclick";
+
public static final String ON_CHANGE = "change";
public static final String ON_KEYUP = "keyup";
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index 7cfa769902..0890223d37 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
+import java.util.function.BiConsumer;
import org.apache.syncope.client.console.batch.BatchContent;
import org.apache.syncope.client.console.batch.BatchModal;
import org.apache.syncope.client.console.pages.BasePage;
@@ -161,6 +162,10 @@ public final class AjaxDataTablePanel<T extends
Serializable, S> extends DataTab
protected ActionLinksTogglePanel<T> getTogglePanel() {
return null;
}
+
+ protected BiConsumer<AjaxRequestTarget, IModel<T>> onDoubleClick() {
+ return null;
+ }
}
protected final BaseModal<T> batchModal;
@@ -224,6 +229,12 @@ public final class AjaxDataTablePanel<T extends
Serializable, S> extends DataTab
return builder.getTogglePanel();
}
+ @Override
+ protected void onDoubleClick(final AjaxRequestTarget target, final
IModel<T> model) {
+ Optional.ofNullable(builder.onDoubleClick()).ifPresentOrElse(
+ odc -> odc.accept(target, model),
+ () -> super.onDoubleClick(target, model));
+ }
};
dataTable.add(new AttributeModifier("class", "table table-bordered
table-hover dataTable"));
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index 668fc7aac0..f15ba9b909 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -24,6 +24,7 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
+import java.util.function.BiConsumer;
import org.apache.syncope.client.console.PreferenceManager;
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.pages.BasePage;
@@ -306,6 +307,10 @@ public abstract class DirectoryPanel<
return DirectoryPanel.this.getTogglePanel();
}
+ @Override
+ protected BiConsumer<AjaxRequestTarget, IModel<T>> onDoubleClick()
{
+ return DirectoryPanel.this.onDoubleClick();
+ }
}.setColumns(getColumns()).
setRowsPerPage(rows).
setBatches(getBatches(), restClient, itemKeyFieldName).
@@ -374,6 +379,10 @@ public abstract class DirectoryPanel<
return actionTogglePanel;
}
+ protected BiConsumer<AjaxRequestTarget, IModel<T>> onDoubleClick() {
+ return null;
+ }
+
public static class EventDataWrapper {
private AjaxRequestTarget target;
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
index 47bf626fa3..41d7f7fe00 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
@@ -20,6 +20,7 @@ package
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater
import java.io.Serializable;
import java.util.List;
+import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
import
org.apache.syncope.client.console.wicket.ajax.markup.html.navigation.paging.AjaxDataNavigationToolbar;
@@ -70,16 +71,15 @@ public class AjaxFallbackDataTable<T extends Serializable,
S> extends DataTable<
@Override
protected WebMarkupContainer newSortableHeader(
- final String borderId, final S property, final
ISortStateLocator<S> locator) {
+ final String borderId, final S property, final
ISortStateLocator<S> locator) {
+
return new AjaxFallbackOrderByBorder<>(borderId, property,
locator) {
private static final long serialVersionUID =
8261993963983329775L;
@Override
protected void onAjaxClick(final AjaxRequestTarget target)
{
- if (container != null) {
- target.add(container);
- }
+ Optional.ofNullable(container).ifPresent(target::add);
}
};
}
@@ -91,16 +91,14 @@ public class AjaxFallbackDataTable<T extends Serializable,
S> extends DataTable<
@Override
protected WebMarkupContainer newSortableHeader(
- final String borderId, final S property, final
ISortStateLocator<S> locator) {
+ final String borderId, final S property, final
ISortStateLocator<S> locator) {
return new AjaxFallbackOrderByBorder<>(borderId, property,
locator) {
private static final long serialVersionUID =
985887006636879421L;
@Override
protected void onAjaxClick(final AjaxRequestTarget target)
{
- if (container != null) {
- target.add(container);
- }
+ Optional.ofNullable(container).ifPresent(target::add);
}
};
}
@@ -117,12 +115,17 @@ public class AjaxFallbackDataTable<T extends
Serializable, S> extends DataTable<
return null;
}
+ protected void onDoubleClick(final AjaxRequestTarget target, final
IModel<T> model) {
+ togglePanel.close(target);
+ getActions(model).getActions().get(0).getLink().onClick(target,
model.getObject());
+ }
+
@Override
protected Item<T> newRowItem(final String id, final int index, final
IModel<T> model) {
- final OddEvenItem<T> item = new OddEvenItem<>(id, index, model);
+ OddEvenItem<T> item = new OddEvenItem<>(id, index, model);
if (togglePanel != null) {
- final ActionsPanel<T> actions = getActions(model);
+ ActionsPanel<T> actions = getActions(model);
if (actions != null && !actions.isEmpty()) {
item.add(new AttributeModifier("style", "cursor: pointer;"));
@@ -137,7 +140,7 @@ public class AjaxFallbackDataTable<T extends Serializable,
S> extends DataTable<
@Override
protected void onEvent(final AjaxRequestTarget target) {
- final String lastFocussedElementId =
target.getLastFocusedElementId();
+ String lastFocussedElementId =
target.getLastFocusedElementId();
if (lastFocussedElementId == null) {
togglePanel.toggleWithContent(target,
getActions(model), model.getObject());
} else {
@@ -166,6 +169,15 @@ public class AjaxFallbackDataTable<T extends Serializable,
S> extends DataTable<
}
}
});
+ item.add(new AjaxEventBehavior(Constants.ON_DOUBLE_CLICK) {
+
+ private static final long serialVersionUID =
-4255753643957306394L;
+
+ @Override
+ protected void onEvent(final AjaxRequestTarget target) {
+ onDoubleClick(target, model);
+ }
+ });
}
}