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 2020/04/12 14:43:34 UTC

[isis] branch master updated: ISIS-2340: some cleanup and comments

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 950b0f3  ISIS-2340: some cleanup and comments
950b0f3 is described below

commit 950b0f38686af2e5ab220efd401a2ef439d7028b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Apr 12 16:43:22 2020 +0200

    ISIS-2340: some cleanup and comments
---
 .../action/ActionLinkUiComponentDecorator.java     | 21 ++++++++++++++++---
 .../serviceactions/ServiceActionUtil.java          | 23 +++------------------
 .../isis/viewer/wicket/ui/util/Decorators.java     | 24 +++++++++++++++++-----
 3 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
index 0e756c5..ca16b94 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
@@ -24,6 +24,8 @@ import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmDecorator;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
 import org.apache.isis.viewer.common.model.decorator.disable.DisableDecorator;
+import org.apache.isis.viewer.common.model.decorator.fa.FontAwesomeDecorator;
+import org.apache.isis.viewer.common.model.decorator.prototyping.PrototypingDecorator;
 import org.apache.isis.viewer.common.model.decorator.tooltip.TooltipDecorator;
 import org.apache.isis.viewer.common.model.decorator.tooltip.TooltipUiModel;
 
@@ -44,8 +46,17 @@ public class ActionLinkUiComponentDecorator<T> {
     private final TooltipDecorator<T> tooltipDecorator;
     private final DisableDecorator<T> disableDecorator;
     private final ConfirmDecorator<T> confirmDecorator;
+    private final PrototypingDecorator<T> prototypingDecorator;
+    private final FontAwesomeDecorator<T> faDecorator;
 
-    public void decorate(TranslationService translationService, T uiComponent, ActionUiModel<? extends T> actionUiModel) {
+    //TODO this is yet the result of refactoring the logic originating from the wicket viewer
+    //there is a little design flaw yet: this code decorates 2 UI components at once which is confusing 
+    public void decorateMenuItem(
+            final T uiComponent, // with wicket this is a menu item component
+            final ActionUiModel<? extends T> actionUiModel,
+            final TranslationService translationService) {
+        
+        val actionLinkUiComponent = actionUiModel.getUiComponent();
         val actionMeta = actionUiModel.getActionUiMetaModel();
         
         val disableUiModel = actionMeta.getDisableUiModel();
@@ -63,14 +74,18 @@ public class ActionLinkUiComponentDecorator<T> {
             //XXX ISIS-1626, confirmation dialog for no-parameter menu actions
             if (actionMeta.isRequiresImmediateConfirmation()) {
                 
-                val actionLinkUiComponent = actionUiModel.getUiComponent();
-
                 val confirmUiModel = ConfirmUiModel.ofAreYouSure(translationService, Placement.BOTTOM);
                 confirmDecorator.decorate(actionLinkUiComponent, confirmUiModel);
                 
             }
             
         }
+        
+        if (actionMeta.isPrototyping()) {
+            prototypingDecorator.decorate(actionLinkUiComponent);
+        }
+        
+        faDecorator.decorate(uiComponent, actionMeta.getFontAwesomeUiModel());
 
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index a17d74c..d748d37 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -29,7 +29,6 @@ import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Fragment;
 
-import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
@@ -47,7 +46,6 @@ import lombok.experimental.UtilityClass;
 //@Log4j2
 public final class ServiceActionUtil {
 
-
     static void addLeafItem(
             IsisWebAppCommonContext commonContext, 
             CssMenuItem menuItem,
@@ -55,34 +53,19 @@ public final class ServiceActionUtil {
             MarkupContainer parent) {
         
         val actionUiModel = menuItem.getMenuActionUiModel();
-        
-        val actionMeta = actionUiModel.getActionUiMetaModel();
         val menuItemActionLink = actionUiModel.getUiComponent();
 
         val menuItemLabel = new Label("menuLinkLabel", menuItem.getName());
         menuItemActionLink.addOrReplace(menuItemLabel);
         
-        Decorators.getActionLink().decorate(
-                commonContext.getTranslationService(), 
+        Decorators.getActionLink().decorateMenuItem(
                 listItem, 
-                actionUiModel);
+                actionUiModel,
+                commonContext.getTranslationService());
         
-
-        if (actionMeta.isPrototyping()) {
-            menuItemActionLink.add(new CssClassAppender("prototype"));
-        }
         val leafItem = new Fragment("content", "leafItem", parent);
         leafItem.add(menuItemActionLink);
 
-        val fontAwesome = actionMeta.getFontAwesomeUiModel();
-        Decorators.getIcon().decorate(menuItemLabel, fontAwesome);
-        Decorators.getMissingIcon().decorate(menuItemActionLink, fontAwesome);
-
-        String cssClass = actionMeta.getCssClass();
-        if (!_Strings.isNullOrEmpty(cssClass)) {
-            menuItemActionLink.add(new CssClassAppender(cssClass));
-        }
-
         listItem.add(leafItem);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
index cca1a4d..b28156b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 import org.apache.wicket.Component;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiComponentDecorator;
 import org.apache.isis.viewer.common.model.action.ActionUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmDecorator;
@@ -122,16 +123,29 @@ public class Decorators {
     public final static class ActionLink extends ActionLinkUiComponentDecorator<Component> {
 
         public ActionLink() {
-            super(getTooltip(), getDisable(), getConfirm());
+            super(getTooltip(), getDisable(), getConfirm(), getPrototyping(), getIcon());
         }
 
         @Override
-        public void decorate(
-                final TranslationService translationService, 
+        public void decorateMenuItem(
                 final Component uiComponent,
-                final ActionUiModel<? extends Component> actionUiModel) {
+                final ActionUiModel<? extends Component> actionUiModel,
+                final TranslationService translationService) {
+            
             addCssClassForAction(uiComponent, actionUiModel);
-            super.decorate(translationService, uiComponent, actionUiModel);
+            super.decorateMenuItem(uiComponent, actionUiModel, translationService);
+            
+            val actionMeta = actionUiModel.getActionUiMetaModel();
+            val fontAwesome = actionMeta.getFontAwesomeUiModel();
+            val actionLinkUiCompnent = actionUiModel.getUiComponent();
+            
+            Decorators.getMissingIcon().decorate(actionLinkUiCompnent, fontAwesome);
+            
+            String cssClass = actionMeta.getCssClass();
+            if (!_Strings.isNullOrEmpty(cssClass)) {
+                actionLinkUiCompnent.add(new CssClassAppender(cssClass));
+            }
+            
         }
         
         private void addCssClassForAction(Component uiComponent, ActionUiModel<?> actionUiModel) {