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 2022/02/22 10:33:40 UTC

[isis] branch master updated: ISIS-2961: reset UI form input field to the untouched property value on cancel

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 7155301  ISIS-2961: reset UI form input field to the untouched property value on cancel
7155301 is described below

commit 71553013b8f3959358a3b4bcd6fd1b00c618abcf
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 22 11:33:29 2022 +0100

    ISIS-2961: reset UI form input field to the untouched property value on
    cancel
---
 .../wicket/model/models/InlinePromptContext.java   |  1 -
 .../ui/components/widgets/bootstrap/FormGroup.java |  9 ++++---
 .../wicket/ui/panels/PromptFormAbstract.java       | 29 ++++++++++++++++++++--
 3 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
index cf19a27..34fbf36 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
@@ -42,5 +42,4 @@ public class InlinePromptContext implements Serializable {
         scalarIfRegularInlinePromptForm.setVisible(false);
     }
 
-
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/bootstrap/FormGroup.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/bootstrap/FormGroup.java
index 983d94e..509c429 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/bootstrap/FormGroup.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/bootstrap/FormGroup.java
@@ -25,6 +25,8 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.util.lang.Args;
 
+import lombok.Getter;
+
 import de.agilecoders.wicket.core.util.Attributes;
 
 /**
@@ -35,6 +37,7 @@ public class FormGroup extends WebMarkupContainer {
 
     private static final long serialVersionUID = 1L;
 
+    @Getter
     private final FormComponent<?> formComponent;
 
     /**
@@ -43,14 +46,14 @@ public class FormGroup extends WebMarkupContainer {
      * @param id The component id
      * @param formComponent The form component that controls the validation state of the form group
      */
-    public FormGroup(String id, FormComponent<?> formComponent) {
+    public FormGroup(final String id, final FormComponent<?> formComponent) {
         super(id);
 
         this.formComponent = Args.notNull(formComponent, "formComponent");
     }
 
     @Override
-    protected void onComponentTag(ComponentTag tag) {
+    protected void onComponentTag(final ComponentTag tag) {
         super.onComponentTag(tag);
 
         Attributes.addClass(tag, "form-group");
@@ -58,7 +61,7 @@ public class FormGroup extends WebMarkupContainer {
         applyFeedbackClasses(tag, formComponent);
     }
 
-    protected void applyFeedbackClasses(ComponentTag tag, FormComponent<?> formComponent) {
+    protected void applyFeedbackClasses(final ComponentTag tag, final FormComponent<?> formComponent) {
         FeedbackMessages feedbackMessages = formComponent.getFeedbackMessages();
         for (FeedbackMessage feedbackMessage : feedbackMessages) {
             if (feedbackMessage.getLevel() == FeedbackMessage.ERROR) {
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 49a3271..794150c 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
@@ -35,7 +35,9 @@ import org.apache.isis.commons.internal.base._Either;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.debug._Probe;
 import org.apache.isis.commons.internal.debug._Probe.EntryPoint;
+import org.apache.isis.commons.internal.functions._Functions;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
@@ -44,6 +46,7 @@ import org.apache.isis.viewer.wicket.model.models.FormExecutorContext;
 import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
 import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.util.Components;
@@ -129,7 +132,27 @@ implements ScalarModelSubscriber {
 
     @Override
     public final void onCancelSubmitted(final AjaxRequestTarget target) {
+
+        _Probe.entryPoint(EntryPoint.USER_INTERACTION, "Wicket Ajax Request, "
+                + "originating from User clicking CANCEL (or hitting ESC) on an inline editing form or "
+                + "action prompt.");
+
         setLastFocusHint();
+
+        getMemberModel()
+        .accept(_Functions.noopConsumer(), prop->{
+
+            // reset the UI form input field to the untouched property value
+            val scalarContainer = prop.getInlinePromptContext().getScalarIfRegular();
+            if(scalarContainer instanceof FormGroup) {
+                val scalarFormComponent = ((FormGroup)scalarContainer).getFormComponent();
+                val untouchedPropertyValue = ManagedObjects.UnwrapUtil
+                        .single(prop.getManagedProperty().getPropertyValue());
+
+                scalarFormComponent.setDefaultModelObject(untouchedPropertyValue);
+            }
+
+        });
         completePrompt(target);
     }
 
@@ -199,8 +222,10 @@ implements ScalarModelSubscriber {
         formExecutorContext().getInlinePromptContext().onCancel();
 
         Optional.ofNullable(formExecutorContext().getInlinePromptContext().getScalarTypeContainer())
-        .ifPresent(scalarTypeContainer->
-            Wkt.javaScriptAdd(target, EventTopic.FOCUS_FIRST_PROPERTY, scalarTypeContainer.getMarkupId()));
+        .ifPresent(scalarTypeContainer->{
+            //target.add(scalarTypeContainer);
+            Wkt.javaScriptAdd(target, EventTopic.FOCUS_FIRST_PROPERTY, scalarTypeContainer.getMarkupId());
+        });
     }
 
 }