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