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 2020/05/04 13:45:12 UTC

[isis] 02/03: ISIS-2319: minor refactoring

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

commit 5f9d1f87169143e38fc57a632464446bd57f3f6f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 4 15:19:05 2020 +0200

    ISIS-2319: minor refactoring
---
 .../wicket/model/models/ActionArgumentModel.java   |  5 +--
 .../viewer/wicket/model/models/ActionModel.java    | 16 ++++++----
 .../components/actions/ActionParametersForm.java   | 28 ++++++----------
 .../components/scalars/ScalarPanelAbstract2.java   | 37 +++++++---------------
 .../scalars/ScalarPanelSelect2Abstract.java        |  2 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      | 14 ++++----
 .../isisapplib/IsisBlobOrClobPanelAbstract.java    |  8 ++---
 .../components/scalars/primitive/BooleanPanel.java | 14 ++++----
 .../scalars/reference/ReferencePanel.java          | 16 +++++-----
 .../valuechoices/ValueChoicesSelect2Panel.java     | 12 +++----
 10 files changed, 65 insertions(+), 87 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
index 2b5dd55..6f46c38 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -29,9 +28,8 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 public interface ActionArgumentModel extends IModel<ManagedObject> {
 
     ActionParameterMemento getParameterMemento();
+    String getCssClass();
 
-    void setActionArgsHint(Can<ManagedObject> arguments);
-    
     // -- SHORTCUTS
     
     default ObjectActionParameter getActionParameter(SpecificationLoader specificationLoader) {
@@ -42,5 +40,4 @@ public interface ActionArgumentModel extends IModel<ManagedObject> {
         return getParameterMemento().getNumber();
     }
 
-
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 7cea4c1..e9e5003 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -660,12 +660,13 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
     }
     
     @Value(staticConstructor = "of")
-    public static class ActionArgumentModelAndVisibilityConsent {
+    public static class ActionArgumentModelAndConsents {
         final ActionArgumentModel actionArgumentModel;
         final Consent visibilityConsent;
+        final Consent usabilityConsent;
     }
 
-    public Stream<ActionArgumentModelAndVisibilityConsent> streamActionArgumentModels() {
+    public Stream<ActionArgumentModelAndConsents> streamActionArgumentModels() {
 
         val specificationLoader = getSpecificationLoader();
         val targetAdapter = this.getTargetAdapter();
@@ -676,13 +677,16 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
         return argCache().streamActionArgumentModels()
         .map(actionArgumentModel->{
         
-            actionArgumentModel.setActionArgsHint(actionArgsHint);
-            
             // visibility
             val visibilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
-                    .isVisible(realTargetAdapter, Can.empty(), InteractionInitiatedBy.USER);
+                    .isVisible(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
+            
+            // usability
+            val usabilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
+                    .isUsable(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
             
-            return ActionArgumentModelAndVisibilityConsent.of(actionArgumentModel, visibilityConsent);
+            return ActionArgumentModelAndConsents.of(
+                    actionArgumentModel, visibilityConsent, usabilityConsent);
             
         });
         
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 4aa2738..693d9e4 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
@@ -29,8 +29,6 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
 import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
@@ -75,10 +73,11 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
         paramPanels.clear();
         
         actionModel.streamActionArgumentModels()
-        .forEach(tuple->{
+        .forEach(argsAndConsents->{
             
-            val actionArgumentModel = tuple.getActionArgumentModel(); 
-            val visibilityConsent = tuple.getVisibilityConsent();
+            val actionArgumentModel = argsAndConsents.getActionArgumentModel(); 
+            val visibilityConsent = argsAndConsents.getVisibilityConsent();
+            val usabilityConsent = argsAndConsents.getVisibilityConsent();
             
             val container = new WebMarkupContainer(repeatingView.newChildId());
             repeatingView.add(container);
@@ -87,6 +86,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
             .ifPresent(paramPanel->{
                 paramPanels.add(paramPanel);
                 paramPanel.setVisible(visibilityConsent.isAllowed());
+                //paramPanel.onInitializeReadonly(usabilityConsent.getReason());
             });
             
         });
@@ -104,23 +104,15 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
                 .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, model);
 
         if(component instanceof MarkupContainer) {
-            final MarkupContainer markupContainer = (MarkupContainer) component;
-
-            // TODO: copy-n-paste of ScalarModel.Kind#getCssClass(ScalarModel), so could perhaps unify
-            final ObjectActionParameter actionParameter = model.getActionParameter(getSpecificationLoader());
-
-            final ObjectAction action = actionParameter.getAction();
-            final String objectSpecId = action.getOnType().getSpecId().asString().replace(".", "-");
-            final String parmId = actionParameter.getId();
-
-            final String css = "isis-" + objectSpecId + "-" + action.getId() + "-" + parmId;
-
+            val markupContainer = (MarkupContainer) component;
+            val css = model.getCssClass();
             CssClassAppender.appendCssClassTo(markupContainer, CssClassAppender.asCssStyle(css));
         }
-        final ScalarPanelAbstract2 paramPanel =
+        
+        val paramPanel =
                 component instanceof ScalarPanelAbstract2
                 ? (ScalarPanelAbstract2) component
-                        : null;
+                : null;
                 
         if (paramPanel != null) {
             paramPanel.setOutputMarkupId(true);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 3027f79..e1e9eba 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -164,7 +164,7 @@ implements ScalarModelSubscriber2 {
         if(usabilityAfter) {
             onEnabled(target);
         } else {
-            onDisabled(usabilityConsent.getReason(), target);
+            onNotEditable(usabilityConsent.getReason(), target);
         }
 
         // even if now invisible or unusable, we recalculate args and ensure compatible
@@ -312,15 +312,15 @@ implements ScalarModelSubscriber2 {
         final boolean mustBeEditable = scalarModel.mustBeEditable();
         if (disableReasonIfAny != null) {
             if(mustBeEditable) {
-                onInitializeWhenViewMode();
+                onInitializeNotEditable();
             } else {
-                onInitializeWhenDisabled(disableReasonIfAny);
+                onInitializeReadonly(disableReasonIfAny);
             }
         } else {
             if (scalarModel.isViewMode()) {
-                onInitializeWhenViewMode();
+                onInitializeNotEditable();
             } else {        
-                onInitializeWhenEnabled();
+                onInitializeEditable();
             }
         }
 
@@ -453,43 +453,28 @@ implements ScalarModelSubscriber2 {
 
     /**
      * The widget starts off in read-only, but should be possible to activate into edit mode.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'notEditable'
-     * </p>
      */
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
     }
 
     /**
      * The widget starts off read-only, and CANNOT be activated into edit mode.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'readOnly'
-     * </p>
      */
-    protected void onInitializeWhenDisabled(final String disableReason) {
+    protected void onInitializeReadonly(final String disableReason) {
     }
 
     /**
      * The widget starts off immediately editable.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'editable'.
-     * </p>
      */
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
     }
 
     /**
      * The widget is no longer editable.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'onNotEditable', because the semantics here aren't the same as 'onInitializeWhenDisabled'
-     *       (the latter is never editable).
-     * </p>
+     * @apiNote
+     *     the semantics here aren't the same as 'onInitializeWhenDisabled' (the latter is never editable).
      */
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
     }
 
     /**
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
index ca63480..ca03d4b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
@@ -159,7 +159,7 @@ public abstract class ScalarPanelSelect2Abstract extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         setEnabled(false);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 26081cd..1dc37a3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -321,8 +321,8 @@ implements TextFieldValueModel.ScalarModelProvider {
 
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
 
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -331,8 +331,8 @@ implements TextFieldValueModel.ScalarModelProvider {
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
 
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -343,15 +343,15 @@ implements TextFieldValueModel.ScalarModelProvider {
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         textField.setEnabled(true);
         inlinePromptLink.setEnabled(true);
         clearTooltip();
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         textField.setEnabled(false);
         inlinePromptLink.setEnabled(false);
         setTooltip(disableReason);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index bd9b2c6..18aafdf 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -190,17 +190,17 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     // //////////////////////////////////////
 
     @Override
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
+    protected void onInitializeReadonly(final String disableReason) {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.EDITABLE, null, null);
     }
 
@@ -236,7 +236,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, disableReason, target);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index cb0b520..57cff91 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -207,20 +207,20 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         checkBox.setEnabled(true);
     }
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
         checkBox.setEnabled(false);
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         checkBox.setEnabled(false);
         final AttributeModifier title = new AttributeModifier("title",
                 Model.of(disableReason != null ? disableReason : ""));
@@ -228,7 +228,7 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         checkBox.setEnabled(false);
         final AttributeModifier title = new AttributeModifier("title",
                 Model.of(disableReason != null ? disableReason : ""));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index d0dda79..63f4de7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -194,22 +194,22 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
     // //////////////////////////////////////
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         entityLink.setEnabled(true);
         syncWithInput();
     }
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
         entityLink.setEnabled(false);
         syncWithInput();
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         syncWithInput();
         val entityLinkModel = (EntityModel) entityLink.getModel();
         entityLinkModel.toViewMode();
@@ -218,8 +218,8 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
-        super.onDisabled(disableReason, target);
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+        super.onNotEditable(disableReason, target);
 
         entityLink.setEnabled(false);
         entityLink.add(new AttributeModifier("title", Model.of(disableReason)));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index ebcc158..0bf0e3e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -102,13 +102,13 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
 
 
     @Override
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
         // View: Read only
         select2.setEnabled(false);
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
         // Edit: read/write
         select2.setEnabled(true);
 
@@ -116,8 +116,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         setTitleAttribute(disableReason);
         select2.setEnabled(false);
     }
@@ -137,8 +137,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
-        super.onDisabled(disableReason, target);
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+        super.onNotEditable(disableReason, target);
 
         setTitleAttribute(disableReason);
         select2.setEnabled(false);