You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/09/28 16:25:49 UTC

[isis] 09/10: ISIS-2086: refactors 'isis.viewers.{parameterLayout/propertyLayout}.{labelPosition/label} to type-safe config

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e50c57899b16a9cde346b7cf8979bc929ba8d602
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 17:19:45 2019 +0100

    ISIS-2086: refactors 'isis.viewers.{parameterLayout/propertyLayout}.{labelPosition/label} to type-safe config
---
 .../ConfigPropsForPropertyOrParameterLayout.java   | 12 ++++++++
 .../org/apache/isis/config/IsisConfiguration.java  | 16 ++++++++++
 .../facets/fallback/FallbackFacetFactory.java      | 36 +++++++---------------
 3 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/ConfigPropsForPropertyOrParameterLayout.java b/core/config/src/main/java/org/apache/isis/config/ConfigPropsForPropertyOrParameterLayout.java
new file mode 100644
index 0000000..71a70c5
--- /dev/null
+++ b/core/config/src/main/java/org/apache/isis/config/ConfigPropsForPropertyOrParameterLayout.java
@@ -0,0 +1,12 @@
+package org.apache.isis.config;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+
+public interface ConfigPropsForPropertyOrParameterLayout {
+    public LabelPosition getLabelPosition();
+
+    /**
+     * Alias for {@link #getLabelPosition()}
+     */
+    public LabelPosition getLabel();
+}
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 2b4bac7..5b2430e 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.config;
 
+import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.events.ui.CssClassUiEvent;
 import org.apache.isis.applib.services.i18n.TranslationService;
@@ -381,6 +382,7 @@ public class IsisConfiguration {
         }
     }
 
+
     private final Viewers viewers = new Viewers();
     @Data
     public static class Viewers {
@@ -390,6 +392,20 @@ public class IsisConfiguration {
             private int parented = 12;
             private int standalone = 25;
         }
+
+        private final ParameterLayout parameterLayout = new ParameterLayout();
+        @Data
+        public static class ParameterLayout implements ConfigPropsForPropertyOrParameterLayout {
+            private LabelPosition labelPosition = LabelPosition.NOT_SPECIFIED;
+            private LabelPosition label = LabelPosition.NOT_SPECIFIED;
+        }
+        private final PropertyLayout propertyLayout = new PropertyLayout();
+        @Data
+        public static class PropertyLayout implements ConfigPropsForPropertyOrParameterLayout {
+            private LabelPosition labelPosition = LabelPosition.NOT_SPECIFIED;
+            private LabelPosition label = LabelPosition.NOT_SPECIFIED;
+        }
+
     }
     
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/fallback/FallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/fallback/FallbackFacetFactory.java
index 356c016..d47338c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/fallback/FallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/fallback/FallbackFacetFactory.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.config.ConfigPropsForPropertyOrParameterLayout;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -104,7 +105,7 @@ public class FallbackFacetFactory extends FacetFactoryAbstract {
             facets.add(new MaxLengthFacetUnlimited(facetedMethod));
             facets.add(new MultiLineFacetNone(true, facetedMethod));
 
-            facets.add(newPropParamLayoutFacetIfAny(facetedMethod, "propertyLayout"));
+            facets.add(newPropParamLayoutFacetIfAny(facetedMethod, "propertyLayout", getConfiguration().getViewers().getPropertyLayout()));
         }
         if (featureType.isAction()) {
             facets.add(new ActionDefaultsFacetNone(facetedMethod));
@@ -130,37 +131,22 @@ public class FallbackFacetFactory extends FacetFactoryAbstract {
 
             facets.add(new MaxLengthFacetUnlimited(typedHolder));
 
-            facets.add(newPropParamLayoutFacetIfAny(typedHolder, "parameterLayout"));
+            facets.add(newPropParamLayoutFacetIfAny(typedHolder, "parameterLayout", getConfiguration().getViewers().getParameterLayout()));
         }
 
         FacetUtil.addFacets(facets);
     }
 
-    private Facet newPropParamLayoutFacetIfAny(final FacetHolder facetHolder, final String layoutKey) {
-        final String[] subKeys = new String[]{ "labelPosition", "label"};
-        final String propParamLayout = getPropParamLayoutConfigSetting(layoutKey, subKeys);
-        if(propParamLayout != null) {
-            try {
-                final LabelPosition labelPosition = LabelPosition.valueOf(propParamLayout);
-                return new LabelAtFacetFromLayoutConfiguration(labelPosition, facetHolder);
-            } catch(IllegalArgumentException ex) {
-                // ignore
-            }
-        }
-        return null;
+    private Facet newPropParamLayoutFacetIfAny(final FacetHolder facetHolder, final String layoutKey, ConfigPropsForPropertyOrParameterLayout configPropsHolder) {
+        final LabelPosition labelPosition = from(configPropsHolder);
+        return new LabelAtFacetFromLayoutConfiguration(labelPosition, facetHolder);
     }
 
-    private String getPropParamLayoutConfigSetting(final String layout, String... subkeys) {
-        for (String subkey : subkeys) {
-            final String layoutKey = "isis.viewers." + layout + "." + subkey;
-            final String value = getConfigurationLegacy().getString(layoutKey);
-            if(value != null) {
-                return value;
-            }
+    private static LabelPosition from(ConfigPropsForPropertyOrParameterLayout configPropsHolder) {
+        final LabelPosition labelPosition = configPropsHolder.getLabelPosition();
+        if(labelPosition != LabelPosition.NOT_SPECIFIED) {
+            return labelPosition;
         }
-        return null;
+        return configPropsHolder.getLabel();
     }
-
-
-
 }