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/20 04:47:42 UTC

[isis] branch master updated: ISIS-3054: don't let CheckBoxX re-express font-awesome css dependencies

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 793a60dd7f ISIS-3054: don't let CheckBoxX re-express font-awesome css dependencies
793a60dd7f is described below

commit 793a60dd7f8a5e0302450d387759da8d3a5e2b20
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 20 06:47:34 2022 +0200

    ISIS-3054: don't let CheckBoxX re-express font-awesome css dependencies
---
 .../select2/Select2BootstrapCssReference.java      | 30 +++++++++++++++++-----
 .../BootstrapOverridesCssResourceReference.java    | 15 ++++++++++-
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |  6 ++---
 .../ui/pages/SidebarCssResourceReference.java      | 17 +++++++++++-
 .../wicket/ui/util/FontAwesomeCssReferenceWkt.java | 22 ++++++++--------
 .../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 21 ++++++++++-----
 .../wicket/viewer/wicketapp/config/Select2Wkt.java |  2 +-
 7 files changed, 82 insertions(+), 31 deletions(-)

diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
index 55feb3b615..1291516ed2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
@@ -21,10 +21,13 @@ package org.apache.isis.viewer.wicket.ui.components.widgets.select2;
 import java.util.List;
 
 import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.CssReferenceHeaderItem;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
-import org.apache.isis.commons.internal.collections._Lists;
+
+import org.apache.isis.viewer.wicket.ui.pages.SidebarCssResourceReference;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
 
 /**
  * A CSS reference that loads <a href="https://github.com/ivaynberg/select2/">Select2.css</a>
@@ -34,14 +37,29 @@ import org.apache.isis.commons.internal.collections._Lists;
 public class Select2BootstrapCssReference extends CssResourceReference {
     private static final long serialVersionUID = 1L;
 
-    public Select2BootstrapCssReference() {
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final Select2BootstrapCssReference instance =
+        new Select2BootstrapCssReference();
+
+    public static CssHeaderItem asHeaderItem() {
+        return CssHeaderItem.forReference(SidebarCssResourceReference.instance());
+    }
+
+    /**
+     * Private constructor.
+     */
+    private Select2BootstrapCssReference() {
         super(Select2BootstrapCssReference.class, "select2-bootstrap.css");
     }
 
     @Override
     public List<HeaderItem> getDependencies() {
-        // CssReferenceHeaderItem select2CssReference = CssHeaderItem.forReference(new CssResourceReference(ApplicationSettings.class, "res/css/select2.css"));
-    	CssReferenceHeaderItem select2CssReference = CssHeaderItem.forReference(new CssResourceReference(Select2BootstrapCssReference.class, "res/css/select2.css"));
-        return _Lists.<HeaderItem>of(select2CssReference);
+        return dependencies();
     }
+
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final List<HeaderItem> dependencies =
+            List.<HeaderItem>of(CssHeaderItem.forReference(
+                    new CssResourceReference(Select2BootstrapCssReference.class, "res/css/select2.css")));
+
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/BootstrapOverridesCssResourceReference.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/BootstrapOverridesCssResourceReference.java
index de53f010f2..682365fa2f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/BootstrapOverridesCssResourceReference.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/BootstrapOverridesCssResourceReference.java
@@ -18,8 +18,12 @@
  */
 package org.apache.isis.viewer.wicket.ui.pages;
 
+import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
 
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
 /**
  * A CSS resource reference that provides CSS rules which override the CSS rules
  * provided by the currently active Bootstrap theme.
@@ -29,7 +33,16 @@ public class BootstrapOverridesCssResourceReference extends CssResourceReference
 
     private static final long serialVersionUID = 1L;
 
-    public BootstrapOverridesCssResourceReference() {
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final BootstrapOverridesCssResourceReference instance =
+        new BootstrapOverridesCssResourceReference();
+
+    public static CssHeaderItem asHeaderItem() {
+        return CssHeaderItem.forReference(BootstrapOverridesCssResourceReference.instance());
+    }
+
+    private BootstrapOverridesCssResourceReference() {
         super(BootstrapOverridesCssResourceReference.class, "bootstrap-overrides-all-v2.css");
     }
+
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 3db0cf0ccb..f4c91a6fa1 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -255,9 +255,9 @@ implements ActionPromptProvider {
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getJQueryReference())));
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BootstrapJavaScriptReference.instance())));
 
-        response.render(CssHeaderItem.forReference(FontAwesomeCssReferenceWkt.instance()));
-        response.render(CssHeaderItem.forReference(new BootstrapOverridesCssResourceReference()));
-        response.render(CssHeaderItem.forReference(new SidebarCssResourceReference()));
+        response.render(FontAwesomeCssReferenceWkt.asHeaderItem());
+        response.render(BootstrapOverridesCssResourceReference.asHeaderItem());
+        response.render(SidebarCssResourceReference.asHeaderItem());
         contributeThemeSpecificOverrides(response);
 
         response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_LIVEQUERY_JS));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java
index e1c6ac752d..9d3a998d4d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/SidebarCssResourceReference.java
@@ -18,8 +18,12 @@
  */
 package org.apache.isis.viewer.wicket.ui.pages;
 
+import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
 
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
 /**
  * A CSS resource reference that provides CSS rules which override the CSS rules
  * provided by the currently active Bootstrap theme.
@@ -28,7 +32,18 @@ import org.apache.wicket.request.resource.CssResourceReference;
 public class SidebarCssResourceReference extends CssResourceReference {
     private static final long serialVersionUID = 1L;
 
-    public SidebarCssResourceReference() {
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final SidebarCssResourceReference instance =
+        new SidebarCssResourceReference();
+
+    public static CssHeaderItem asHeaderItem() {
+        return CssHeaderItem.forReference(SidebarCssResourceReference.instance());
+    }
+
+    /**
+     * Private constructor.
+     */
+    private SidebarCssResourceReference() {
         super(SidebarCssResourceReference.class, "simple-sidebar.css");
     }
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/FontAwesomeCssReferenceWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/FontAwesomeCssReferenceWkt.java
index 2671622267..c2310d98c1 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/FontAwesomeCssReferenceWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/FontAwesomeCssReferenceWkt.java
@@ -18,26 +18,24 @@
  */
 package org.apache.isis.viewer.wicket.ui.util;
 
+import org.apache.wicket.markup.head.CssHeaderItem;
+
 import org.apache.isis.viewer.common.model.decorators.IconDecorator;
 
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
 import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
 
 public class FontAwesomeCssReferenceWkt extends WebjarsCssResourceReference {
     private static final long serialVersionUID = 1L;
 
-    /**
-     * Singleton instance of this reference
-     */
-    private static final class Holder {
-
-        private static final FontAwesomeCssReferenceWkt INSTANCE = new FontAwesomeCssReferenceWkt();
-    }
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final FontAwesomeCssReferenceWkt instance =
+        new FontAwesomeCssReferenceWkt();
 
-    /**
-     * @return the single instance of the resource reference
-     */
-    public static FontAwesomeCssReferenceWkt instance() {
-        return Holder.INSTANCE;
+    public static CssHeaderItem asHeaderItem() {
+        return CssHeaderItem.forReference(FontAwesomeCssReferenceWkt.instance());
     }
 
     /**
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 d0ae70c970..a81529da5b 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
@@ -38,8 +38,10 @@ import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptContentHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -62,8 +64,10 @@ 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.CssResourceReference;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.resource.JQueryPluginResourceReference;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.validation.IValidationError;
 import org.apache.wicket.validation.ValidationError;
@@ -101,6 +105,8 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkboxx.Che
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
 import de.agilecoders.wicket.jquery.Key;
 
+import static de.agilecoders.wicket.jquery.JQuery.$;
+
 /**
  * Wicket common idioms, in alphabetical order.
  */
@@ -396,14 +402,16 @@ public class Wkt {
         .withThreeState(!required);
 
         final CheckBoxX checkBox = new CheckBoxX(id, checkedModel) {
-
             private static final long serialVersionUID = 1L;
-
-            @Override
-            public CheckBoxXConfig getConfig() {
+            @Override public CheckBoxXConfig getConfig() {
                 return config;
             }
-
+            //override to don't express FontAwesome twice, we already do that for all pages
+            @Override public void renderHead(final IHeaderResponse response) {
+                response.render(CssHeaderItem.forReference(new CssResourceReference(CheckBoxX.class, "css/checkbox-x.css")));
+                response.render(JavaScriptHeaderItem.forReference(new JQueryPluginResourceReference(CheckBoxX.class, "js/checkbox-x.js")));
+                response.render(OnDomReadyHeaderItem.forScript($(this).chain("checkboxX", getConfig()).get()));
+            }
             @Override protected void onComponentTag(final ComponentTag tag) {
                 super.onComponentTag(tag);
                 //
@@ -423,8 +431,7 @@ public class Wkt {
                 tag.put("type", "xx");
             }
         };
-        checkBox.setOutputMarkupId(true); // allows AJAX updates to work
-        return checkBox;
+        return ajaxEnable(checkBox);
     }
 
     public static AjaxCheckBox checkbox(
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/Select2Wkt.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/Select2Wkt.java
index d82cf93f99..69dd6a5b25 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/Select2Wkt.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/Select2Wkt.java
@@ -33,7 +33,7 @@ public class Select2Wkt implements WicketApplicationInitializer {
     @Override
     public void init(final WebApplication webApplication) {
         val select2Settings = org.wicketstuff.select2.ApplicationSettings.get();
-        select2Settings.setCssReference(new Select2BootstrapCssReference());
+        select2Settings.setCssReference(Select2BootstrapCssReference.instance());
         select2Settings.setJavascriptReferenceFull(new Select2JsReference());
         select2Settings.setIncludeJavascriptFull(true);
     }