You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/06/14 06:22:26 UTC

[causeway] branch master updated: CAUSEWAY-3463: fixes parameter's usability: must be initialized in editing mode

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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new 795bdd9c40 CAUSEWAY-3463: fixes parameter's usability: must be initialized in editing mode
795bdd9c40 is described below

commit 795bdd9c402fa86c09f7083ff161c8f17116d75a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 14 08:22:20 2023 +0200

    CAUSEWAY-3463: fixes parameter's usability: must be initialized in
    editing mode
---
 .../viewer/commons/model/hints/HasRenderingHints.java       |  3 +--
 .../causeway/viewer/wicket/model/models/ScalarModel.java    |  6 ++----
 .../viewer/wicket/model/models/ScalarParameterModel.java    | 13 +++++--------
 .../wicket/ui/components/scalars/ScalarPanelAbstract.java   |  5 ++++-
 4 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/hints/HasRenderingHints.java b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/hints/HasRenderingHints.java
index d2d1a802eb..e38cb2277f 100644
--- a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/hints/HasRenderingHints.java
+++ b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/hints/HasRenderingHints.java
@@ -30,8 +30,7 @@ public interface HasRenderingHints {
 
     RenderingHint getRenderingHint();
 
-    ScalarRepresentation getMode();
-    @Deprecated// make immutable? - need to recreate any bound UI components anyway
+    ScalarRepresentation getMode(); //TODO[CAUSEWAY-3463] rename
     void setMode(ScalarRepresentation mode);
 
     // -- SHORTCUTS
diff --git a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarModel.java
index 5dee945cfe..2db07b05b6 100644
--- a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarModel.java
@@ -73,7 +73,7 @@ implements HasRenderingHints, UiScalar, FormExecutorContext {
 
     @Getter(onMethod_={@Override})
     @Setter(onMethod_={@Override})
-    private ScalarRepresentation mode;
+    private ScalarRepresentation mode; //TODO[CAUSEWAY-3463] rename to 'ViewOrEditMode'
 
     @Getter(onMethod_={@Override})
     private RenderingHint renderingHint;
@@ -188,9 +188,7 @@ implements HasRenderingHints, UiScalar, FormExecutorContext {
                 requiredType);
 
         return Optional.of(
-                new ConverterBasedOnValueSemantics<>(getMetaModel(), isEditMode()
-                        ? ScalarRepresentation.EDITING
-                        : ScalarRepresentation.VIEWING));
+                new ConverterBasedOnValueSemantics<>(getMetaModel(), getMode()));
     }
 
     // -- PREDICATES
diff --git a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarParameterModel.java
index b1b59eaec5..082fb6812f 100644
--- a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarParameterModel.java
@@ -30,7 +30,6 @@ import org.apache.causeway.viewer.wicket.model.models.interaction.act.UiParamete
 
 import lombok.Getter;
 import lombok.NonNull;
-import lombok.val;
 
 public class ScalarParameterModel
 extends ScalarModel
@@ -39,10 +38,7 @@ implements HasUiParameter {
     private static final long serialVersionUID = 1L;
 
     public static ScalarParameterModel wrap(final UiParameterWkt delegate) {
-        val viewOrEdit = delegate.disabledReason().isPresent()
-                ? ScalarRepresentation.VIEWING
-                : ScalarRepresentation.EDITING;
-        return new ScalarParameterModel(delegate, viewOrEdit);
+        return new ScalarParameterModel(delegate);
     }
 
     @Getter(onMethod_={@Override})
@@ -54,9 +50,10 @@ implements HasUiParameter {
      * value (if any) of that action parameter.
      */
     private ScalarParameterModel(
-            final UiParameterWkt uiParameter,
-            final ScalarRepresentation viewOrEdit) {
-        super(UiObjectWkt.ofAdapter(uiParameter.getMetaModelContext(), uiParameter.getOwner()), viewOrEdit);
+            final UiParameterWkt uiParameter) {
+        super(
+                UiObjectWkt.ofAdapter(uiParameter.getMetaModelContext(), uiParameter.getOwner()),
+                ScalarRepresentation.EDITING); // always init params in editing mode, decide usability later dynamically
         this.uiParameter = uiParameter;
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index b10413bfd1..f7dad84a79 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -135,8 +135,11 @@ implements ScalarModelChangeListener {
                 return COMPACT;
             }
             if(scalarModel.isParameter()
+                    && !(scalarPanel instanceof ScalarPanelSelectAbstract)
                     && scalarModel.disabledReason().isPresent()) {
-                // this simple logic only applies for params, as those don't support inline-as-if-edit
+                /* this simple logic only applies for params, as those don't support inline-as-if-edit
+                 * however, our select2 component does not allow for dynamic switching of usability,
+                 * so it must not be initialized readonly here */
                 return READONLY;
             }
             if(scalarModel.isEditMode()) {