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 2020/06/25 19:15:10 UTC

[isis] branch ISIS-2222 updated (786a7b4 -> 1a64ec7)

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

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


    from 786a7b4  ISIS-2222: further improvements
     add 9ecf4e4  ISIS-2340: fx: add fallback component factory
     new 1a64ec7  ISIS-2222 : more on the primitive char pages

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../chars/PrimitiveChars-description.adoc          |  55 ++++-
 .../primitive/chars/PrimitiveChars.layout.xml      |   3 +
 .../PrimitiveCharHolder_actionReturning.java       |   5 +-
 ...veCharHolder_mixinPropertyNamedNotEscaped.java} |  19 +-
 ...rimitiveCharHolder_mixinPropertyNavigable.java} |  20 +-
 ...itiveCharHolder_mixinPropertyWithCssClass.java} |  21 +-
 ...dateReadOnlyProperty2PromptInlineAsIfEdit.java} |   2 +-
 ...older_updateReadOnlyPropertyPositionPanel.java} |   4 +-
 ...r_updateReadOnlyPropertyPromptStyleInline.java} |   4 +-
 ...er_updateReadOnlyPropertyPromptStyleModal.java} |   4 +-
 ...eReadOnlyPropertyPromptStylePanelDropDown.java} |   4 +-
 ..._updateReadOnlyPropertyPromptStyleSidebar.java} |   4 +-
 ...arHolder_updateReadOnlyPropertyWithChoices.java |   6 +-
 .../jdo/PrimitiveCharJdoEntity-description.adoc    |  17 +-
 .../chars/jdo/PrimitiveCharJdoEntity.java          |  15 +-
 .../chars/jdo/PrimitiveCharJdoEntity.layout.xml    |   2 +
 .../vm/PrimitiveCharViewModel-description.adoc     |   5 +-
 .../primitive/chars/vm/PrimitiveCharViewModel.java |  12 +-
 .../chars/vm/PrimitiveCharViewModel.layout.xml     |  38 +--
 .../StatefulViewModelJaxbRefsEntity.layout.xml     |   1 -
 .../StatefulViewModelUsingJaxb.layout.xml          |   1 -
 .../src/main/resources/static/css/application.css  |   3 +
 .../incubator/viewer/javafx/model/util/_fx.java    |  85 ++++++-
 .../javafx/ui/IsisModuleIncViewerJavaFxUi.java     |   5 +-
 .../ui/components/UiComponentHandlerFx.java}       |  10 +-
 .../javafx}/ui/components/debug/DebugField.java    |  58 ++---
 .../javafx/ui/components/field/CustomFieldFx.java  |  88 +++++++
 .../javafx/ui/components/object/ObjectViewFx.java  | 257 ++++++++++-----------
 .../ui/components/other/FallbackFieldFactory.java  |  20 +-
 .../viewer/javafx/ui/main/UiController.java        |  32 +--
 .../vaadin/ui/components/debug/DebugField.java     |   2 +
 .../vaadin/ui/components/object/ObjectViewVaa.java |   6 +-
 .../ui/components/other/FallbackFieldFactory.java  |   2 +-
 .../viewer/common/model}/debug/DebugUiModel.java   |   2 +-
 .../common/model/gridlayout/UiGridLayout.java      |  38 +--
 35 files changed, 518 insertions(+), 332 deletions(-)
 copy examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_actionReturning.java => PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java} (70%)
 copy examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_actionReturning.java => PrimitiveCharHolder_mixinPropertyNavigable.java} (72%)
 copy examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_actionReturning.java => PrimitiveCharHolder_mixinPropertyWithCssClass.java} (71%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyProperty2InlineAsIfEdit.java => PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java} (95%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyPropertyPanel.java => PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java} (89%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyPropertyInline.java => PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java} (93%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyPropertyModal.java => PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java} (89%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyPropertyPanelDropDown.java => PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java} (88%)
 rename examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/{PrimitiveCharHolder_updateReadOnlyPropertySidebar.java => PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java} (92%)
 copy incubator/viewers/{vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/UiComponentHandlerVaa.java => javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/UiComponentHandlerFx.java} (82%)
 copy incubator/viewers/{vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin => javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx}/ui/components/debug/DebugField.java (51%)
 create mode 100644 incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/field/CustomFieldFx.java
 copy incubator/viewers/{vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin => javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx}/ui/components/other/FallbackFieldFactory.java (83%)
 rename {incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components => viewers/common/src/main/java/org/apache/isis/viewer/common/model}/debug/DebugUiModel.java (94%)


[isis] 01/01: ISIS-2222 : more on the primitive char pages

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1a64ec7d54f07056f3431e184d83d80ccd4b489f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 25 20:14:48 2020 +0100

    ISIS-2222 : more on the primitive char pages
---
 .../chars/PrimitiveChars-description.adoc          | 55 ++++++++++++++++++++--
 .../primitive/chars/PrimitiveChars.layout.xml      |  3 ++
 .../PrimitiveCharHolder_actionReturning.java       |  5 +-
 ...veCharHolder_mixinPropertyNamedNotEscaped.java} | 19 ++++----
 ...rimitiveCharHolder_mixinPropertyNavigable.java} | 20 ++++----
 ...itiveCharHolder_mixinPropertyWithCssClass.java} | 21 ++++-----
 ...dateReadOnlyProperty2PromptInlineAsIfEdit.java} |  2 +-
 ...older_updateReadOnlyPropertyPositionPanel.java} |  4 +-
 ...r_updateReadOnlyPropertyPromptStyleInline.java} |  4 +-
 ...er_updateReadOnlyPropertyPromptStyleModal.java} |  4 +-
 ...eReadOnlyPropertyPromptStylePanelDropDown.java} |  4 +-
 ..._updateReadOnlyPropertyPromptStyleSidebar.java} |  4 +-
 ...arHolder_updateReadOnlyPropertyWithChoices.java |  6 +--
 .../jdo/PrimitiveCharJdoEntity-description.adoc    | 17 +++----
 .../chars/jdo/PrimitiveCharJdoEntity.java          | 15 +++---
 .../chars/jdo/PrimitiveCharJdoEntity.layout.xml    |  2 +
 .../vm/PrimitiveCharViewModel-description.adoc     |  5 +-
 .../primitive/chars/vm/PrimitiveCharViewModel.java | 12 ++---
 .../chars/vm/PrimitiveCharViewModel.layout.xml     | 38 ++++-----------
 .../StatefulViewModelJaxbRefsEntity.layout.xml     |  1 -
 .../StatefulViewModelUsingJaxb.layout.xml          |  1 -
 .../src/main/resources/static/css/application.css  |  3 ++
 22 files changed, 134 insertions(+), 111 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-description.adoc
index cc5f2d2..b0f6aec 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-description.adoc
@@ -2,8 +2,8 @@ The framework has built-in support for all of the primitive data types, includin
 
 From here you can:
 
-* open a view model that uses the `char` datatype
 * navigate to an entity that uses the `char` datatype
+* open a view model that uses the `char` datatype
 
 Because `char` is a primitive value, the properties on these domain objects are mandatory.
 
@@ -24,11 +24,33 @@ public interface PrimitiveCharHolder {
     char getReadWriteProperty();
     void setReadWriteProperty(char c);
 
-    default char getReadOnlyPropertyDerived() { return getReadOnlyProperty(); }
-    default char getReadOnlyPropertyDerived2() { return getReadOnlyProperty(); }
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default char getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default char getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default char getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default char getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
 }
 ----
 
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
 == Mixin actions
 
 A number of mixin actions contribute through this interface, demonstrate the use of `char` as a parameter and as a return type.
@@ -60,7 +82,7 @@ public class PrimitiveCharHolder_updateReadOnlyProperty {
 +
 There are a number of variants of this action, to demonstrate different prompt layouts.
 
-* and the `actionReturning` action is:
+* the `actionReturning` action is:
 +
 [source,java]
 ----
@@ -80,3 +102,28 @@ public class PrimitiveCharHolder_actionReturning {
 }
 ----
 
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveCharHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveCharHolder primitiveCharHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public char prop() {
+        return primitiveCharHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.layout.xml
index d321296..55c5b87 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.layout.xml
@@ -21,6 +21,9 @@
 				<bs3:col span="12">
 					<cpt:collection id="entities"/>
 				</bs3:col>
+				<bs3:col span="12">
+					<cpt:action id="openViewModel"/>
+				</bs3:col>
 			</bs3:row>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
index 4f7224a..a8104a8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
@@ -27,11 +27,8 @@ import lombok.RequiredArgsConstructor;
 
 
 @Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
+        semantics = SemanticsOf.SAFE
 )
-@ActionLayout(position = ActionLayout.Position.PANEL)
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_actionReturning {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
similarity index 70%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
index 4f7224a..7bafffe 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
@@ -18,27 +18,24 @@
  */
 package demoapp.dom.types.primitive.chars.holder;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
 
-@Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(position = ActionLayout.Position.PANEL)
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_actionReturning {
+public class PrimitiveCharHolder_mixinPropertyNamedNotEscaped {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
-    public char act() {
+    @MemberOrder(name = "contributed", sequence = "3")
+    public char prop() {
         return primitiveCharHolder.getReadOnlyProperty();
     }
 
+
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
similarity index 72%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
index 4f7224a..ca18015 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
@@ -18,27 +18,25 @@
  */
 package demoapp.dom.types.primitive.chars.holder;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Navigable;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
 
-@Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(position = ActionLayout.Position.PANEL)
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_actionReturning {
+public class PrimitiveCharHolder_mixinPropertyNavigable {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
-    public char act() {
+    @MemberOrder(name = "contributed", sequence = "1")
+    public char prop() {
         return primitiveCharHolder.getReadOnlyProperty();
     }
 
+
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
similarity index 71%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
index 4f7224a..aa146b3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
@@ -18,27 +18,24 @@
  */
 package demoapp.dom.types.primitive.chars.holder;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Navigable;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.RequiredArgsConstructor;
 
 
-@Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(position = ActionLayout.Position.PANEL)
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_actionReturning {
+public class PrimitiveCharHolder_mixinPropertyWithCssClass {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
-    public char act() {
+    @MemberOrder(name = "contributed", sequence = "1")
+    public char prop() {
         return primitiveCharHolder.getReadOnlyProperty();
     }
-
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2InlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
similarity index 95%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2InlineAsIfEdit.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
index ddc59e3..e516491 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2InlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyProperty2InlineAsIfEdit {
+public class PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
similarity index 89%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanel.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
index 2051971..857b28d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
@@ -31,9 +31,9 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty",
         associateWithSequence = "2"
 )
-@ActionLayout(position = ActionLayout.Position.PANEL)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyPropertyPanel {
+public class PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
similarity index 93%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyInline.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
index ecb7019..f970852 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyInline.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -31,9 +31,9 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty",
         associateWithSequence = "1"
 )
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline")
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyPropertyInline {
+public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
similarity index 89%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyModal.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
index 6aac431..844bd2f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyModal.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -31,9 +31,9 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty",
         associateWithSequence = "2"
 )
-@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "in modal")
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyPropertyModal {
+public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
similarity index 88%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanelDropDown.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
index 1d765a6..ef53244 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -31,9 +31,9 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty",
         associateWithSequence = "3"
 )
-@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyPropertyPanelDropDown {
+public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertySidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
similarity index 92%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertySidebar.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
index 192eeb7..3df0aaa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertySidebar.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -31,9 +31,9 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty",
         associateWithSequence = "3"
 )
-@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "in sidebar")
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_updateReadOnlyPropertySidebar {
+public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar {
 
     private final PrimitiveCharHolder primitiveCharHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
index bbbec21..7daa8d7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
@@ -51,8 +51,8 @@ public class PrimitiveCharHolder_updateReadOnlyPropertyWithChoices {
     public List<Character> choices0Act() {
         return Stream.of('a', 'b', 'c').collect(Collectors.toList());
     }
-    public String disableAct() {
-        return "Not yet supported";
-    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
index 2fbb540..6ae7268 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
@@ -10,14 +10,14 @@ JDO supports `char` out-of-the-box, so no special annotations are required.
 public class PrimitiveCharJdoEntity
     implements HasAsciiDocDescription,   PrimitiveCharHolder {          // <.>
 
-    public PrimitiveCharJdoEntity(char initialValue) {                  // <.>
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
+    public PrimitiveCharJdoEntity(char initialValue) { ... }            // <.>
 
-    @Getter @Setter
     @Title
-    private char readOnlyProperty;
+    @Getter @Setter
+    private char readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private char readOnlyProperty2;
 
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
@@ -25,5 +25,6 @@ public class PrimitiveCharJdoEntity
 
 }
 ----
-<.> a no-arg constructor is introduced by JDO enhnancer
-<.> as a convenience
\ No newline at end of file
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
index 661ed7f..9a0b4d5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
@@ -23,18 +23,15 @@ import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.Bounding;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.Getter;
 import lombok.Setter;
-import lombok.extern.log4j.Log4j2;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
@@ -44,7 +41,9 @@ import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
 @DomainObject(
         objectType = "demoapp.PrimitiveCharJdoEntity"
 )
-public class PrimitiveCharJdoEntity implements HasAsciiDocDescription, PrimitiveCharHolder {
+public class PrimitiveCharJdoEntity
+        implements HasAsciiDocDescription,
+                   PrimitiveCharHolder {
 
     public PrimitiveCharJdoEntity(char initialValue) {
         this.readOnlyProperty = initialValue;
@@ -52,10 +51,12 @@ public class PrimitiveCharJdoEntity implements HasAsciiDocDescription, Primitive
         this.readWriteProperty = initialValue;
     }
 
-    @Getter @Setter
     @Title
+    @Getter @Setter
     private char readOnlyProperty;
 
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
     @Getter @Setter
     private char readOnlyProperty2;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.layout.xml
index 7a24b9b..ffa55a8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.layout.xml
@@ -8,6 +8,7 @@
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
 			<cpt:action id="rebuildMetamodel"/>
 		</bs3:col>
 		<bs3:col span="2">
@@ -29,6 +30,7 @@
 				<cpt:property id="readWriteProperty" />
 			</cpt:fieldSet>
 			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
index ac6ac10..9135e5e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
@@ -20,7 +20,7 @@ public class PrimitiveCharViewModel
 
     @Title
     @Getter @Setter
-    private char readOnlyProperty;
+    private char readOnlyProperty;                      // <.>
 
     @Getter @Setter
     private char readOnlyProperty2;
@@ -32,4 +32,5 @@ public class PrimitiveCharViewModel
 }
 ----
 <.> a no-arg constructor is required by JAXB
-<.> as a convenience
\ No newline at end of file
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
index 670bcaf..cf8d9b9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
@@ -18,27 +18,22 @@
  */
 package demoapp.dom.types.primitive.chars.vm;
 
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.Getter;
-import lombok.NoArgsConstructor;
 import lombok.Setter;
-import lombok.extern.log4j.Log4j2;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
@@ -65,7 +60,8 @@ public class PrimitiveCharViewModel
     @Getter @Setter
     private char readOnlyProperty;
 
-    @Title
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
     @Getter @Setter
     private char readOnlyProperty2;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.layout.xml
index 899a7e0..ffa55a8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.layout.xml
@@ -8,6 +8,7 @@
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
 			<cpt:action id="rebuildMetamodel"/>
 		</bs3:col>
 		<bs3:col span="2">
@@ -17,39 +18,19 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<cpt:fieldSet name="Demo" id="general">
-				<cpt:action id="actionReturning" position="PANEL"/>
-				<cpt:property id="readOnlyProperty" labelPosition="DEFAULT">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
 					<cpt:describedAs>
-						labelPosition=DEFAULT
-					</cpt:describedAs>
-				</cpt:property>
-				<cpt:property id="readOnlyProperty2" labelPosition="TOP" hidden="ALL_TABLES">
-					<cpt:describedAs>
-						labelPosition=TOP
-						hidden=ALL_TABLES
-					</cpt:describedAs>
-				</cpt:property>
-				<cpt:property id="readWriteProperty" labelPosition="LEFT">
-					<cpt:describedAs>
-						labelPosition=LEFT
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
 					</cpt:describedAs>
 				</cpt:property>
 			</cpt:fieldSet>
-			<cpt:fieldSet name="Derived Properties" id="derivedProperties">
-				<cpt:property id="readOnlyPropertyDerived" labelPosition="NONE" hidden="ALL_TABLES">
-					<cpt:describedAs>
-						labelPosition=NONE
-						hidden=ALL_TABLES
-					</cpt:describedAs>
-				</cpt:property>
-				<cpt:property id="readOnlyPropertyDerived2" labelPosition="RIGHT" hidden="ALL_TABLES">
-					<cpt:describedAs>
-						labelPosition=RIGHT
-						hidden=ALL_TABLES
-					</cpt:describedAs>
-				</cpt:property>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
 			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
@@ -59,6 +40,7 @@
 				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
 				<cpt:property id="description"/>
 			</cpt:fieldSet>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.layout.xml
index bd7995d..1c8b66b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.layout.xml
@@ -24,7 +24,6 @@
 			<cpt:fieldSet name="Description" id="description" >
 				<cpt:action id="clearHints" position="PANEL" />
 				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.layout.xml
index 8747ce3..febca1c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.layout.xml
@@ -27,7 +27,6 @@
 			<cpt:fieldSet name="Description" id="description" >
 				<cpt:action id="clearHints" position="PANEL" />
 				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
diff --git a/examples/demo/domain/src/main/resources/static/css/application.css b/examples/demo/domain/src/main/resources/static/css/application.css
index 67e1538..49cc494 100644
--- a/examples/demo/domain/src/main/resources/static/css/application.css
+++ b/examples/demo/domain/src/main/resources/static/css/application.css
@@ -1,3 +1,6 @@
+.property.red label {
+	color: red;
+}
 
 .welcome {
 	font-size: 16px;