You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/11/20 07:39:21 UTC

(causeway) branch 3646-fa.layers updated: CAUSEWAY-3646: remove FontAwesomeDecorationModel (no longer needed)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 3646-fa.layers
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/3646-fa.layers by this push:
     new d9aa19a6d1 CAUSEWAY-3646: remove FontAwesomeDecorationModel (no longer needed)
d9aa19a6d1 is described below

commit d9aa19a6d1619f003b43e270337ebce49ba34088
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Nov 20 08:39:17 2023 +0100

    CAUSEWAY-3646: remove FontAwesomeDecorationModel (no longer needed)
---
 .../commons/model/action/HasManagedAction.java     | 16 ++++++---
 .../commons/model/decorators/IconDecorator.java    | 40 +---------------------
 ...assFaBehavior.java => FontAwesomeBehavior.java} | 12 +++----
 .../actionmenu/serviceactions/CssMenuItem.java     |  4 +--
 .../serviceactions/ServiceActionUtil.java          |  6 ++--
 .../viewer/wicket/ui/util/WktDecorators.java       | 13 +++----
 .../causeway/viewer/wicket/ui/util/WktLinks.java   |  6 ++--
 7 files changed, 33 insertions(+), 64 deletions(-)

diff --git a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
index ce6f9dfdf5..b355ccc3d4 100644
--- a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
+++ b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
@@ -24,6 +24,7 @@ import java.util.function.Predicate;
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.BookmarkPolicy;
+import org.apache.causeway.applib.fa.FontAwesomeLayers;
 import org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead;
 import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
@@ -31,7 +32,6 @@ import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.util.Facets;
 import org.apache.causeway.viewer.commons.model.decorators.DisablingDecorator.DisablingDecorationModel;
-import org.apache.causeway.viewer.commons.model.decorators.IconDecorator.FontAwesomeDecorationModel;
 
 import lombok.val;
 
@@ -92,13 +92,21 @@ public interface HasManagedAction {
 
     // -- UI SPECIFICS
 
-    default Optional<FontAwesomeDecorationModel> getFontAwesomeUiModel(final boolean forceAlignmentOnIconAbsence) {
+    /**
+     * @param forceAlignmentOnIconAbsence enforced in drop-dows,
+     *      but not in horizontal action panels,
+     *      where e.g. LinkAndLabel correspond to a UI button.
+     */
+    default Optional<FontAwesomeLayers> lookupFontAwesomeLayers(final boolean forceAlignmentOnIconAbsence) {
         val managedAction = getManagedAction();
         return ObjectAction.Util.cssClassFaFactoryFor(
                     managedAction.getAction(),
                     managedAction.getOwner())
-                .flatMap(cssClassFaFactory->
-                    FontAwesomeDecorationModel.create(cssClassFaFactory, forceAlignmentOnIconAbsence));
+                .map(cssClassFaFactory->
+                    forceAlignmentOnIconAbsence
+                        ? cssClassFaFactory.getLayers().emptyToBlank()
+                        : cssClassFaFactory.getLayers()
+                    );
     }
 
     default Optional<String> getAdditionalCssClass() {
diff --git a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/IconDecorator.java b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/IconDecorator.java
index 19b787f016..6520b1ae22 100644
--- a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/IconDecorator.java
+++ b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/decorators/IconDecorator.java
@@ -18,18 +18,9 @@
  */
 package org.apache.causeway.viewer.commons.model.decorators;
 
-import java.io.Serializable;
 import java.util.Optional;
 
-import org.springframework.lang.Nullable;
-
 import org.apache.causeway.applib.fa.FontAwesomeLayers;
-import org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFactory;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
 
 /**
  * @param <T> UI component type to decorate
@@ -44,35 +35,6 @@ public interface IconDecorator<T, R> {
      */
     public static final String FONTAWESOME_RESOURCE = "font-awesome/6.4.2/css/all.min.css";
 
-    R decorate(T uiComponent, Optional<FontAwesomeDecorationModel> decorationModel);
-
-    // -- DECORATION MODEL
-
-    @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-    public class FontAwesomeDecorationModel implements Serializable {
-
-        private static final long serialVersionUID = 1L;
-
-        @Getter
-        private final @NonNull FontAwesomeLayers fontAwesomeLayers;
-
-        /**
-         * @param forceAlignmentOnIconAbsence enforced in drop-dows,
-         *      but not in horizontal action panels,
-         *      where e.g. LinkAndLabel correspond to a UI button.
-         */
-        public static Optional<FontAwesomeDecorationModel> create(
-                final @Nullable CssClassFaFactory cssClassFaFactoryIfAny,
-                final boolean forceAlignmentOnIconAbsence) {
-
-            return Optional.ofNullable(cssClassFaFactoryIfAny)
-                .map(cssClassFaFactory->new FontAwesomeDecorationModel(
-                        forceAlignmentOnIconAbsence
-                            ? cssClassFaFactory.getLayers().emptyToBlank()
-                            : cssClassFaFactory.getLayers()
-                        ));
-        }
-
-    }
+    R decorate(T uiComponent, Optional<FontAwesomeLayers> faLayers);
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/FontAwesomeBehavior.java
similarity index 74%
rename from viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java
rename to viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/FontAwesomeBehavior.java
index 43973096a1..9a0caf23d3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/FontAwesomeBehavior.java
@@ -21,8 +21,8 @@ package org.apache.causeway.viewer.wicket.ui.components.actionmenu;
 import org.apache.wicket.Component;
 import org.apache.wicket.behavior.Behavior;
 
+import org.apache.causeway.applib.fa.FontAwesomeLayers;
 import org.apache.causeway.applib.layout.component.CssClassFaPosition;
-import org.apache.causeway.viewer.commons.model.decorators.IconDecorator.FontAwesomeDecorationModel;
 
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
@@ -32,26 +32,24 @@ import lombok.RequiredArgsConstructor;
  * for a LinkAndLabel
  */
 @RequiredArgsConstructor
-public class CssClassFaBehavior extends Behavior {
+public class FontAwesomeBehavior extends Behavior {
 
     private static final long serialVersionUID = 1L;
 
-    @NonNull private final FontAwesomeDecorationModel fontAwesomeDecorationModel;
+    @NonNull private final FontAwesomeLayers faLayers;
 
     @Override
     public void beforeRender(final Component component) {
         super.beforeRender(component);
-        var faLayers = fontAwesomeDecorationModel.getFontAwesomeLayers();
         if(CssClassFaPosition.isLeftOrUnspecified(faLayers.postition())) {
-            component.getResponse().write(fontAwesomeDecorationModel.getFontAwesomeLayers().toHtml());
+            component.getResponse().write(faLayers.toHtml());
         }
     }
 
     @Override
     public void afterRender(final Component component) {
-        var faLayers = fontAwesomeDecorationModel.getFontAwesomeLayers();
         if(!CssClassFaPosition.isLeftOrUnspecified(faLayers.postition())) {
-            component.getResponse().write(fontAwesomeDecorationModel.getFontAwesomeLayers().toHtml());
+            component.getResponse().write(faLayers.toHtml());
         }
         super.afterRender(component);
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index 533275ffa8..ff593f232b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -134,8 +134,8 @@ implements Menuable {
 
             Wkt.cssAppend(actionLink, linkAndLabel.getFeatureIdentifier());
 
-            val fontAwesome = getLinkAndLabel().getFontAwesomeUiModel(true);
-            WktDecorators.getIcon().decorate(label, fontAwesome);
+            val faLayers = getLinkAndLabel().lookupFontAwesomeLayers(true);
+            WktDecorators.getIcon().decorate(label, faLayers);
 
             linkAndLabel.getDisableUiModel().ifPresent(disableUiModel->{
                 WktDecorators.getDisable().decorate(actionLink, disableUiModel);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index 05be9ce5f9..213d6132af 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -59,9 +59,9 @@ public final class ServiceActionUtil {
                 actionUiModel,
                 commonContext.getTranslationService());
 
-        val fontAwesome = actionUiModel.getFontAwesomeUiModel(true);
-        WktDecorators.getIcon().decorate(menuItemLabel, fontAwesome);
-        WktDecorators.getMissingIcon().decorate(menuItemActionLink, fontAwesome);
+        val faLayers = actionUiModel.lookupFontAwesomeLayers(true);
+        WktDecorators.getIcon().decorate(menuItemLabel, faLayers);
+        WktDecorators.getMissingIcon().decorate(menuItemActionLink, faLayers);
 
         val leafItem = new Fragment("content", "leafItem", parent);
         leafItem.add(menuItemActionLink);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktDecorators.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktDecorators.java
index c27201cd8c..f3e0f166dd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktDecorators.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktDecorators.java
@@ -25,6 +25,7 @@ import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
+import org.apache.causeway.applib.fa.FontAwesomeLayers;
 import org.apache.causeway.applib.services.i18n.TranslationService;
 import org.apache.causeway.commons.internal.base._Casts;
 import org.apache.causeway.commons.internal.base._Strings;
@@ -41,7 +42,7 @@ import org.apache.causeway.viewer.commons.model.decorators.TooltipDecorator;
 import org.apache.causeway.viewer.commons.model.decorators.TooltipDecorator.TooltipDecorationModel;
 import org.apache.causeway.viewer.commons.model.layout.UiPlacementDirection;
 import org.apache.causeway.viewer.wicket.model.links.LinkAndLabel;
-import org.apache.causeway.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
+import org.apache.causeway.viewer.wicket.ui.components.actionmenu.FontAwesomeBehavior;
 import org.apache.causeway.viewer.wicket.ui.util.BootstrapConstants.ButtonSemantics;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig.Placement;
@@ -145,9 +146,9 @@ public class WktDecorators {
 
     public final static class IconDecoratorWkt implements IconDecorator<Component, Component> {
         @Override
-        public Component decorate(final Component uiComponent, final Optional<FontAwesomeDecorationModel> fontAwesome) {
-            if(fontAwesome.isPresent()) {
-                uiComponent.add(new CssClassFaBehavior(fontAwesome.get()));
+        public Component decorate(final Component uiComponent, final Optional<FontAwesomeLayers> faLayers) {
+            if(faLayers.isPresent()) {
+                uiComponent.add(new FontAwesomeBehavior(faLayers.get()));
             }
             return uiComponent;
         }
@@ -155,8 +156,8 @@ public class WktDecorators {
 
     public final static class MissingIconDecorator implements IconDecorator<Component, Component> {
         @Override
-        public Component decorate(final Component uiComponent, final Optional<FontAwesomeDecorationModel> fontAwesome) {
-            if(fontAwesome.isEmpty()) {
+        public Component decorate(final Component uiComponent, final Optional<FontAwesomeLayers> faLayers) {
+            if(faLayers.isEmpty()) {
                 Wkt.cssAppend(uiComponent, "menuLinkSpacer");
             }
             return uiComponent;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
index 95a7f913c2..eca70eab92 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktLinks.java
@@ -107,10 +107,10 @@ public final class WktLinks {
         val viewTitleLabel = Wkt.labelAdd(link, titleId,
                 linkAndLabel::getFriendlyName);
 
-        val fontAwesome = linkAndLabel.getFontAwesomeUiModel(isForceAlignmentWithBlankIcon);
+        val faLayers = linkAndLabel.lookupFontAwesomeLayers(isForceAlignmentWithBlankIcon);
 
-        WktDecorators.getIcon().decorate(viewTitleLabel, fontAwesome);
-        WktDecorators.getMissingIcon().decorate(viewTitleLabel, fontAwesome);
+        WktDecorators.getIcon().decorate(viewTitleLabel, faLayers);
+        WktDecorators.getMissingIcon().decorate(viewTitleLabel, faLayers);
         return link;
     }