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/07/31 09:37:44 UTC

[isis] branch master updated: ISIS-2340: fx: let action dialogs actually invoke their pending args

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 16be546  ISIS-2340: fx: let action dialogs actually invoke their pending args
16be546 is described below

commit 16be546dac9615ccef1940f8880e272cd14498eb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jul 31 11:37:26 2020 +0200

    ISIS-2340: fx: let action dialogs actually invoke their pending args
---
 .../ui/components/markup/MarkupFieldFactory.java     |  1 -
 .../viewer/javafx/ui/main/UiActionHandler.java       | 20 +++++++++++++++-----
 .../common/model/binding/UiComponentFactory.java     |  3 ++-
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
index 206a2f2..0fb2aac 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
@@ -62,7 +62,6 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
 
     @Override
     public Node handle(ComponentRequest request) {
-        
         val markupHtml = request.getFeatureValue(HasHtml.class)
                 .map(HasHtml::asHtml)
                 .orElse("");
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandler.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandler.java
index d0b3ca5..ef5df46 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandler.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandler.java
@@ -58,7 +58,9 @@ public class UiActionHandler {
         
         final int paramCount = managedAction.getAction().getParameterCount();
         
-        if(paramCount>0) {
+        if(paramCount==0) {
+            invoke(managedAction, Can.empty(), onNewPageContent);     
+        } else {
             // TODO get an ActionPrompt, then on invocation show the result in the content view
             
             //Dialogs.message("Warn", "ActionPrompt not supported yet!", null);
@@ -99,11 +101,19 @@ public class UiActionHandler {
             });
             
             dialog.showAndWait().ifPresent(params->{
-                System.out.println("param negotiation result");
+                log.info("param negotiation done");
+                invoke(managedAction, params.getParamValues(), onNewPageContent);
             });
             
-            return;
-        }
+        } 
+        
+
+    }
+    
+    private void invoke(
+            ManagedAction managedAction, 
+            Can<ManagedObject> params,
+            Consumer<Node> onNewPageContent) {
         
         uiContext.getIsisInteractionFactory().runAnonymous(()->{
 
@@ -115,9 +125,9 @@ public class UiActionHandler {
             .ifPresent(actionResult->handleActionResult(actionResult, onNewPageContent));
 
         });
-
     }
     
+    
     public void handleActionResult(ManagedObject actionResult, Consumer<Node> onNewPageContent) {
         onNewPageContent.accept(uiComponentForActionResult(actionResult, onNewPageContent));
     }
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/binding/UiComponentFactory.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/binding/UiComponentFactory.java
index 44e9cfe..1d58aaf 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/binding/UiComponentFactory.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/binding/UiComponentFactory.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedFeature;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedParameter;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
+import org.apache.isis.core.metamodel.interactions.managed.ManagedValue;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -136,7 +137,7 @@ public interface UiComponentFactory<B, C> {
             val managedProperty = (ManagedProperty)managedFeature;
             //TODO do a type check before the cast, so we can throw a more detailed exception
             // that is, given type must be assignable from the actual pojo type 
-            return Optional.ofNullable(managedProperty.getValue().getValue())
+            return Optional.ofNullable(managedProperty.getPropertyValue())
                     .filter(_Predicates.not(ManagedObjects::isNullOrUnspecifiedOrEmpty))
                     .map(ManagedObject::getPojo)
                     .map(type::cast);