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:30:54 UTC

[isis] branch 2877_compound.value.types updated: ISIS-2877: fixes for prev. commit

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 9ba712a  ISIS-2877: fixes for prev. commit
9ba712a is described below

commit 9ba712af8aba83d313a7211704564404152b618e
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Oct 25 10:30:46 2021 +0200

    ISIS-2877: fixes for prev. commit
---
 .../components/actions/ActionParametersForm.java   |  2 +-
 .../isis/viewer/wicket/ui/panels/OkCancelForm.java | 35 +++++------
 .../wicket/ui/panels/PromptFormAbstract.java       | 70 +++++++++++-----------
 3 files changed, 50 insertions(+), 57 deletions(-)

diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 8a29783..1d948f9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -122,7 +122,7 @@ extends PromptFormAbstract<ActionModel> {
     }
 
     @Override
-    protected void doConfigureOkButton(final AjaxButton okButton) {
+    protected void configureOkButton(final AjaxButton okButton) {
         applyAreYouSure(okButton);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/OkCancelForm.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/OkCancelForm.java
index 50d1e00..70414ee 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/OkCancelForm.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/OkCancelForm.java
@@ -27,17 +27,20 @@ import org.apache.wicket.util.string.AppendingStringBuffer;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormFeedbackPanel;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
-import lombok.val;
-
+/**
+ * Form with <i>Feedback</i> panel and <i>Ok/Cancel</i> buttons.
+ */
 public abstract class OkCancelForm<T extends IModel<ManagedObject>>
 extends FormAbstract<ManagedObject>{
 
     private static final long serialVersionUID = 1L;
     private static final String ID_OK_BUTTON = "okButton";
     public  static final String ID_CANCEL_BUTTON = "cancelButton";
+    private static final String ID_FEEDBACK = "feedback";
 
     protected final WicketViewerSettings settings;
     protected final AjaxButton okButton;
@@ -46,35 +49,27 @@ extends FormAbstract<ManagedObject>{
     protected OkCancelForm(final String id, final WicketViewerSettings settings, final IModel<ManagedObject> model) {
         super(id, model);
         this.settings = settings;
-        okButton = addOkButton();
-        cancelButton = addCancelButton();
-        doConfigureOkButton(okButton);
-        doConfigureCancelButton(cancelButton);
+        okButton = Wkt.buttonAddOk(this, ID_OK_BUTTON, new ResourceModel("okLabel"), settings, this::onOkSubmitted);
+        cancelButton = Wkt.buttonAdd(this, ID_CANCEL_BUTTON, new ResourceModel("cancelLabel"), (button, target)->{
+            onCancelSubmitted(target);
+        });
+        configureOkButton(okButton);
+        configureCancelButton(cancelButton);
+        setDefaultButton(okButton);
+        Wkt.add(this, new FormFeedbackPanel(ID_FEEDBACK));
         setOutputMarkupId(true);
     }
 
-    protected void doConfigureOkButton(final AjaxButton okButton) {};
-    protected abstract void doConfigureCancelButton(AjaxButton cancelButton);
     protected abstract void onOkSubmitted(AjaxButton okButton, AjaxRequestTarget target);
     protected abstract void onCancelSubmitted(AjaxRequestTarget target);
-    protected abstract void closePromptIfAny(AjaxRequestTarget target);
 
-    protected AjaxButton addOkButton() {
-        val okButton = Wkt.buttonAddOk(this, ID_OK_BUTTON, new ResourceModel("okLabel"), settings, this::onOkSubmitted);
+    protected void configureOkButton(final AjaxButton okButton) {
         okButton.add(new JGrowlBehaviour(super.getCommonContext()));
-        setDefaultButton(okButton);
-        return okButton;
     }
 
-    protected AjaxButton addCancelButton() {
-        val cancelButton = Wkt.buttonAdd(this, ID_CANCEL_BUTTON, new ResourceModel("cancelLabel"), (button, target)->{
-            //form.setMultiPart(true);
-            closePromptIfAny(target);
-            onCancelSubmitted(target);
-        });
+    protected void configureCancelButton(final AjaxButton cancelButton) {
         // so can submit with invalid content (eg mandatory params missing)
         cancelButton.setDefaultFormProcessing(false);
-        return cancelButton;
     }
 
     // workaround for https://issues.apache.org/jira/browse/WICKET-6364
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 749d942..5ed8610 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
@@ -41,12 +41,10 @@ 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;
 import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
-import org.apache.isis.viewer.wicket.model.models.FormExecutor;
 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.formcomponent.FormFeedbackPanel;
 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;
@@ -62,12 +60,9 @@ implements ScalarModelSubscriber {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String ID_FEEDBACK = "feedback";
-
     protected final List<ScalarPanelAbstract> paramPanels = _Lists.newArrayList();
 
     private final Component parentPanel;
-    private final T formExecutorContext;
 
     protected PromptFormAbstract(
             final String id,
@@ -77,11 +72,13 @@ implements ScalarModelSubscriber {
 
         super(id, settings, model);
         this.parentPanel = parentPanel;
-        this.formExecutorContext = model;
 
         addParameters();
+    }
 
-        Wkt.add(this, new FormFeedbackPanel(ID_FEEDBACK));
+    @SuppressWarnings("unchecked")
+    private FormExecutorContext formExecutorContext() {
+        return (T)getModel();
     }
 
     // -- SETUP
@@ -98,8 +95,9 @@ implements ScalarModelSubscriber {
     }
 
     @Override
-    protected final void doConfigureCancelButton(final AjaxButton cancelButton) {
-        if (formExecutorContext.getPromptStyle().isInlineOrInlineAsIfEdit()) {
+    protected final void configureCancelButton(final AjaxButton cancelButton) {
+        super.configureCancelButton(cancelButton);
+        if (formExecutorContext().getPromptStyle().isInlineOrInlineAsIfEdit()) {
             Wkt.behaviorAddFireOnEscapeKey(cancelButton, this::onCancelSubmitted);
         }
     }
@@ -118,11 +116,10 @@ implements ScalarModelSubscriber {
         setLastFocusHint();
 
         val form = okButton.getForm();
-
-        final FormExecutor formExecutor = FormExecutorDefault.forMember(getMemberModel());
+        val formExecutor = FormExecutorDefault.forMember(getMemberModel());
 
         val outcome = formExecutor
-                .executeAndProcessResults(target.getPage(), target, form, formExecutorContext);
+                .executeAndProcessResults(target.getPage(), target, form, formExecutorContext());
 
         if (outcome.isSuccessWithRedirect()) {
             completePrompt(target);
@@ -132,6 +129,7 @@ implements ScalarModelSubscriber {
             return;
         }
 
+        //FIXME[ISIS-2877] what to do here exactly?
         if (outcome.isSuccessWithinNestedContext()) {
             completePrompt(target);
 
@@ -142,16 +140,10 @@ implements ScalarModelSubscriber {
     }
 
     @Override
-    protected final void closePromptIfAny(final AjaxRequestTarget target) {
-        try {
-            final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(parentPanel);
-            if(promptProvider != null) {
-                promptProvider.closePrompt(target);
-            }
-        } catch (org.apache.wicket.WicketRuntimeException ex) {
-            // if "No Page found for component"
-            // do nothing
-        }
+    public final void onCancelSubmitted(final AjaxRequestTarget target) {
+        setLastFocusHint();
+        //closePromptIfAny(target);
+        completePrompt(target);
     }
 
     @Override
@@ -162,34 +154,40 @@ implements ScalarModelSubscriber {
         }
     }
 
-    @Override
-    public final void onCancelSubmitted(final AjaxRequestTarget target) {
-        setLastFocusHint();
-        completePrompt(target);
-    }
-
     // -- HELPER
 
     private void completePrompt(final AjaxRequestTarget target) {
-        if (formExecutorContext.isWithinInlinePrompt()) {
+        if (formExecutorContext().isWithinInlinePrompt()) {
             rebuildGuiAfterInlinePromptDone(target);
         } else {
             closePromptIfAny(target);
         }
     }
 
+    private void closePromptIfAny(final AjaxRequestTarget target) {
+        try {
+            final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(parentPanel);
+            if(promptProvider != null) {
+                promptProvider.closePrompt(target);
+            }
+        } catch (org.apache.wicket.WicketRuntimeException ex) {
+            // if "No Page found for component"
+            // do nothing
+        }
+    }
+
     private void setLastFocusHint() {
-        final UiHintContainer entityModel = getPageUiHintContainerIfAny();
+        final UiHintContainer entityModel = pageUiHintContainerIfAny();
         if (entityModel == null) {
             return;
         }
-        MarkupContainer parent = this.parentPanel.getParent();
-        if (parent != null) {
-            entityModel.setHint(getPage(), PageAbstract.UIHINT_FOCUS, parent.getPageRelativePath());
+        MarkupContainer parentContainer = this.parentPanel.getParent();
+        if (parentContainer != null) {
+            entityModel.setHint(getPage(), PageAbstract.UIHINT_FOCUS, parentContainer.getPageRelativePath());
         }
     }
 
-    private UiHintContainer getPageUiHintContainerIfAny() {
+    private UiHintContainer pageUiHintContainerIfAny() {
         final Page page;
         try {
             page = getPage();
@@ -214,10 +212,10 @@ implements ScalarModelSubscriber {
         parent.addOrReplace(replacementPropertyEditFormPanel);
 
         // change visibility of inline components
-        formExecutorContext.getInlinePromptContext().onCancel();
+        formExecutorContext().getInlinePromptContext().onCancel();
 
         // redraw
-        MarkupContainer scalarTypeContainer = formExecutorContext.getInlinePromptContext()
+        MarkupContainer scalarTypeContainer = formExecutorContext().getInlinePromptContext()
                 .getScalarTypeContainer();
 
         if (scalarTypeContainer != null) {