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());
+ });
}
}