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/05/27 14:28:33 UTC
[isis] branch master updated: ISIS-2340: adds action form stub
(Vaadin)
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 ba7971d ISIS-2340: adds action form stub (Vaadin)
ba7971d is described below
commit ba7971d6c2d4674e6ee6f92735c627808cc9933a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 27 16:28:18 2020 +0200
ISIS-2340: adds action form stub (Vaadin)
---
.../vaadin/ui/components/action/ActionButton.java | 10 +++-
.../vaadin/ui/components/action/ActionDialog.java | 69 ++++++++++++---------
.../vaadin/ui/components/action/ActionForm.java | 70 ++++++++++++++++++++++
.../ui/components/object/ObjectFormView.java | 3 +-
4 files changed, 118 insertions(+), 34 deletions(-)
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionButton.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionButton.java
index a88afe5..c980807 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionButton.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionButton.java
@@ -22,22 +22,26 @@ import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
+import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa;
+import lombok.NonNull;
import lombok.val;
public class ActionButton extends Button {
private static final long serialVersionUID = 1L;
- public static ActionButton forManagedAction(ManagedAction managedAction) {
- // TODO yet not doing anything
+ public static ActionButton forManagedAction(
+ @NonNull final UiComponentFactoryVaa uiComponentFactory,
+ @NonNull final ManagedAction managedAction) {
+
val uiAction = new ActionButton(managedAction.getName());
uiAction.getStyle().set("margin-left", "0.5em");
uiAction.addThemeVariants(
ButtonVariant.LUMO_SMALL);
- val actionDialog = ActionDialog.forManagedAction(managedAction);
+ val actionDialog = ActionDialog.forManagedAction(uiComponentFactory, managedAction);
uiAction.addClickListener(e->{
actionDialog.open();
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionDialog.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionDialog.java
index b49cca2..b865959 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionDialog.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionDialog.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.incubator.viewer.vaadin.ui.components.action;
+import java.util.stream.Stream;
+
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.dependency.CssImport;
@@ -26,12 +28,13 @@ import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.html.Footer;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.html.Header;
-import com.vaadin.flow.component.html.Label;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.theme.lumo.Lumo;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
+import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa;
+import lombok.NonNull;
import lombok.val;
@CssImport(value = "./css/dialog-overlay.css", themeFor = "vaadin-dialog-overlay")
@@ -39,11 +42,8 @@ import lombok.val;
public class ActionDialog extends Dialog {
private static final long serialVersionUID = 1L;
-
- private final transient ManagedAction managedAction;
-
- public String DOCK = "dock";
- public String FULLSCREEN = "fullscreen";
+ private static final String DOCK = "dock";
+ private static final String FULLSCREEN = "fullscreen";
private boolean isDocked = false;
private boolean isFullScreen = false;
@@ -55,13 +55,18 @@ public class ActionDialog extends Dialog {
private Div content;
private Footer footer;
- public static ActionDialog forManagedAction(final ManagedAction managedAction) {
- val actionDialog = new ActionDialog(managedAction);
+ public static ActionDialog forManagedAction(
+ @NonNull final UiComponentFactoryVaa uiComponentFactory,
+ @NonNull final ManagedAction managedAction) {
+
+ val actionDialog = new ActionDialog(uiComponentFactory, managedAction);
return actionDialog;
}
- protected ActionDialog(ManagedAction managedAction) {
- this.managedAction = managedAction;
+ protected ActionDialog(
+ final UiComponentFactoryVaa uiComponentFactory,
+ final ManagedAction managedAction) {
+
setDraggable(true);
setModal(false);
setResizable(true);
@@ -75,44 +80,50 @@ public class ActionDialog extends Dialog {
val title = new H2(managedAction.getName());
title.addClassName("dialog-title");
- min = new Button(VaadinIcon.DOWNLOAD_ALT.create());
+ min = new Button(VaadinIcon.ANGLE_DOWN.create());
min.addClickListener(event -> minimise());
max = new Button(VaadinIcon.EXPAND_SQUARE.create());
max.addClickListener(event -> maximise());
- Button close = new Button(VaadinIcon.CLOSE_SMALL.create());
- close.addClickListener(event -> close());
+ val closeButton = new Button(VaadinIcon.CLOSE_SMALL.create());
- header = new Header(title, min, max, close);
+ header = new Header(title, min, max, closeButton);
header.getElement().getThemeList().add(Lumo.DARK);
add(header);
// Content
- val stub = new Label("Under Construction ...");
+ val actionForm = ActionForm.forManagedAction(uiComponentFactory, managedAction);
- content = new Div(stub);
+ content = new Div(actionForm);
content.addClassName("dialog-content");
add(content);
// Footer
- Button send = new Button("Send");
- send.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
-
- Button attachFiles = new Button(VaadinIcon.PAPERCLIP.create());
- Button discardDraft = new Button(VaadinIcon.TRASH.create());
-
- footer = new Footer(send, attachFiles, discardDraft);
+ val okButton = new Button("Ok");
+ val cancelButton = new Button("Cancel");
+ footer = new Footer(okButton, cancelButton);
add(footer);
- // Button theming
- for (Button button : new Button[] {min, max, close, attachFiles, discardDraft}) {
- button.addThemeVariants(ButtonVariant.LUMO_CONTRAST, ButtonVariant.LUMO_TERTIARY);
- }
+ // Button Themes
+
+ okButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
+ cancelButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);
+ Stream.of(min, max, closeButton)
+ .forEach(button->
+ button.addThemeVariants(ButtonVariant.LUMO_CONTRAST, ButtonVariant.LUMO_TERTIARY));
+
+ // Button Events
+
+ okButton.addClickListener(event -> close()); //TODO should invoke the action
+ cancelButton.addClickListener(event -> close());
+ closeButton.addClickListener(event -> close());
}
+ // -- HELPER
+
private void minimise() {
if (isDocked) {
initialSize();
@@ -120,7 +131,7 @@ public class ActionDialog extends Dialog {
if (isFullScreen) {
initialSize();
}
- min.setIcon(VaadinIcon.UPLOAD_ALT.create());
+ min.setIcon(VaadinIcon.ANGLE_UP.create());
getElement().getThemeList().add(DOCK);
setWidth("320px");
}
@@ -131,7 +142,7 @@ public class ActionDialog extends Dialog {
}
private void initialSize() {
- min.setIcon(VaadinIcon.DOWNLOAD_ALT.create());
+ min.setIcon(VaadinIcon.ANGLE_DOWN.create());
getElement().getThemeList().remove(DOCK);
max.setIcon(VaadinIcon.EXPAND_SQUARE.create());
getElement().getThemeList().remove(FULLSCREEN);
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionForm.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionForm.java
new file mode 100644
index 0000000..3e8c34a
--- /dev/null
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/action/ActionForm.java
@@ -0,0 +1,70 @@
+/*
+ * 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.components.action;
+
+import com.vaadin.flow.component.formlayout.FormLayout;
+import com.vaadin.flow.component.textfield.TextField;
+
+import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
+import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa;
+
+import lombok.NonNull;
+import lombok.val;
+
+public class ActionForm extends FormLayout {
+
+ private static final long serialVersionUID = 1L;
+
+ private final transient ManagedAction managedAction;
+
+ public static ActionForm forManagedAction(
+ @NonNull final UiComponentFactoryVaa uiComponentFactory,
+ @NonNull final ManagedAction managedAction) {
+
+ val actionForm = new ActionForm(uiComponentFactory, managedAction);
+ return actionForm;
+ }
+
+ protected ActionForm(
+ final UiComponentFactoryVaa uiComponentFactory,
+ final ManagedAction managedAction) {
+
+ this.managedAction = managedAction;
+
+ managedAction.getAction().getParameters()
+ .forEach(param->{
+
+ val paramField = new TextField();
+ paramField.setLabel(param.getName());
+ paramField.setPlaceholder("under construction");
+
+ super.add(paramField);
+
+
+// val uiParameter = uiComponentFactory
+// .componentFor(UiComponentFactory.Request.of(Where.ANYWHERE, param));
+
+ });
+
+
+
+
+ }
+
+}
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
index 5c8b005..804e46c 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
@@ -19,7 +19,6 @@
package org.apache.isis.incubator.viewer.vaadin.ui.components.object;
import com.vaadin.flow.component.HasComponents;
-import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.formlayout.FormLayout;
import com.vaadin.flow.component.formlayout.FormLayout.ResponsiveStep;
import com.vaadin.flow.component.html.H1;
@@ -171,7 +170,7 @@ public class ObjectFormView extends VerticalLayout {
.checkVisibility(Where.OBJECT_FORMS)
.get()
.ifPresent(managedAction -> {
- val uiAction = ActionButton.forManagedAction(managedAction);
+ val uiAction = ActionButton.forManagedAction(uiComponentFactory, managedAction);
container.add(uiAction);
});
}