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;
}