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/18 15:37:36 UTC

[isis] branch master updated: ISIS-2882: add value-semantics for OidDto and wire up with OidDtoPanel

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 8e126f7  ISIS-2882: add value-semantics for OidDto and wire up with OidDtoPanel
8e126f7 is described below

commit 8e126f7a598bdda3c2110c3d333553e371df4796
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Nov 18 16:36:10 2021 +0100

    ISIS-2882: add value-semantics for OidDto and wire up with OidDtoPanel
---
 .../valuesemantics/OidDtoValueSemantics.java       | 105 +++++++++++++++++++++
 .../model/converter/OidDtoConverterWkt.java}       |  24 ++---
 ...va => ScalarPanelTextFieldTextualAbstract.java} |  10 +-
 .../scalars/jdkdates/JavaSqlTimePanel.java         |   4 +-
 .../ui/components/scalars/oiddto/OidDtoPanel.java  |  23 ++++-
 .../scalars/oiddto/OidDtoPanelFactory.java         |   4 +-
 .../scalars/passwd/IsisPasswordPanel.java          |   4 +-
 .../scalars/string/MultiLineStringPanel.java       |   4 +-
 .../ui/components/scalars/string/StringPanel.java  |   4 +-
 .../scalars/value/compound/ValueCompoundPanel.java |   4 +-
 .../scalars/value/fallback/ValueFallbackPanel.java |   4 +-
 .../{TreePanel.java => ParentedTreePanel.java}     |  10 +-
 .../ui/components/tree/TreePanelFactories.java     |   4 +-
 13 files changed, 163 insertions(+), 41 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java
new file mode 100644
index 0000000..fac39f0
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java
@@ -0,0 +1,105 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.metamodel.valuesemantics;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsAbstract;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.schema.common.v2.OidDto;
+import org.apache.isis.schema.common.v2.ValueType;
+
+import lombok.val;
+
+@Component
+@Named("isis.val.OidDtoValueSemantics")
+public class OidDtoValueSemantics
+extends ValueSemanticsAbstract<OidDto>
+implements
+    EncoderDecoder<OidDto>,
+    Parser<OidDto>,
+    Renderer<OidDto> {
+
+    @Override
+    public Class<OidDto> getCorrespondingClass() {
+        return OidDto.class;
+    }
+
+    @Override
+    public ValueType getSchemaValueType() {
+        return UNREPRESENTED;
+    }
+
+    // -- ENCODER DECODER
+
+    @Override
+    public String toEncodedString(final OidDto object) {
+        return Bookmark.forOidDto(object).stringify();
+    }
+
+    @Override
+    public OidDto fromEncodedString(final String data) {
+        return Bookmark.parse(data)
+                .orElseThrow(()->_Exceptions.illegalArgument("%s", data))
+                .toOidDto();
+    }
+
+    // -- RENDERER
+
+    @Override
+    public String simpleTextPresentation(final ValueSemanticsProvider.Context context, final OidDto value) {
+        return value == null ? "" : Bookmark.forOidDto(value).stringify();
+    }
+
+    // -- PARSER
+
+    @Override
+    public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final OidDto value) {
+        return value == null ? null : value.toString();
+    }
+
+    @Override
+    public OidDto parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
+        val input = _Strings.blankToNullOrTrim(text);
+        return input!=null
+                ? Bookmark.parse(input)
+                        .orElseThrow(()->_Exceptions.illegalArgument("%s", input))
+                        .toOidDto()
+                : null;
+    }
+
+    @Override
+    public int typicalLength() {
+        return maxLength();
+    }
+
+    @Override
+    public int maxLength() {
+        return 4048;
+    }
+
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/OidDtoConverterWkt.java
similarity index 61%
copy from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java
copy to viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/OidDtoConverterWkt.java
index e702cc0..a0b36cd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/OidDtoConverterWkt.java
@@ -16,21 +16,23 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.wicket.ui.components.scalars.string;
+package org.apache.isis.viewer.wicket.model.converter;
 
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+import org.apache.isis.schema.common.v2.OidDto;
 
-/**
- * Panel for rendering scalars of type {@link String}.
- */
-public class StringPanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+import lombok.NonNull;
 
-    private static final long serialVersionUID = 1L;
+public class OidDtoConverterWkt
+extends ConverterBasedOnValueSemantics<OidDto> {
 
+    private static final long serialVersionUID = 1L;
 
-    public StringPanel(final String id, final ScalarModel scalarModel) {
-        super(id, scalarModel);
+    public OidDtoConverterWkt(
+            final @NonNull ObjectFeature objFeature,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        super(objFeature, scalarRepresentation);
     }
 
-}
+}
\ No newline at end of file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldBasedOnStringSemanticsAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldTextualAbstract.java
similarity index 81%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldBasedOnStringSemanticsAbstract.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldTextualAbstract.java
index e43a336..b5eb5c0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldBasedOnStringSemanticsAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldTextualAbstract.java
@@ -27,16 +27,16 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import lombok.NonNull;
 
 /**
- * Adapter for {@link ScalarPanelTextFieldAbstract textField-based scalar panel}
- * s where moreover the scalar parameter or property is a value type that is
- * parseable.
+ * Specialization of {@link ScalarPanelTextFieldAbstract},
+ * where the scalar (parameter or property) is a value-type, that is
+ * textual and requires no conversion.
  */
-public abstract class ScalarPanelTextFieldBasedOnStringSemanticsAbstract
+public abstract class ScalarPanelTextFieldTextualAbstract
 extends ScalarPanelTextFieldAbstract<String> {
 
     private static final long serialVersionUID = 1L;
 
-    protected ScalarPanelTextFieldBasedOnStringSemanticsAbstract(final String id, final ScalarModel scalarModel) {
+    protected ScalarPanelTextFieldTextualAbstract(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel, String.class);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimePanel.java
index 57c7689..66f63f7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimePanel.java
@@ -21,12 +21,12 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates;
 import java.sql.Time;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 
 /**
  * Panel for rendering scalars of type {@link Time java.sql.Time}.
  */
-public class JavaSqlTimePanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+public class JavaSqlTimePanel extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanel.java
index 1e1f571..4be9eff 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanel.java
@@ -18,19 +18,34 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars.oiddto;
 
+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.schema.common.v2.OidDto;
+import org.apache.isis.viewer.wicket.model.converter.OidDtoConverterWkt;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
+
+import lombok.NonNull;
 
 /**
  * Panel for rendering scalars of type {@link org.apache.isis.schema.common.v2.OidDto}.
  */
-public class OidDtoPanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+public class OidDtoPanel
+extends ScalarPanelTextFieldAbstract<OidDto> {
 
     private static final long serialVersionUID = 1L;
 
-
     public OidDtoPanel(final String id, final ScalarModel scalarModel) {
-        super(id, scalarModel);
+        super(id, scalarModel, OidDto.class);
+    }
+
+    @Override
+    protected IConverter<OidDto> getConverter(
+            final @NonNull ObjectFeature propOrParam,
+            final @NonNull ScalarRepresentation scalarRepresentation) {
+        return new OidDtoConverterWkt(propOrParam, scalarRepresentation);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanelFactory.java
index e9dabf0..7249887 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanelFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/oiddto/OidDtoPanelFactory.java
@@ -20,7 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.oiddto;
 
 import org.apache.wicket.Component;
 
-import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.schema.common.v2.OidDto;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ComponentFactoryScalarAbstract;
 
@@ -29,7 +29,7 @@ public class OidDtoPanelFactory extends ComponentFactoryScalarAbstract {
     private static final long serialVersionUID = 1L;
 
     public OidDtoPanelFactory() {
-        super(OidDtoPanel.class, Bookmark.class);
+        super(OidDtoPanel.class, OidDto.class);
     }
 
     @Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
index b4bc333..41bfa23 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
@@ -24,7 +24,7 @@ import org.apache.wicket.markup.html.form.PasswordTextField;
 
 import org.apache.isis.applib.value.Password;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 
 import de.agilecoders.wicket.core.util.Attributes;
 
@@ -32,7 +32,7 @@ import de.agilecoders.wicket.core.util.Attributes;
  * Panel for rendering scalars of type {@link Password Isis' applib.Password}.
  */
 public class IsisPasswordPanel
-extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
index 71b5411..f0ab578 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
 import lombok.val;
@@ -38,7 +38,7 @@ import lombok.val;
  * Panel for rendering MultiLine scalars of type String
  */
 public class MultiLineStringPanel
-extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java
index e702cc0..c938044 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanel.java
@@ -19,12 +19,12 @@
 package org.apache.isis.viewer.wicket.ui.components.scalars.string;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 
 /**
  * Panel for rendering scalars of type {@link String}.
  */
-public class StringPanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+public class StringPanel extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
index cd958ca..c3515bd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
@@ -25,11 +25,11 @@ import org.apache.wicket.model.LambdaModel;
 import org.apache.isis.applib.adapters.Renderer;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 
 //FIXME[ISIS-2877] introduced for experiments, should be removed
 public class ValueCompoundPanel
-extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/fallback/ValueFallbackPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/fallback/ValueFallbackPanel.java
index b802d79..3c14b57 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/fallback/ValueFallbackPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/fallback/ValueFallbackPanel.java
@@ -22,7 +22,7 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 
 /**
  * Panel for rendering any value types that do not have their own custom
@@ -33,7 +33,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldB
  * (typically through the Isis' {@link Value} annotation.
  */
 public class ValueFallbackPanel
-extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/ParentedTreePanel.java
similarity index 90%
rename from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/ParentedTreePanel.java
index 74beacd..e73131a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/ParentedTreePanel.java
@@ -25,17 +25,18 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldBasedOnStringSemanticsAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldTextualAbstract;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
 
 /**
- * Immutable tree, reuses the ScalarPanelTextField functionality without the need of its text field.
+ * Immutable tree, hooks into the ScalarPanelTextField without actually using its text field.
  */
-public class TreePanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstract {
+public class ParentedTreePanel
+extends ScalarPanelTextFieldTextualAbstract {
 
     private static final long serialVersionUID = 1L;
 
-    public TreePanel(final String id, final ScalarModel scalarModel) {
+    public ParentedTreePanel(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel);
     }
 
@@ -50,7 +51,6 @@ public class TreePanel extends ScalarPanelTextFieldBasedOnStringSemanticsAbstrac
         final Component treeComponent = createTreeComponent("scalarValueContainer");
         final Behavior treeTheme = getTreeThemeProvider().treeThemeFor(super.getModel());
 
-
         getTextField().setLabel(Model.of(getModel().getFriendlyName()));
 
         final FormGroup formGroup = new FormGroup(ID_SCALAR_IF_REGULAR, getTextField());
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
index 58a1ae7..5832b28 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
@@ -41,7 +41,7 @@ public class TreePanelFactories {
         private static final long serialVersionUID = 1L;
 
         public Parented() {
-            super(ComponentType.SCALAR_NAME_AND_VALUE, TreePanel.class);
+            super(ComponentType.SCALAR_NAME_AND_VALUE, ParentedTreePanel.class);
         }
 
         @Override
@@ -62,7 +62,7 @@ public class TreePanelFactories {
         @Override
         public final Component createComponent(final String id, final IModel<?> model) {
 
-            return new TreePanel(id, (ScalarModel) model);
+            return new ParentedTreePanel(id, (ScalarModel) model);
         }
     }