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