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 2021/10/25 08:57:40 UTC

[isis] branch 2877_compound.value.types updated: ISIS-2877: minor polishing around PromptFormAbstract

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 2877_compound.value.types
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/2877_compound.value.types by this push:
     new da8d8f1  ISIS-2877: minor polishing around PromptFormAbstract
da8d8f1 is described below

commit da8d8f153cd739d966b5372d38594e556850a808
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Oct 25 10:57:31 2021 +0200

    ISIS-2877: minor polishing around PromptFormAbstract
---
 .../wicket/model/models/ActionPromptProvider.java  |  9 ++---
 .../wicket/ui/panels/PromptFormAbstract.java       | 42 +++++++---------------
 .../org/apache/isis/viewer/wicket/ui/util/Wkt.java |  9 +++++
 3 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
index e7b64eb..7da7288 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
@@ -30,18 +30,19 @@ public interface ActionPromptProvider {
     public static ActionPromptProvider getFrom(final Component component) {
         final Page page = component.getPage();
         if(page == null) {
-            throw new IllegalArgumentException("Programming error: component must be added to a page in order to locate the ActionPromptProvider");
+            throw new IllegalArgumentException("Programming error: component must be added to a page "
+                    + "in order to locate the ActionPromptProvider");
         }
         return getFrom(page);
     }
 
     public static ActionPromptProvider getFrom(final Page page) {
         if(page instanceof ActionPromptProvider) {
-            final ActionPromptProvider provider = (ActionPromptProvider) page;
-            return provider;
+            return (ActionPromptProvider) page;
         }
         // else
-        throw new IllegalArgumentException("Programming error: all pages should inherit from PageAbstract, which serves as the ActionPromptProvider");
+        throw new IllegalArgumentException("Programming error: all pages should inherit from PageAbstract, "
+                + "which serves as the ActionPromptProvider");
     }
 
     public ActionPrompt getActionPrompt(
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
index 5ed8610..e35c68b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
@@ -19,6 +19,7 @@
 package org.apache.isis.viewer.wicket.ui.panels;
 
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -27,8 +28,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.IModel;
 
@@ -90,8 +89,7 @@ implements ScalarModelSubscriber {
     @Override
     public final void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
-        response.render(OnDomReadyHeaderItem.forScript(
-                String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_PARAMETER, '%s')", getMarkupId())));
+        Wkt.focusFirstParameter(response, getMarkupId());
     }
 
     @Override
@@ -142,7 +140,6 @@ implements ScalarModelSubscriber {
     @Override
     public final void onCancelSubmitted(final AjaxRequestTarget target) {
         setLastFocusHint();
-        //closePromptIfAny(target);
         completePrompt(target);
     }
 
@@ -166,10 +163,8 @@ implements ScalarModelSubscriber {
 
     private void closePromptIfAny(final AjaxRequestTarget target) {
         try {
-            final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(parentPanel);
-            if(promptProvider != null) {
-                promptProvider.closePrompt(target);
-            }
+            ActionPromptProvider.getFrom(parentPanel)
+            .closePrompt(target);
         } catch (org.apache.wicket.WicketRuntimeException ex) {
             // if "No Page found for component"
             // do nothing
@@ -181,7 +176,7 @@ implements ScalarModelSubscriber {
         if (entityModel == null) {
             return;
         }
-        MarkupContainer parentContainer = this.parentPanel.getParent();
+        final MarkupContainer parentContainer = this.parentPanel.getParent();
         if (parentContainer != null) {
             entityModel.setHint(getPage(), PageAbstract.UIHINT_FOCUS, parentContainer.getPageRelativePath());
         }
@@ -202,30 +197,19 @@ implements ScalarModelSubscriber {
     }
 
     private void rebuildGuiAfterInlinePromptDone(final AjaxRequestTarget target) {
-        // replace
-        final String id = parentPanel.getId();
-        final MarkupContainer parent = parentPanel.getParent();
-
-        final WebMarkupContainer replacementPropertyEditFormPanel = new WebMarkupContainer(id);
-        replacementPropertyEditFormPanel.setVisible(false);
-
-        parent.addOrReplace(replacementPropertyEditFormPanel);
+        // replace parent panel with new invisible instance
+        Wkt.containerAdd(parentPanel.getParent(), parentPanel.getId())
+            .setVisible(false);
 
         // change visibility of inline components
         formExecutorContext().getInlinePromptContext().onCancel();
 
-        // redraw
-        MarkupContainer scalarTypeContainer = formExecutorContext().getInlinePromptContext()
-                .getScalarTypeContainer();
-
-        if (scalarTypeContainer != null) {
-            String markupId = scalarTypeContainer.getMarkupId();
-            target.appendJavaScript(
-                    String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_PROPERTY, '%s')",
-                            markupId));
-        }
+        Optional.ofNullable(formExecutorContext().getInlinePromptContext().getScalarTypeContainer())
+        .ifPresent(scalarTypeContainer->
+            Wkt.focusFirstProperty(target, scalarTypeContainer.getMarkupId()));
 
-        target.add(parent);
+        // redraw
+        target.add(parentPanel.getParent());
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
index 4198f8f..5815345 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
@@ -33,6 +33,7 @@ import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptContentHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -443,6 +444,14 @@ public class Wkt {
 
     }
 
+    public void focusFirstProperty(final AjaxRequestTarget target, final String containerId) {
+        target.appendJavaScript(
+                String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_PROPERTY, '%s')", containerId));
+    }
 
+    public void focusFirstParameter(final IHeaderResponse response, final String containerId) {
+        response.render(OnDomReadyHeaderItem.forScript(
+                String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_PARAMETER, '%s')", containerId)));
+    }
 
 }