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/06/24 14:33:15 UTC

[isis] 01/02: ISIS-2340: simplify ActionLinkUiModelFactory

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 ace8369d556861c8ff1390528b6328f1aac634e0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 24 13:10:16 2020 +0200

    ISIS-2340: simplify ActionLinkUiModelFactory
---
 .../javafx/model/action/ActionLinkFactoryFx.java   | 32 ++--------------------
 .../viewer/javafx/model/action/ActionLinkFx.java   | 31 +++++++++++++++++++--
 .../viewer/javafx/ui/main/MenuBuilderFx.java       |  4 +--
 .../viewer/javafx/ui/main/UiController.java        |  4 +--
 .../vaadin/model/action/ActionLinkFactoryVaa.java  |  6 ++--
 .../model/action/ActionLinkUiModelFactory.java     |  7 +----
 .../model/menu/MenuUiModel_buildMenuItems.java     |  3 +-
 .../common/model/object/SimpleObjectUiModel.java   |  3 --
 .../serviceactions/ServiceActionUtil.java          | 10 ++++---
 9 files changed, 44 insertions(+), 56 deletions(-)

diff --git a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java
index 315fed0..3715198 100644
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java
+++ b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java
@@ -20,50 +20,22 @@ package org.apache.isis.incubator.viewer.javafx.model.action;
 
 
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
-import org.apache.isis.core.runtime.context.IsisAppCommonContext;
-import org.apache.isis.viewer.common.model.action.ActionLinkUiModel;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiModelFactory;
-import org.apache.isis.viewer.common.model.object.SimpleObjectUiModel;
 
 import lombok.RequiredArgsConstructor;
-import lombok.val;
 
 import javafx.scene.Node;
-import javafx.scene.control.Label;
 
 @RequiredArgsConstructor
 public class ActionLinkFactoryFx implements ActionLinkUiModelFactory<Node> {
 
     @Override
-    public ActionLinkFx newAction(
-            IsisAppCommonContext commonContext, 
+    public ActionLinkFx newActionLink(
             String named,
             ManagedAction managedAction) {
         
-        val actionOwnerModel = new SimpleObjectUiModel(commonContext, managedAction.getOwner());
-        
-        val actionUiModel = new ActionLinkFx(
-                this::createUiComponent,
-                named,
-                actionOwnerModel, 
-                managedAction.getAction());
-        
-        return actionUiModel;
-    }
-    
-    // -- HELPER
-    
-    private Node createUiComponent(
-            final ActionLinkUiModel<Node> actionUiModel) {
-        
-        val actionMeta = actionUiModel.getActionUiMetaModel();
-        val uiLabel = new Label(actionMeta.getLabel());
-        
-        return uiLabel;
-        //return Decorators.getIcon().decorate(uiLabel, actionMeta.getFontAwesomeUiModel());
-                
+        return ActionLinkFx.of(named, managedAction);
     }
 
-
     
 }
\ No newline at end of file
diff --git a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
index 330a76c..ad586cf 100644
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
+++ b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
@@ -18,18 +18,33 @@
  */
 package org.apache.isis.incubator.viewer.javafx.model.action;
 
+import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.common.model.HasUiMenuItem;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiComponentFactory;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiModel;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel;
+import org.apache.isis.viewer.common.model.object.SimpleObjectUiModel;
+
+import lombok.val;
 
 import javafx.scene.Node;
+import javafx.scene.control.Label;
 import javafx.scene.control.Menu;
 
-public class ActionLinkFx extends ActionLinkUiModel<Node> implements HasUiMenuItem<Menu>{
+public class ActionLinkFx 
+extends ActionLinkUiModel<Node> 
+implements HasUiMenuItem<Menu>{
 
-    public ActionLinkFx(
+    public static ActionLinkFx of(
+            final String named,
+            final ManagedAction managedAction) {
+        
+        val actionOwnerModel = new SimpleObjectUiModel(managedAction.getOwner());
+        return new ActionLinkFx(ActionLinkFx::createUiComponent, named, actionOwnerModel, managedAction.getAction());
+    }
+    
+    protected ActionLinkFx(
             final ActionLinkUiComponentFactory<Node> uiComponentFactory,
             final String named,
             final ObjectUiModel actionHolder,
@@ -38,6 +53,18 @@ public class ActionLinkFx extends ActionLinkUiModel<Node> implements HasUiMenuIt
         super(uiComponentFactory, named, actionHolder, objectAction);
     }
 
+
+    private static Node createUiComponent(
+            final ActionLinkUiModel<Node> actionUiModel) {
+        
+        val actionMeta = actionUiModel.getActionUiMetaModel();
+        val uiLabel = new Label(actionMeta.getLabel());
+        
+        return uiLabel;
+        //return Decorators.getIcon().decorate(uiLabel, actionMeta.getFontAwesomeUiModel());
+                
+    }
+    
     @Override
     public Menu getUiMenuItem() {
         return new Menu(super.getLabel());
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
index 492de92..7164126 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
@@ -20,7 +20,6 @@ package org.apache.isis.incubator.viewer.javafx.ui.main;
 
 import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
-import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 import org.apache.isis.incubator.viewer.javafx.model.action.ActionLinkFactoryFx;
 import org.apache.isis.viewer.common.model.menu.MenuBuilder;
 
@@ -35,7 +34,6 @@ import javafx.scene.control.MenuBar;
 @Log4j2
 public class MenuBuilderFx implements MenuBuilder {
     
-    private final IsisAppCommonContext commonContext;
     private final MenuBar menuBar;
     
     private Menu currentTopLevelMenu = null;
@@ -61,7 +59,7 @@ public class MenuBuilderFx implements MenuBuilder {
     public void addSubMenu(String named, ManagedAction managedAction) {
         log.info("top level menu {}", managedAction.getName());
         
-        val actionLink = actionLinkFactory.newAction(commonContext, named, managedAction);
+        val actionLink = actionLinkFactory.newActionLink(named, managedAction);
         currentTopLevelMenu.getItems().add(actionLink.getUiMenuItem());
     }
     
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
index 2fc80f9..7ebd01e 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiController.java
@@ -57,8 +57,8 @@ public class UiController {
         
         val commonContext = IsisAppCommonContext.of(metaModelContext);
         
-        val leftMenuBuilder = MenuBuilderFx.of(commonContext, menuBarLeft);
-        val rightMenuBuilder = MenuBuilderFx.of(commonContext, menuBarRight);
+        val leftMenuBuilder = MenuBuilderFx.of(menuBarLeft);
+        val rightMenuBuilder = MenuBuilderFx.of(menuBarRight);
         
         header.getPrimary().buildMenuItems(commonContext, leftMenuBuilder);
         header.getSecondary().buildMenuItems(commonContext, rightMenuBuilder);
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
index 7438d2c..5faba5c 100644
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
+++ b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
@@ -22,7 +22,6 @@ import com.vaadin.flow.component.Component;
 import com.vaadin.flow.component.html.Label;
 
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
-import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 import org.apache.isis.incubator.viewer.vaadin.model.decorator.Decorators;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiModel;
 import org.apache.isis.viewer.common.model.action.ActionLinkUiModelFactory;
@@ -35,12 +34,11 @@ import lombok.val;
 public class ActionLinkFactoryVaa implements ActionLinkUiModelFactory<Component> {
 
     @Override
-    public ActionLinkUiModel<Component> newAction(
-            IsisAppCommonContext commonContext, 
+    public ActionLinkUiModel<Component> newActionLink(
             String named,
             ManagedAction managedAction) {
         
-        val actionOwnerModel = new SimpleObjectUiModel(commonContext, managedAction.getOwner());
+        val actionOwnerModel = new SimpleObjectUiModel(managedAction.getOwner());
         
         val actionUiModel = new ActionLinkVaa(
                 this::createUiComponent,
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModelFactory.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModelFactory.java
index c6c711f..ae602d4 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModelFactory.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModelFactory.java
@@ -19,7 +19,6 @@
 package org.apache.isis.viewer.common.model.action;
 
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
-import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 
 /**
  * Creates an {@link ActionLinkUiModel}, a holder of the <em>Action's</em> meta-model 
@@ -33,14 +32,10 @@ import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 public interface ActionLinkUiModelFactory<T> {
     
     /**
-     * 
-     * @param commonContext
      * @param named - used when explicitly named (eg. menu bar layout file), otherwise {@code null}
      * @param managedAction
-     * @return
      */
-    ActionLinkUiModel<T> newAction(
-            IsisAppCommonContext commonContext, 
+    ActionLinkUiModel<T> newActionLink(
             String named,
             ManagedAction managedAction);
     
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
index 6ad1b97..40d5220 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
@@ -76,8 +76,7 @@ final class MenuUiModel_buildMenuItems {
                     
                     val isFirstInSection = itemsPerSectionCounter.intValue()==0; 
                     
-                    val menuActionUiModel = menuActionFactory.newAction(
-                            commonContext,
+                    val menuActionUiModel = menuActionFactory.newActionLink(
                             actionLayoutData.getNamed(),
                             managedAction);
 
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/SimpleObjectUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/SimpleObjectUiModel.java
index 6503a73..5bc0a59 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/SimpleObjectUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/SimpleObjectUiModel.java
@@ -19,7 +19,6 @@
 package org.apache.isis.viewer.common.model.object;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 
 import lombok.Getter;
 import lombok.NonNull;
@@ -28,8 +27,6 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class SimpleObjectUiModel implements ObjectUiModel {
 
-    private final IsisAppCommonContext commonContext;
-    
     @NonNull @Getter(onMethod = @__(@Override))
     private final ManagedObject managedObject;
 
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 4ed5660..a09ff5c 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
@@ -39,6 +39,7 @@ import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.isis.viewer.wicket.ui.util.Decorators;
 
+import lombok.RequiredArgsConstructor;
 import lombok.val;
 import lombok.experimental.UtilityClass;
 
@@ -105,12 +106,13 @@ public final class ServiceActionUtil {
         folderItem.add(subMenuItemsView);
     }
 
-
+    @RequiredArgsConstructor
     private static class MenuActionFactoryWkt implements ActionLinkUiModelFactory<AbstractLink> {
 
+        private final IsisAppCommonContext commonContext;
+        
         @Override
-        public LinkAndLabel newAction(
-                IsisAppCommonContext commonContext, 
+        public LinkAndLabel newActionLink(
                 String named, 
                 ManagedAction managedAction) {
         
@@ -137,7 +139,7 @@ public final class ServiceActionUtil {
         
         menuUiModel.buildMenuItems(
                 commonContext, 
-                new MenuActionFactoryWkt(),
+                new MenuActionFactoryWkt(commonContext),
                 CssMenuItem::newMenuItem,
                 onNewMenuItem);
     }