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 22:41:52 UTC
[isis] branch master updated: ISIS-2340: fx: menu action handler
stub
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 9f79879 ISIS-2340: fx: menu action handler stub
9f79879 is described below
commit 9f798797813c7a878b025f7056074fdf3eb6c7a8
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 25 00:41:35 2020 +0200
ISIS-2340: fx: menu action handler stub
---
.../viewer/javafx/ui/main/MenuBuilderFx.java | 9 +++++++-
.../viewer/javafx/ui/main/UiController.java | 16 ++++++++++++--
.../viewers/javafx/ui/src/main/resources/ui.fxml | 8 +++----
.../ui/pages/main/MainView_createHeader.java | 6 +++---
.../vaadin/ui/pages/main/MenuBuilderVaa.java | 25 +++++++++++++++++++---
5 files changed, 50 insertions(+), 14 deletions(-)
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 32acbee..1c3ab10 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
@@ -18,6 +18,9 @@
*/
package org.apache.isis.incubator.viewer.javafx.ui.main;
+import java.util.function.Consumer;
+
+import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.incubator.viewer.javafx.model.action.ActionUiModelFactoryFx;
import org.apache.isis.viewer.common.model.menu.MenuItemDto;
import org.apache.isis.viewer.common.model.menu.MenuVisitor;
@@ -35,6 +38,7 @@ import javafx.scene.control.SeparatorMenuItem;
public class MenuBuilderFx implements MenuVisitor {
private final MenuBar menuBar;
+ private final Consumer<ManagedAction> menuActionEventHandler;
private Menu currentTopLevelMenu = null;
private ActionUiModelFactoryFx actionUiModelFactory = new ActionUiModelFactoryFx();
@@ -54,7 +58,10 @@ public class MenuBuilderFx implements MenuVisitor {
log.info("sub menu {}", menuDto.getName());
val actionUiModel = actionUiModelFactory.newActionUiModel(managedAction);
- currentTopLevelMenu.getItems().add(actionUiModel.createMenuUiComponent());
+ val menuItem = actionUiModel.createMenuUiComponent();
+ menuItem.setOnAction(e->menuActionEventHandler.accept(managedAction));
+
+ currentTopLevelMenu.getItems().add(menuItem);
}
@Override
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 7ebd01e..675478f 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
@@ -23,6 +23,7 @@ import javax.inject.Inject;
import org.springframework.stereotype.Component;
import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
import org.apache.isis.viewer.common.model.header.HeaderUiModelProvider;
@@ -33,6 +34,8 @@ import lombok.extern.log4j.Log4j2;
import javafx.fxml.FXML;
import javafx.scene.control.MenuBar;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.control.TextArea;
@Component
@RequiredArgsConstructor(onConstructor_ = {@Inject})
@@ -45,6 +48,10 @@ public class UiController {
@FXML private MenuBar menuBarLeft;
@FXML private MenuBar menuBarRight;
+ @FXML private ScrollPane contentView;
+ @FXML private TextArea sampleTextArea;
+
+
@FXML
public void initialize() {
@@ -57,13 +64,18 @@ public class UiController {
val commonContext = IsisAppCommonContext.of(metaModelContext);
- val leftMenuBuilder = MenuBuilderFx.of(menuBarLeft);
- val rightMenuBuilder = MenuBuilderFx.of(menuBarRight);
+ val leftMenuBuilder = MenuBuilderFx.of(menuBarLeft, this::onMenuAction);
+ val rightMenuBuilder = MenuBuilderFx.of(menuBarRight, this::onMenuAction);
header.getPrimary().buildMenuItems(commonContext, leftMenuBuilder);
header.getSecondary().buildMenuItems(commonContext, rightMenuBuilder);
header.getTertiary().buildMenuItems(commonContext, rightMenuBuilder);
}
+ private void onMenuAction(ManagedAction managedAction) {
+ log.info("about to invoke action {}", managedAction.getIdentifier());
+ // TODO get an ActionPrompt, then on invocation show the result in the contentView
+ sampleTextArea.setText(String.format("action result to be rendered here\nfor %s", managedAction.getIdentifier()));
+ }
}
diff --git a/incubator/viewers/javafx/ui/src/main/resources/ui.fxml b/incubator/viewers/javafx/ui/src/main/resources/ui.fxml
index ea25941..c207008 100644
--- a/incubator/viewers/javafx/ui/src/main/resources/ui.fxml
+++ b/incubator/viewers/javafx/ui/src/main/resources/ui.fxml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
-<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.ScrollPane?>
@@ -36,15 +35,14 @@
<Color blue="0.624" green="0.624" red="0.624" fx:id="x2" />
</textFill>
</Label>
- <Button layoutX="11.0" layoutY="88.0" mnemonicParsing="false" text="Button" />
- <TextArea layoutX="11.0" layoutY="122.0" prefHeight="200.0" prefWidth="200.0" />
</children>
</AnchorPane>
- <ScrollPane prefHeight="-1.0" prefWidth="-1.0">
+ <ScrollPane fx:id="contentView" prefHeight="-1.0" prefWidth="-1.0">
<content>
- <AnchorPane id="Content" minHeight="-1.0" minWidth="-1.0" prefHeight="545.0" prefWidth="430.0">
+ <AnchorPane id="Content" minHeight="-1.0" minWidth="-1.0" prefHeight="772.0" prefWidth="592.0">
<children>
<Label alignment="CENTER" font="$x1" layoutX="14.0" layoutY="14.0" style=" " text="View" textAlignment="CENTER" textFill="$x2" wrapText="false" />
+ <TextArea fx:id="sampleTextArea" layoutX="26.0" layoutY="81.0" prefHeight="678.0" prefWidth="549.0" />
</children>
</AnchorPane>
</content>
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MainView_createHeader.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MainView_createHeader.java
index 79db90b..33e02bf 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MainView_createHeader.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MainView_createHeader.java
@@ -41,7 +41,7 @@ final class MainView_createHeader {
static Component createHeader(
final IsisAppCommonContext commonContext,
final HeaderUiModel headerUiModel,
- final Consumer<ManagedAction> subMenuEventHandler) {
+ final Consumer<ManagedAction> menuActionEventHandler) {
val titleOrLogo = createTitleOrLogo(commonContext, headerUiModel.getBranding());
val leftMenuBar = new MenuBar();
@@ -64,8 +64,8 @@ final class MainView_createHeader {
menuBarContainer.setWidthFull();
- val leftMenuBuilder = MenuBuilderVaa.of(commonContext, subMenuEventHandler, leftMenuBar);
- val rightMenuBuilder = MenuBuilderVaa.of(commonContext, subMenuEventHandler, rightMenuBar);
+ val leftMenuBuilder = MenuBuilderVaa.of(commonContext, menuActionEventHandler, leftMenuBar);
+ val rightMenuBuilder = MenuBuilderVaa.of(commonContext, menuActionEventHandler, rightMenuBar);
headerUiModel.getPrimary().buildMenuItems(commonContext, leftMenuBuilder);
headerUiModel.getSecondary().buildMenuItems(commonContext, rightMenuBuilder);
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 d9a7887..a1bb1cb 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
@@ -1,3 +1,21 @@
+/*
+ * 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.ui.pages.main;
import java.util.function.Consumer;
@@ -9,6 +27,7 @@ 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.ActionUiModelFactoryVaa;
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;
@@ -20,11 +39,11 @@ import lombok.val;
class MenuBuilderVaa implements MenuVisitor {
private final IsisAppCommonContext commonContext;
- private final Consumer<ManagedAction> subMenuEventHandler;
+ private final Consumer<ManagedAction> menuActionEventHandler;
private final MenuBar menuBar;
private MenuItem currentTopLevelMenu = null;
- private org.apache.isis.incubator.viewer.vaadin.model.action.ActionUiModelFactoryVaa actionUiModelFactory = new org.apache.isis.incubator.viewer.vaadin.model.action.ActionUiModelFactoryVaa();
+ private ActionUiModelFactoryVaa actionUiModelFactory = new ActionUiModelFactoryVaa();
@Override
public void addTopLevel(MenuItemDto menuDto) {
@@ -44,7 +63,7 @@ class MenuBuilderVaa implements MenuVisitor {
val actionUiModel = actionUiModelFactory.newActionUiModel(managedAction);
currentTopLevelMenu.getSubMenu()
- .addItem(actionUiModel.createMenuUiComponent(), e->subMenuEventHandler.accept(managedAction));
+ .addItem(actionUiModel.createMenuUiComponent(), e->menuActionEventHandler.accept(managedAction));
}
@Override