You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/05/18 15:29:26 UTC
[isis] branch master updated: ISIS-3053: don't apply tooltips directly to ActionLinks
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 9e59d9ce77 ISIS-3053: don't apply tooltips directly to ActionLinks
9e59d9ce77 is described below
commit 9e59d9ce775b1187a4ee07a7100cdf414e1a1c4e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 18 17:29:20 2022 +0200
ISIS-3053: don't apply tooltips directly to ActionLinks
- instead apply them to their parent <li>
---
.../actionmenu/entityactions/AdditionalLinksPanel.java | 4 ++--
.../java/org/apache/isis/viewer/wicket/ui/util/Wkt.java | 14 ++++++++++++--
.../apache/isis/viewer/wicket/ui/util/WktDecorators.java | 3 +--
.../org/apache/isis/viewer/wicket/ui/util/WktLinks.java | 8 ++++++--
.../org/apache/isis/viewer/wicket/ui/util/WktTooltips.java | 12 ++++++++++++
.../wicketapp/IsisWicketAjaxRequestListenerUtil.java | 13 ++++---------
6 files changed, 37 insertions(+), 17 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
index 1d3d59b880..3d0c1599b5 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
@@ -26,8 +26,8 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
-import org.apache.isis.viewer.wicket.ui.util.WktComponents;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
+import org.apache.isis.viewer.wicket.ui.util.WktComponents;
import org.apache.isis.viewer.wicket.ui.util.WktLinks;
import lombok.val;
@@ -82,7 +82,7 @@ extends PanelAbstract<List<LinkAndLabel>, ListOfLinksModel> {
Wkt.listViewAdd(container, ID_ADDITIONAL_LINK_ITEM, getModel(), item->{
val linkAndLabel = item.getModelObject();
- item.addOrReplace(WktLinks.asAdditionalLink(ID_ADDITIONAL_LINK_TITLE, linkAndLabel));
+ item.addOrReplace(WktLinks.asAdditionalLink(item, ID_ADDITIONAL_LINK_TITLE, linkAndLabel));
});
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
index 51db7e14b4..d0ae70c970 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
@@ -93,6 +93,8 @@ import lombok.experimental.UtilityClass;
import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
import de.agilecoders.wicket.core.util.Attributes;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkboxx.CheckBoxX;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkboxx.CheckBoxXConfig;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkboxx.CheckBoxXConfig.Sizes;
@@ -218,6 +220,10 @@ public class Wkt {
return new ReplaceDisabledTagWithReadonlyTagBehavior();
}
+ public Behavior behaviorConfirm(final ConfirmationConfig config) {
+ return new ConfirmationBehavior(config);
+ }
+
public Behavior behaviorAddOnClick(
final Component component,
final SerializableConsumer<AjaxRequestTarget> onClick) {
@@ -230,6 +236,12 @@ public class Wkt {
return add(component, behaviorFireOnEscapeKey(onRespond));
}
+ public Behavior behaviorAddConfirm(
+ final Component component,
+ final ConfirmationConfig config) {
+ return add(component, behaviorConfirm(config));
+ }
+
public void behaviorAddReplaceDisabledTagWithReadonlyTag(final @Nullable Component component) {
if(component==null) {
return;
@@ -1048,6 +1060,4 @@ public class Wkt {
}
}
-
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktDecorators.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktDecorators.java
index 106c5cb1fd..6e8eadf130 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktDecorators.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktDecorators.java
@@ -50,7 +50,6 @@ import lombok.experimental.UtilityClass;
import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameRemover;
import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig.Placement;
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
/**
@@ -128,7 +127,7 @@ public class WktDecorators {
.withBtnCancelClass(ButtonSemantics.SECONDARY.fullButtonCss())
.withPlacement(Placement.valueOf(decorationModel.getPlacement().name().toLowerCase()));
- uiComponent.add(new ConfirmationBehavior(confirmationConfig));
+ Wkt.behaviorAddConfirm(uiComponent, confirmationConfig);
if(uiComponent instanceof Button) {
// ensure dialog ok buttons receive the danger style as well
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktLinks.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktLinks.java
index c87e8c4280..1a7f9fc63d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktLinks.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktLinks.java
@@ -56,8 +56,12 @@ public final class WktLinks {
/**
* For rendering {@link LinkAndLabel} within additional-link panels or drop-downs.
+ * @param tooltipReceiver
*/
- public AbstractLink asAdditionalLink(final String titleId, final LinkAndLabel linkAndLabel) {
+ public AbstractLink asAdditionalLink(
+ final ListItem<LinkAndLabel> tooltipReceiver,
+ final String titleId,
+ final LinkAndLabel linkAndLabel) {
val link = linkAndLabel.getUiComponent();
val action = linkAndLabel.getManagedAction().getAction();
@@ -66,7 +70,7 @@ public final class WktLinks {
? _Strings.isNotEmpty(((ActionLink)link).getReasonDisabledIfAny())
: false;
- WktTooltips.addTooltip(link, hasDisabledReason
+ WktTooltips.addTooltip(tooltipReceiver, hasDisabledReason
? ((ActionLink) link).getReasonDisabledIfAny()
: linkAndLabel.getDescription().orElse(null));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktTooltips.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktTooltips.java
index 8fe398dfd2..19c97bd77e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktTooltips.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktTooltips.java
@@ -27,6 +27,7 @@ import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.viewer.common.model.PlacementDirection;
import org.apache.isis.viewer.common.model.decorators.TooltipDecorator.TooltipDecorationModel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLink;
import org.apache.isis.viewer.wicket.ui.util.ExtendedPopoverConfig.PopoverBoundary;
import lombok.NonNull;
@@ -58,6 +59,17 @@ public class WktTooltips {
return target; // no body so don't render tooltip
}
+ if(target instanceof ActionLink) {
+ val actionLink = (ActionLink)target;
+ if(!actionLink.getActionModel().hasParameters()) {
+ //XXX[ISIS-3051] adding a tooltip to an ActionLink will break any ConfirmationBehavior,
+ //that's also applied to the ActionLink.
+ throw _Exceptions.illegalArgument(
+ "Adding a tooltip to an ActionLink will break any ConfirmationBehavior, "
+ + "that's also applied to same ActionLink!");
+ }
+ }
+
val placementDirection = tooltipDecorationModel.getPlacementDirection();
final IModel<String> bodyModel = Model.of(tooltipDecorationModel.getBody());
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
index 1998424556..d170764a32 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
@@ -28,8 +28,7 @@ import org.apache.wicket.request.Request;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
-import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
-import org.apache.isis.viewer.wicket.ui.pages.standalonecollection.StandaloneCollectionPage;
+import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
import lombok.val;
import lombok.experimental.UtilityClass;
@@ -58,13 +57,9 @@ public final class IsisWicketAjaxRequestListenerUtil {
final IRequestablePage iRequestablePage =
((ListenerRequestHandler)handler).getPage();
- if(iRequestablePage instanceof StandaloneCollectionPage) {
- val collectionPage = (StandaloneCollectionPage) iRequestablePage;
- collectionPage.onNewRequestCycle();
- }
- else if(iRequestablePage instanceof EntityPage) {
- val entityPage = (EntityPage) iRequestablePage;
- entityPage.onNewRequestCycle();
+ if(iRequestablePage instanceof PageAbstract) {
+ val pageAbstract = (PageAbstract) iRequestablePage;
+ pageAbstract.onNewRequestCycle();
}
}