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/11/15 10:33:35 UTC

[isis] branch master updated: ISIS-2882: Converter polishing

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 5a12283  ISIS-2882: Converter polishing
5a12283 is described below

commit 5a122831f43a276ef829f0522e128522c4c303e5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Nov 15 11:33:25 2021 +0100

    ISIS-2882: Converter polishing
    
    - also unify EditOrView enums
---
 .../ScalarRepresentation.java}                     | 26 +++++++++++++---------
 .../common/ui/custom/WhereInTheWorldPanel.java     |  5 +++--
 .../testdomain/viewers/InteractionTestWkt.java     |  3 ++-
 .../viewer/common/model/object/ObjectUiModel.java  | 19 ++++++++--------
 .../model/converter/BigDecimalConverterWkt.java    | 12 +++-------
 .../model/converter/BigIntegerConverterWkt.java    | 10 ++++++---
 .../wicket/model/converter/ByteConverterWkt.java   | 11 ++++++---
 .../converter/ConverterBasedOnValueSemantics.java  | 23 +++++++------------
 .../wicket/model/converter/DoubleConverterWkt.java | 11 ++++++---
 .../wicket/model/converter/FloatConverterWkt.java  | 11 ++++++---
 .../model/converter/IntegerConverterWkt.java       | 11 ++++++---
 .../wicket/model/converter/LongConverterWkt.java   | 11 ++++++---
 .../wicket/model/converter/ShortConverterWkt.java  | 11 ++++++---
 .../wicket/model/models/ChainingObjectModel.java   |  8 +++----
 .../viewer/wicket/model/models/EntityModel.java    | 17 +++++++-------
 .../viewer/wicket/model/models/ScalarModel.java    | 12 +++++-----
 .../wicket/model/models/ScalarPropertyModel.java   |  7 +++---
 .../ajaxtable/columns/GenericPropertyColumn.java   |  3 ++-
 .../components/entity/fieldset/PropertyGroup.java  |  3 ++-
 .../ui/components/property/PropertyEditPanel.java  |  3 ++-
 .../ui/components/scalars/ScalarPanelAbstract.java |  3 ++-
 .../scalars/ScalarPanelTextFieldNumeric.java       | 18 +++++++++++----
 .../scalars/jdkmath/JavaMathBigDecimalPanel.java   | 10 +++++++--
 .../scalars/jdkmath/JavaMathBigIntegerPanel.java   | 10 +++++++--
 .../ui/components/scalars/primitive/BytePanel.java | 11 +++++++--
 .../components/scalars/primitive/DoublePanel.java  | 10 +++++++--
 .../components/scalars/primitive/FloatPanel.java   | 10 +++++++--
 .../components/scalars/primitive/IntegerPanel.java | 10 +++++++--
 .../ui/components/scalars/primitive/LongPanel.java | 10 +++++++--
 .../components/scalars/primitive/ShortPanel.java   | 10 +++++++--
 .../widgets/zclip/ZeroClipboardPanel.java          |  5 +++--
 .../jdkmath/BigDecimalConverter_roundtrip.java     |  4 ++--
 32 files changed, 212 insertions(+), 116 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueRepresentation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
similarity index 64%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueRepresentation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
index 1583fd5..b820864 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueRepresentation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
@@ -16,31 +16,37 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.facets.object.value;
+package org.apache.isis.core.metamodel.commons;
 
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.Renderer;
 
 /**
  * Introduced specifically for value-types.
- *
- * @apiNote there are similarities with org.apache.isis.viewer.common.model.object.ObjectUiModel.EitherViewOrEdit,
- * which is not specific to value-types, but covers any scalars;
- * (thinking about unifying these two into one - more generic - enum)
  */
-public enum ValueRepresentation {
+public enum ScalarRepresentation {
 
-    /** Indicates that for value-type to {@link String} conversion a {@link Parser} is required. */
+    /**
+     * Editing (parsing) mode, corresponds to 'regular' UI components.
+     * <p>
+     * In case of value-types, indicates that for value-type to {@link String} conversion,
+     * a {@link Parser} is required.
+     */
     EDITING,
 
-    /** Indicates that for value-type to {@link String} conversion a {@link Renderer} is required. */
-    RENDERING;
+    /**
+     * Viewing (rendering) mode, corresponds to 'compact' UI components.
+     * <p>
+     * In case of value-types, indicates that for value-type to {@link String} conversion,
+     * a {@link Renderer} is required.
+     */
+    VIEWING;
 
     public boolean isEditing() {
         return this == EDITING;
     }
 
     public boolean isRendering() {
-        return this == RENDERING;
+        return this == VIEWING;
     }
 }
diff --git a/examples/demo/wicket/common/src/main/java/demoapp/webapp/wicket/common/ui/custom/WhereInTheWorldPanel.java b/examples/demo/wicket/common/src/main/java/demoapp/webapp/wicket/common/ui/custom/WhereInTheWorldPanel.java
index 987502d..b4d436d 100644
--- a/examples/demo/wicket/common/src/main/java/demoapp/webapp/wicket/common/ui/custom/WhereInTheWorldPanel.java
+++ b/examples/demo/wicket/common/src/main/java/demoapp/webapp/wicket/common/ui/custom/WhereInTheWorldPanel.java
@@ -23,6 +23,7 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.image.Image;
 import org.apache.wicket.request.resource.ByteArrayResource;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.common.model.components.ComponentType;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel;
@@ -86,7 +87,7 @@ extends PanelAbstract<ManagedObject, EntityModel>  {
 
 //tag::createMapComponent[]
     @SneakyThrows
-    private Image createMapComponent(String id, WhereInTheWorldVm vm)  {
+    private Image createMapComponent(final String id, final WhereInTheWorldVm vm)  {
         val bytes = geoapifyClient.toJpeg(
                         vm.getLatitude(), vm.getLongitude(), vm.getZoom());  // <.>
         return new Image(id, new ByteArrayResource("image/jpeg", bytes));    // <.>
@@ -102,7 +103,7 @@ extends PanelAbstract<ManagedObject, EntityModel>  {
 
         val scalarModel =
                 getModel().getPropertyModel(                                       // <.>
-                    property, ObjectUiModel.EitherViewOrEdit.VIEW,
+                    property, ScalarRepresentation.VIEWING,
                     ObjectUiModel.RenderingHint.REGULAR);
         return getComponentFactoryRegistry().createComponent(                      // <.>
                 ComponentType.SCALAR_NAME_AND_VALUE, propertyId, scalarModel);
diff --git a/regressiontests/stable-viewers/src/test/java/org/apache/isis/testdomain/viewers/InteractionTestWkt.java b/regressiontests/stable-viewers/src/test/java/org/apache/isis/testdomain/viewers/InteractionTestWkt.java
index 4a2c2ee..7573616 100644
--- a/regressiontests/stable-viewers/src/test/java/org/apache/isis/testdomain/viewers/InteractionTestWkt.java
+++ b/regressiontests/stable-viewers/src/test/java/org/apache/isis/testdomain/viewers/InteractionTestWkt.java
@@ -34,6 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -117,7 +118,7 @@ class InteractionTestWkt extends InteractionTestAbstract {
             final ScalarPropertyModel scalarModel = (ScalarPropertyModel) entityModel
                     .getPropertyModel(
                             prop,
-                            EntityModel.EitherViewOrEdit.VIEW,
+                            ScalarRepresentation.VIEWING,
                             RenderingHint.PARENTED_PROPERTY_COLUMN);
 
 
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
index e1f212f..5c72bc3 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
@@ -19,6 +19,7 @@
 package org.apache.isis.viewer.common.model.object;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
@@ -34,9 +35,9 @@ public interface ObjectUiModel {
                 .isVisible(getManagedObject(), InteractionInitiatedBy.USER);
     }
 
-    public enum EitherViewOrEdit {
-        VIEW, EDIT
-    }
+//    public enum ScalarRepresentation {
+//        VIEW, EDIT
+//    }
 
     @RequiredArgsConstructor
     public enum RenderingHint {
@@ -98,27 +99,27 @@ public interface ObjectUiModel {
         @Deprecated// make immutable? - need to recreate any bound UI components anyway
         void setRenderingHint(RenderingHint renderingHint);
 
-        EitherViewOrEdit getMode();
+        ScalarRepresentation getMode();
         @Deprecated// make immutable? - need to recreate any bound UI components anyway
-        void setMode(EitherViewOrEdit mode);
+        void setMode(ScalarRepresentation mode);
 
         // -- SHORTCUTS
 
         default boolean isViewMode() {
-            return getMode() == EitherViewOrEdit.VIEW;
+            return getMode() == ScalarRepresentation.VIEWING;
         }
 
         default boolean isEditMode() {
-            return getMode() == EitherViewOrEdit.EDIT;
+            return getMode() == ScalarRepresentation.EDITING;
         }
 
         default HasRenderingHints toEditMode() {
-            setMode(EitherViewOrEdit.EDIT);
+            setMode(ScalarRepresentation.EDITING);
             return this;
         }
 
         default HasRenderingHints toViewMode() {
-            setMode(EitherViewOrEdit.VIEW);
+            setMode(ScalarRepresentation.VIEWING);
             return this;
         }
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigDecimalConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigDecimalConverterWkt.java
index eb0357a..7eaed08 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigDecimalConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigDecimalConverterWkt.java
@@ -20,9 +20,8 @@ package org.apache.isis.viewer.wicket.model.converter;
 
 import java.math.BigDecimal;
 
-import org.apache.isis.core.metamodel.facets.object.value.ValueRepresentation;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 
 import lombok.NonNull;
 
@@ -32,14 +31,9 @@ extends ConverterBasedOnValueSemantics<BigDecimal> {
     private static final long serialVersionUID = 1L;
 
     public BigDecimalConverterWkt(
-            final @NonNull ScalarModel scalarModel) {
-        super(scalarModel);
-    }
-
-    public BigDecimalConverterWkt(
             final @NonNull ObjectFeature objFeature,
-            final @NonNull ValueRepresentation valueRepresentation) {
-        super(objFeature, valueRepresentation);
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
\ No newline at end of file
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigIntegerConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigIntegerConverterWkt.java
index eb78a47..b732f5a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigIntegerConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/BigIntegerConverterWkt.java
@@ -20,15 +20,19 @@ package org.apache.isis.viewer.wicket.model.converter;
 
 import java.math.BigInteger;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class BigIntegerConverterWkt
 extends ConverterBasedOnValueSemantics<BigInteger> {
 
     private static final long serialVersionUID = 1L;
 
-    public BigIntegerConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public BigIntegerConverterWkt(@NonNull final ObjectFeature propOrParam,
+            @NonNull final ScalarRepresentation scalarRepresentation) {
+        super(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ByteConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ByteConverterWkt.java
index b8dc3bf..3ae5afd 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ByteConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ByteConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class ByteConverterWkt
 extends ConverterBasedOnValueSemantics<Byte> {
 
     private static final long serialVersionUID = 1L;
 
-    public ByteConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public ByteConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
index bc693c2..ce9eb16 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
@@ -26,14 +26,13 @@ import org.apache.wicket.util.convert.IConverter;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.commons.internal.base._Either;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.object.value.ValueRepresentation;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext.HasCommonContext;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.util.CommonContextUtils;
 
 import lombok.NonNull;
@@ -48,20 +47,14 @@ implements
     private static final long serialVersionUID = 1L;
 
     private final Identifier featureIdentifier;
-    private final ValueRepresentation valueRepresentation;
+    private final ScalarRepresentation scalarRepresentation;
     private transient _Either<OneToOneAssociation,  ObjectActionParameter> propOrParam;
     private transient IsisAppCommonContext commonContext;
 
-    protected ConverterBasedOnValueSemantics(final ScalarModel scalarModel) {
-        this(scalarModel.getMetaModel(), scalarModel.isEditMode()
-                ? ValueRepresentation.EDITING
-                : ValueRepresentation.RENDERING);
-    }
-
     protected ConverterBasedOnValueSemantics(
             final @NonNull ObjectFeature propOrParam,
-            final @NonNull ValueRepresentation valueRepresentation) {
-        this.valueRepresentation = valueRepresentation;
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        this.scalarRepresentation = scalarRepresentation;
         this.propOrParam = propOrParam instanceof OneToOneAssociation // memoize
                 ? _Either.left((OneToOneAssociation)propOrParam)
                 : _Either.right((ObjectActionParameter)propOrParam);
@@ -76,7 +69,7 @@ implements
     public final T convertToObject(final String text, final Locale locale) throws ConversionException {
 
         // guard against framework bugs
-        if(valueRepresentation.isRendering()) {
+        if(scalarRepresentation.isRendering()) {
             throw _Exceptions.illegalArgument("Internal Error: "
                     + "cannot convert a rendering representation back to its value-type '%s' -> %s",
                         text,
@@ -114,11 +107,11 @@ implements
         val context = valueFacet
                 .createValueSemanticsContext(feature);
 
-        switch(valueRepresentation) {
+        switch(scalarRepresentation) {
         case EDITING:
             return valueFacet.selectParserForFeatureElseFallback(feature)
                     .parseableTextRepresentation(context, value);
-        case RENDERING:
+        case VIEWING:
             return propOrParam.fold(
                     prop->valueFacet.selectRendererForPropertyElseFallback(prop)
                             .simpleTextPresentation(context, value),
@@ -126,7 +119,7 @@ implements
                             .simpleTextPresentation(context, value));
         }
 
-        throw _Exceptions.unmatchedCase(valueRepresentation);
+        throw _Exceptions.unmatchedCase(scalarRepresentation);
     }
 
     // -- HELPER
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/DoubleConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/DoubleConverterWkt.java
index bbe1fb2..7796385 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/DoubleConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/DoubleConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class DoubleConverterWkt
 extends ConverterBasedOnValueSemantics<Double> {
 
     private static final long serialVersionUID = 1L;
 
-    public DoubleConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public DoubleConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/FloatConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/FloatConverterWkt.java
index bae486b..3934179 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/FloatConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/FloatConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class FloatConverterWkt
 extends ConverterBasedOnValueSemantics<Float> {
 
     private static final long serialVersionUID = 1L;
 
-    public FloatConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public FloatConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/IntegerConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/IntegerConverterWkt.java
index b5dc5f9..42e5ec5 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/IntegerConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/IntegerConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class IntegerConverterWkt
 extends ConverterBasedOnValueSemantics<Integer> {
 
     private static final long serialVersionUID = 1L;
 
-    public IntegerConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public IntegerConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/LongConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/LongConverterWkt.java
index 2ba392c..5e9b055 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/LongConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/LongConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class LongConverterWkt
 extends ConverterBasedOnValueSemantics<Long> {
 
     private static final long serialVersionUID = 1L;
 
-    public LongConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public LongConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ShortConverterWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ShortConverterWkt.java
index 267ac7d..200d7d1 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ShortConverterWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ShortConverterWkt.java
@@ -18,15 +18,20 @@
  */
 package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.NonNull;
 
 public class ShortConverterWkt
 extends ConverterBasedOnValueSemantics<Short> {
 
     private static final long serialVersionUID = 1L;
 
-    public ShortConverterWkt(final ScalarModel scalarModel) {
-        super(scalarModel);
+    public ShortConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
index 1b3f4c8..6a2da84 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
@@ -21,9 +21,9 @@ package org.apache.isis.viewer.wicket.model.models;
 import org.apache.wicket.model.ChainingModel;
 
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.common.model.object.ObjectUiModel.EitherViewOrEdit;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel.RenderingHint;
 
 /**
@@ -74,8 +74,8 @@ implements ObjectAdapterModel {
     }
 
     @Override
-    public EntityModel.EitherViewOrEdit getMode() {
-        return EntityModel.EitherViewOrEdit.VIEW;
+    public ScalarRepresentation getMode() {
+        return ScalarRepresentation.VIEWING;
     }
 
     @Override
@@ -90,7 +90,7 @@ implements ObjectAdapterModel {
     }
 
     @Override
-    public void setMode(final EitherViewOrEdit mode) {
+    public void setMode(final ScalarRepresentation mode) {
         throw _Exceptions.unexpectedCodeReach();
     }
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index dcc983370..f31664a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.hint.HintStore;
 import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.spec.feature.memento.PropertyMemento;
@@ -80,14 +81,14 @@ implements
             final @NonNull IsisAppCommonContext commonContext,
             final @Nullable ManagedObject adapter) {
         return new EntityModel(BookmarkedObjectWkt.ofAdapter(commonContext, adapter),
-                EitherViewOrEdit.VIEW, RenderingHint.REGULAR);
+                ScalarRepresentation.VIEWING, RenderingHint.REGULAR);
     }
 
     public static EntityModel ofBookmark(
             final @NonNull IsisAppCommonContext commonContext,
             final @Nullable Bookmark bookmark) {
         return new EntityModel(BookmarkedObjectWkt.ofBookmark(commonContext, bookmark),
-                EitherViewOrEdit.VIEW, RenderingHint.REGULAR);
+                ScalarRepresentation.VIEWING, RenderingHint.REGULAR);
     }
 
     // -- CONSTRUCTORS
@@ -99,12 +100,12 @@ implements
             final IsisAppCommonContext commonContext,
             final ManagedObject adapter) {
         this(BookmarkedObjectWkt.ofAdapter(commonContext, adapter),
-                EitherViewOrEdit.VIEW, RenderingHint.REGULAR);
+                ScalarRepresentation.VIEWING, RenderingHint.REGULAR);
     }
 
     private EntityModel(
             final @NonNull BookmarkedObjectWkt bookmarkedObject,
-            final EitherViewOrEdit mode,
+            final ScalarRepresentation mode,
             final RenderingHint renderingHint) {
         super(bookmarkedObject);
         this.mode = mode;
@@ -145,7 +146,7 @@ implements
 
     @Getter(onMethod = @__(@Override))
     @Setter(onMethod = @__(@Override))
-    private EitherViewOrEdit mode;
+    private ScalarRepresentation mode;
 
     @Getter(onMethod = @__(@Override))
     @Setter(onMethod = @__(@Override))
@@ -198,7 +199,7 @@ implements
      */
     public ScalarModel getPropertyModel(
             final OneToOneAssociation property,
-            final EitherViewOrEdit viewOrEdit,
+            final ScalarRepresentation viewOrEdit,
             final RenderingHint renderingHint) {
 
         val pm = property.getMemento();
@@ -230,7 +231,7 @@ implements
 
     @Override
     public EntityModel toEditMode() {
-        setMode(EitherViewOrEdit.EDIT);
+        setMode(ScalarRepresentation.EDITING);
         propertyScalarModels().values()
             .forEach(ScalarPropertyModel::toEditMode);
         return this;
@@ -238,7 +239,7 @@ implements
 
     @Override
     public EntityModel toViewMode() {
-        setMode(EitherViewOrEdit.VIEW);
+        setMode(ScalarRepresentation.VIEWING);
         propertyScalarModels().values()
             .forEach(ScalarPropertyModel::toViewMode);
         return this;
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index b758842..46d54da 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedValue;
@@ -36,7 +37,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.common.model.feature.ScalarUiModel;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel;
-import org.apache.isis.viewer.common.model.object.ObjectUiModel.EitherViewOrEdit;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel.HasRenderingHints;
 import org.apache.isis.viewer.common.model.object.ObjectUiModel.RenderingHint;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -81,7 +81,7 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
 
     @Getter(onMethod = @__(@Override))
     @Setter(onMethod = @__(@Override))
-    private EitherViewOrEdit mode;
+    private ScalarRepresentation mode;
 
     @Getter(onMethod = @__(@Override))
     @Setter(onMethod = @__(@Override))
@@ -95,7 +95,7 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
     protected ScalarModel(
             final EntityModel parentEntityModel) {
         this(EitherParamOrProp.PARAMETER,
-                parentEntityModel, EitherViewOrEdit.EDIT, RenderingHint.REGULAR);
+                parentEntityModel, ScalarRepresentation.EDITING, RenderingHint.REGULAR);
     }
 
     /**
@@ -105,7 +105,7 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
      */
     protected ScalarModel(
             final EntityModel parentEntityModel,
-            final ObjectUiModel.EitherViewOrEdit viewOrEdit,
+            final ScalarRepresentation viewOrEdit,
             final ObjectUiModel.RenderingHint renderingHint) {
         this(EitherParamOrProp.PROPERTY,
                 parentEntityModel, viewOrEdit, renderingHint);
@@ -114,7 +114,7 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
     private ScalarModel(
             final @NonNull EitherParamOrProp paramOrProp,
             final @NonNull EntityModel parentEntityModel,
-            final @NonNull ObjectUiModel.EitherViewOrEdit viewOrEdit,
+            final @NonNull ScalarRepresentation viewOrEdit,
             final @NonNull ObjectUiModel.RenderingHint renderingHint) {
 
         super(parentEntityModel); // the so called target model, we are chaining us to
@@ -311,7 +311,7 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
      * @return <tt>true</tt> if the widget for this model must be editable.
      */
     public boolean mustBeEditable() {
-        return getMode() == EitherViewOrEdit.EDIT
+        return getMode() == ScalarRepresentation.EDITING
                 || getParamOrProp() == EitherParamOrProp.PARAMETER
                 || hasAssociatedActionWithInlineAsIfEdit();
     }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index a1fa159..b6a49af 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -19,6 +19,7 @@
 package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.interactions.managed.InteractionVeto;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedValue;
@@ -43,7 +44,7 @@ implements PropertyUiModel {
 
     public static ScalarPropertyModel wrap(
             final PropertyUiModelWkt delegate,
-            final EntityModel.EitherViewOrEdit viewOrEdit,
+            final ScalarRepresentation viewOrEdit,
             final EntityModel.RenderingHint renderingHint) {
         return new ScalarPropertyModel(delegate, viewOrEdit, renderingHint);
     }
@@ -55,7 +56,7 @@ implements PropertyUiModel {
      */
     private ScalarPropertyModel(
             final PropertyUiModelWkt delegate,
-            final EntityModel.EitherViewOrEdit viewOrEdit,
+            final ScalarRepresentation viewOrEdit,
             final EntityModel.RenderingHint renderingHint) {
         super(EntityModel.ofAdapter(delegate.getCommonContext(), delegate.getOwner()),
                 viewOrEdit, renderingHint);
@@ -64,7 +65,7 @@ implements PropertyUiModel {
 
     /** @return new instance bound to the same delegate */
     public ScalarPropertyModel copyHaving(
-            final EntityModel.EitherViewOrEdit viewOrEdit,
+            final ScalarRepresentation viewOrEdit,
             final EntityModel.RenderingHint renderingHint) {
         return wrap(delegate, viewOrEdit, renderingHint);
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericPropertyColumn.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericPropertyColumn.java
index a8d00b1..86dbfc2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericPropertyColumn.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericPropertyColumn.java
@@ -27,6 +27,7 @@ import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
 
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataRow;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -118,7 +119,7 @@ extends GenericColumnAbstract {
         final ScalarModel scalarModel = entityModel
                 .getPropertyModel(
                         property,
-                        EntityModel.EitherViewOrEdit.VIEW,
+                        ScalarRepresentation.VIEWING,
                         collectionVariant.getColumnRenderingHint());
 
         final ComponentFactory componentFactory = findComponentFactory(ComponentType.SCALAR_NAME_AND_VALUE, scalarModel);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index c71dae8..e6750de 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -33,6 +33,7 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -190,7 +191,7 @@ public class PropertyGroup extends PanelAbstract<ManagedObject, EntityModel> imp
             final Consumer<LinkAndLabel> onAssociatedAction) {
 
         final ScalarModel scalarModel =
-                entityModel.getPropertyModel(property, EntityModel.EitherViewOrEdit.VIEW, EntityModel.RenderingHint.REGULAR);
+                entityModel.getPropertyModel(property, ScalarRepresentation.VIEWING, EntityModel.RenderingHint.REGULAR);
 
         final Component scalarNameAndValueComponent = getComponentFactoryRegistry()
                 .addOrReplaceComponent(container, ID_PROPERTY, ComponentType.SCALAR_NAME_AND_VALUE, scalarModel);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
index b05b3b4..e02a956 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.property;
 
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.common.model.components.ComponentType;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -51,7 +52,7 @@ extends PanelAbstract<ManagedObject, ScalarPropertyModel> {
             final ScalarPropertyModel scalarModel) {
 
         super(id, scalarModel.copyHaving(
-                EntityModel.EitherViewOrEdit.EDIT,
+                ScalarRepresentation.EDITING,
                 EntityModel.RenderingHint.REGULAR));
 
         buildGui(scalarModel);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 3a78be0..5e6240e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -44,6 +44,7 @@ import org.apache.isis.commons.internal.base._Strings;
 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.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -367,7 +368,7 @@ implements ScalarModelSubscriber {
 
         // prevent from tabbing into non-editable widgets.
         if(scalarModel.isProperty()
-                && scalarModel.getMode() == EntityModel.EitherViewOrEdit.VIEW
+                && scalarModel.getMode() == ScalarRepresentation.VIEWING
                 && (scalarModel.getPromptStyle().isDialog()
                         || !scalarModel.canEnterEditMode())) {
             getScalarValueComponent().add(new AttributeAppender("tabindex", "-1"));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
index 269f039..26ba73b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
@@ -24,9 +24,12 @@ import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
 import lombok.val;
 
 /**
@@ -58,11 +61,18 @@ extends ScalarPanelTextFieldAbstract<T> {
         return super.toStringConvertingModelOf(getConverter(scalarModel));
     }
 
+    protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
+        return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
+                ? ScalarRepresentation.EDITING
+                : ScalarRepresentation.VIEWING);
+    }
+
     /**
-     * The converter that is going to be used for the regular view of the panel, i.e. for the text field.
-     * The same converter should be used to render the compact view as well, to show the same precision and scale
-     * for the floating point types
+     * Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
+     * based on argument {@code scalarRepresentation}.
      */
-    protected abstract IConverter<T> getConverter(final ScalarModel scalarModel);
+    protected abstract IConverter<T> getConverter(
+            @NonNull ObjectFeature propOrParam,
+            @NonNull ScalarRepresentation scalarRepresentation);
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
index edc800d..5f05074 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
@@ -23,11 +23,15 @@ import java.math.BigDecimal;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.BigDecimalConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link BigDecimal}.
  */
@@ -55,8 +59,10 @@ extends ScalarPanelTextFieldNumeric<BigDecimal> {
     }
 
     @Override
-    protected IConverter<BigDecimal> getConverter(final ScalarModel scalarModel) {
-        return new BigDecimalConverterWkt(scalarModel);
+    protected IConverter<BigDecimal> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new BigDecimalConverterWkt(propOrParam, scalarRepresentation);
     }
 }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
index ea3bb5d..dd095df 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
@@ -23,11 +23,15 @@ import java.math.BigInteger;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.BigIntegerConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link BigInteger}.
  */
@@ -52,8 +56,10 @@ extends ScalarPanelTextFieldNumeric<BigInteger> {
     }
 
     @Override
-    protected IConverter<BigInteger> getConverter(final ScalarModel scalarModel) {
-        return new BigIntegerConverterWkt(scalarModel);
+    protected IConverter<BigInteger> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new BigIntegerConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
index 5f112d5..b92f34a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.ByteConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Byte} or <tt>byte</tt>.
  */
@@ -50,7 +54,10 @@ extends ScalarPanelTextFieldNumeric<Byte> {
     }
 
     @Override
-    protected IConverter<Byte> getConverter(final ScalarModel scalarModel) {
-        return new ByteConverterWkt(scalarModel);
+    protected IConverter<Byte> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new ByteConverterWkt(propOrParam, scalarRepresentation);
     }
+
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
index c7108dd..82678c6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.DoubleConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Double} or <tt>double</tt>.
  */
@@ -49,8 +53,10 @@ public class DoublePanel extends ScalarPanelTextFieldNumeric<Double> {
     }
 
     @Override
-    protected IConverter<Double> getConverter(final ScalarModel scalarModel) {
-        return new DoubleConverterWkt(scalarModel);
+    protected IConverter<Double> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new DoubleConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
index 17532e6..177e610 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.FloatConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Float} or <tt>float</tt>.
  */
@@ -49,8 +53,10 @@ public class FloatPanel extends ScalarPanelTextFieldNumeric<Float> {
     }
 
     @Override
-    protected IConverter<Float> getConverter(final ScalarModel scalarModel) {
-        return new FloatConverterWkt(scalarModel);
+    protected IConverter<Float> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new FloatConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
index 72cb601..b43d880 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.IntegerConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Integer} or <tt>int</tt>.
  */
@@ -49,8 +53,10 @@ public class IntegerPanel extends ScalarPanelTextFieldNumeric<Integer> {
     }
 
     @Override
-    protected IConverter<Integer> getConverter(final ScalarModel scalarModel) {
-        return new IntegerConverterWkt(scalarModel);
+    protected IConverter<Integer> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new IntegerConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
index 20562a8..eca762e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.LongConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Long} or <tt>long</tt>.
  */
@@ -49,8 +53,10 @@ public class LongPanel extends ScalarPanelTextFieldNumeric<Long> {
     }
 
     @Override
-    protected IConverter<Long> getConverter(final ScalarModel scalarModel) {
-        return new LongConverterWkt(scalarModel);
+    protected IConverter<Long> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new LongConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
index b9ae2ff..a6a8129 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
@@ -21,11 +21,15 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
 import org.apache.wicket.util.convert.IConverter;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.wicket.model.converter.ShortConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
+import lombok.NonNull;
+
 /**
  * Panel for rendering scalars of type {@link Short} or <tt>short</tt>.
  */
@@ -49,7 +53,9 @@ public class ShortPanel extends ScalarPanelTextFieldNumeric<Short> {
     }
 
     @Override
-    protected IConverter<Short> getConverter(final ScalarModel scalarModel) {
-        return new ShortConverterWkt(scalarModel);
+    protected IConverter<Short> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new ShortConverterWkt(propOrParam, scalarRepresentation);
     }
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
index 7b2159f..0aa255c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -24,6 +24,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ObjectAdapterModel;
@@ -60,8 +61,8 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> {
         addSimpleClipboardModalWindow();
 
         EntityModel.RenderingHint renderingHint = model.getRenderingHint();
-        EntityModel.EitherViewOrEdit mode = model.getMode();
-        setVisible(renderingHint == EntityModel.RenderingHint.REGULAR && mode == EntityModel.EitherViewOrEdit.VIEW);
+        ScalarRepresentation mode = model.getMode();
+        setVisible(renderingHint == EntityModel.RenderingHint.REGULAR && mode == ScalarRepresentation.VIEWING);
 
         // disable, since currently not honoured if used as a URL (think that session hints are taking precedence).
         // (see ISIS-1660 to resurrect)
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
index 96f73b8..d5cb175 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
@@ -38,8 +38,8 @@ import org.apache.isis.applib.services.iactnlayer.InteractionContext;
 import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facets.object.value.ValueRepresentation;
 import org.apache.isis.core.metamodel.valuesemantics.BigDecimalValueSemantics;
 import org.apache.isis.core.security._testing.InteractionService_forTesting;
 import org.apache.isis.viewer.wicket.model.converter.BigDecimalConverterWkt;
@@ -180,7 +180,7 @@ class BigDecimalConverter_roundtrip {
     private BigDecimalConverterWkt newConverter(final Class<?> type) {
         val customerSpec = mmc.getSpecificationLoader().specForTypeElseFail(type);
         val prop = customerSpec.getPropertyElseFail("value");
-        return new BigDecimalConverterWkt(prop, ValueRepresentation.EDITING);
+        return new BigDecimalConverterWkt(prop, ScalarRepresentation.EDITING);
     }
 
 }