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/04/25 14:29:51 UTC
[isis] 02/02: ISIS-3022: adds support for CTRL down behavior, that is, opens URL in new tab if CTRL pressed
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
commit aacfbd18a3da30e05edd382dc3276a45d6bd4d84
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Apr 25 16:29:41 2022 +0200
ISIS-3022: adds support for CTRL down behavior, that is, opens URL in
new tab if CTRL pressed
---
.../entity/icontitle/EntityIconAndTitlePanel.java | 39 +++++++--------------
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 40 ++++++++++++++++++++++
2 files changed, 53 insertions(+), 26 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 3a649a0a5a..4b2718e57a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -21,11 +21,8 @@ package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
import java.util.Optional;
import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.isis.commons.internal.assertions._Assert;
import org.apache.isis.commons.internal.base._Strings;
@@ -137,31 +134,21 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> {
return link;
}
- private AbstractLink createDynamicallyVisibleLink(final ManagedObject targetAdapter) {
+ private AbstractLink createDynamicallyVisibleLink(final ManagedObject _targetAdapter) {
+ val pageParameters = PageParameterUtils
+ .createPageParametersForBookmarkablePageLink(getModel(), _targetAdapter);
+ val pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
- final ObjectAdapterModel entityModel = getModel();
- final PageParameters pageParameters = PageParameterUtils
- .createPageParametersForBookmarkablePageLink(getModel(), targetAdapter);
- final Class<? extends Page> pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
+ return Wkt.bookmarkablePageLinkWithVisibility(ID_ENTITY_LINK, pageClass, pageParameters, ()->{
+ // not visible if null
+ // (except its null because its a detached entity,
+ // which we can re-fetch due to memoized bookmark)
+ val targetAdapter = EntityIconAndTitlePanel.this.getModel().getObject();
+ return targetAdapter != null
+ && (targetAdapter.getPojo()!=null
+ || targetAdapter.isBookmarkMemoized());
+ });
- final BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>(
- ID_ENTITY_LINK, pageClass, pageParameters) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- // not visible if null
- // (except its null because its a detached entity,
- // which we can re-fetch due to memoized bookmark)
- val targetAdapter = entityModel.getObject();
- return targetAdapter != null
- && (targetAdapter.getPojo()!=null
- || targetAdapter.isBookmarkMemoized());
- }
- };
-
- return link;
}
private String titleAbbreviated(final String titleString) {
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 b343dd6fd8..c3a901f040 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
@@ -25,6 +25,7 @@ import java.util.function.Supplier;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -51,6 +52,7 @@ import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
@@ -59,6 +61,7 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.OddEvenItem;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.convert.IConverter;
@@ -225,6 +228,41 @@ public class Wkt {
}
}
+ // -- BOKMARKABLE PAGE LINK
+
+ public BookmarkablePageLink<Void> bookmarkablePageLinkWithVisibility(
+ final String id,
+ final Class<? extends Page> pageClass,
+ final PageParameters pageParameters,
+ final SerializableBooleanSupplier dynamicVisibility) {
+
+ return new BookmarkablePageLink<Void>(
+ id, pageClass, pageParameters) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return dynamicVisibility.getAsBoolean();
+ }
+
+ //XXX ISIS[3022] adds support for CTRL down behavior, that is, opens URL in new tab if CTRL pressed
+ @Override protected CharSequence getOnClickScript(final CharSequence url) {
+ return "var win = this.ownerDocument.defaultView || this.ownerDocument.parentWindow; "
+ + "if (win == window) {"
+ + " if(event.ctrlKey) {"
+ + " window.open('" + url + "', '_blank').focus();"
+ + " } else {"
+ + " window.location.href='" + url + "';"
+ + " }"
+ + "}"
+ + "return false";
+ }
+
+ };
+
+ }
+
// -- BUTTON
public AjaxButton button(
@@ -987,4 +1025,6 @@ public class Wkt {
}
}
+
+
}