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 20:17:11 UTC

[isis] 03/03: ISIS-2340: fx/vaa: use simpler Action Models

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 6c25cd70af29a4df9dd47793d023f96c461dd305
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 24 22:16:49 2020 +0200

    ISIS-2340: fx/vaa: use simpler Action Models
---
 .../viewer/javafx/model/action/ActionLinkFx.java   | 72 ----------------------
 .../viewer/javafx/ui/main/MenuBuilderFx.java       |  4 +-
 .../vaadin/model/action/ActionLinkFactoryVaa.java  | 64 -------------------
 .../viewer/vaadin/model/action/ActionLinkVaa.java  | 39 ------------
 .../model/action/ActionUiModelFactoryVaa.java}     | 22 ++-----
 .../vaadin/model/action/ActionUiModelVaa.java      | 39 ++++++++++++
 .../viewer/vaadin/model/menu/MenuItemVaa.java      | 49 ---------------
 .../vaadin/ui/pages/main/MenuBuilderVaa.java       |  8 +--
 8 files changed, 50 insertions(+), 247 deletions(-)

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
deleted file mode 100644
index e0b4872..0000000
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-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.ActionUiMetaModel;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiComponentFactory;
-import org.apache.isis.viewer.common.model.action.link.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 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,
-            final ObjectAction objectAction) {
-        
-        super(uiComponentFactory, named, actionHolder, objectAction);
-    }
-
-
-    private static Node createUiComponent(final ActionUiMetaModel actionMeta) {
-        
-        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 0669d97..2e8086d 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
@@ -53,8 +53,8 @@ public class MenuBuilderFx implements MenuVisitor {
         
         log.info("sub menu {}", menu.getName());
         
-        val actionLink = actionUiModelFactory.newActionUiModel(managedAction);
-        currentTopLevelMenu.getItems().add(actionLink.createMenuUiComponent());
+        val actionUiModel = actionUiModelFactory.newActionUiModel(managedAction);
+        currentTopLevelMenu.getItems().add(actionUiModel.createMenuUiComponent());
     }
     
     @Override
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
deleted file mode 100644
index b20a5f2..0000000
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.incubator.viewer.vaadin.model.action;
-
-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.incubator.viewer.vaadin.model.decorator.Decorators;
-import org.apache.isis.viewer.common.model.action.ActionUiMetaModel;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiModel;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiModelFactory;
-import org.apache.isis.viewer.common.model.object.SimpleObjectUiModel;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-@RequiredArgsConstructor
-public class ActionLinkFactoryVaa implements ActionLinkUiModelFactory<Component> {
-
-    @Override
-    public ActionLinkUiModel<Component> newActionLink(
-            String named,
-            ManagedAction managedAction) {
-        
-        val actionOwnerModel = new SimpleObjectUiModel(managedAction.getOwner());
-        
-        val actionUiModel = new ActionLinkVaa(
-                this::createUiComponent,
-                named,
-                actionOwnerModel, 
-                managedAction.getAction());
-        
-        return actionUiModel;
-    }
-    
-    // -- HELPER
-    
-    private Component createUiComponent(final ActionUiMetaModel actionMeta) {
-        
-        val uiLabel = new Label(actionMeta.getLabel());
-        
-        return Decorators.getIcon().decorate(uiLabel, actionMeta.getFontAwesomeUiModel());
-    }
-
-
-    
-}
\ No newline at end of file
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkVaa.java
deleted file mode 100644
index b3054d0..0000000
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkVaa.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.incubator.viewer.vaadin.model.action;
-
-import com.vaadin.flow.component.Component;
-
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiComponentFactory;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiModel;
-import org.apache.isis.viewer.common.model.object.ObjectUiModel;
-
-public class ActionLinkVaa extends ActionLinkUiModel<Component> {
-
-    public ActionLinkVaa(
-            final ActionLinkUiComponentFactory<Component> uiComponentFactory,
-            final String named,
-            final ObjectUiModel actionHolder,
-            final ObjectAction objectAction) {
-        
-        super(uiComponentFactory, named, actionHolder, objectAction);
-    }
-    
-}
diff --git a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelFactoryVaa.java
similarity index 64%
rename from incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java
rename to incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelFactoryVaa.java
index 7c56e62..94b39cf 100644
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFactoryFx.java
+++ b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelFactoryVaa.java
@@ -16,26 +16,14 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.incubator.viewer.javafx.model.action;
-
+package org.apache.isis.incubator.viewer.vaadin.model.action;
 
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
-import org.apache.isis.viewer.common.model.action.link.ActionLinkUiModelFactory;
-
-import lombok.RequiredArgsConstructor;
 
-import javafx.scene.Node;
+public class ActionUiModelFactoryVaa {
 
-@RequiredArgsConstructor
-public class ActionLinkFactoryFx implements ActionLinkUiModelFactory<Node> {
-
-    @Override
-    public ActionLinkFx newActionLink(
-            String named,
-            ManagedAction managedAction) {
-        
-        return ActionLinkFx.of(named, managedAction);
+    public ActionUiModelVaa newActionUiModel(ManagedAction managedAction) {
+        return ActionUiModelVaa.of(managedAction);
     }
-
     
-}
\ No newline at end of file
+}
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelVaa.java
new file mode 100644
index 0000000..61991db
--- /dev/null
+++ b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionUiModelVaa.java
@@ -0,0 +1,39 @@
+package org.apache.isis.incubator.viewer.vaadin.model.action;
+
+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.incubator.viewer.vaadin.model.decorator.Decorators;
+import org.apache.isis.viewer.common.model.action.ActionUiMetaModel;
+import org.apache.isis.viewer.common.model.action.ActionUiModel;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+@RequiredArgsConstructor(staticName = "of")
+public class ActionUiModelVaa implements ActionUiModel<Component, Component> {
+
+    @Getter 
+    private final ManagedAction managedAction;
+    
+    @Getter(lazy = true, onMethod_ = {@Override}) 
+    private final ActionUiMetaModel actionUiMetaModel = ActionUiMetaModel.of(getManagedAction());
+
+
+    @Override
+    public Component createMenuUiComponent() {
+        return createRegularUiComponent(); 
+    }
+
+    @Override
+    public Component createRegularUiComponent() {
+        val actionMeta = getActionUiMetaModel();
+        val uiLabel = new Label(actionMeta.getLabel());
+        
+        return Decorators.getIcon().decorate(uiLabel, actionMeta.getFontAwesomeUiModel());
+    }
+
+
+}
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/menu/MenuItemVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/menu/MenuItemVaa.java
deleted file mode 100644
index e70dfe6..0000000
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/menu/MenuItemVaa.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.incubator.viewer.vaadin.model.menu;
-
-import com.vaadin.flow.component.Component;
-
-import org.apache.isis.viewer.common.model.menuitem.MenuItemUiModel;
-
-import lombok.val;
-
-/**
- * @since 2.0.0
- */
-//@Log4j2
-public class MenuItemVaa 
-extends MenuItemUiModel<Component, MenuItemVaa> {
-
-    public static MenuItemVaa newMenuItem(final String label) {
-        return new MenuItemVaa(label);
-    }
-
-    private MenuItemVaa(final String label) {
-        super(label);
-    }
-    
-    @Override
-    protected MenuItemVaa newSubMenuItem(final String label) {
-        val subMenuItem = newMenuItem(label);
-        subMenuItem.setParent(this);
-        return subMenuItem;
-    }
-
-}
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
index 01d4ee8..d9a7887 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
@@ -9,7 +9,6 @@ import com.vaadin.flow.component.menubar.MenuBar;
 
 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.action.ActionLinkFactoryVaa;
 import org.apache.isis.incubator.viewer.vaadin.model.decorator.Decorators;
 import org.apache.isis.viewer.common.model.menu.MenuItemDto;
 import org.apache.isis.viewer.common.model.menu.MenuVisitor;
@@ -25,7 +24,7 @@ class MenuBuilderVaa implements MenuVisitor {
     private final MenuBar menuBar;
 
     private MenuItem currentTopLevelMenu = null;
-    private ActionLinkFactoryVaa actionLinkFactory = new ActionLinkFactoryVaa();
+    private org.apache.isis.incubator.viewer.vaadin.model.action.ActionUiModelFactoryVaa actionUiModelFactory = new org.apache.isis.incubator.viewer.vaadin.model.action.ActionUiModelFactoryVaa();
 
     @Override
     public void addTopLevel(MenuItemDto menuDto) {
@@ -42,9 +41,10 @@ class MenuBuilderVaa implements MenuVisitor {
     @Override
     public void addSubMenu(MenuItemDto menu) {
         val managedAction = menu.getManagedAction();
-        val actionLink = actionLinkFactory.newActionLink(menu.getName(), managedAction);
+                
+        val actionUiModel = actionUiModelFactory.newActionUiModel(managedAction);
         currentTopLevelMenu.getSubMenu()
-        .addItem(actionLink.getUiComponent(), e->subMenuEventHandler.accept(managedAction));
+        .addItem(actionUiModel.createMenuUiComponent(), e->subMenuEventHandler.accept(managedAction));
     }
 
     @Override