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();
}
-
-
-
}