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/30 12:56:11 UTC

[isis] branch ISIS-2222 updated: ISIS-2222: wip

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


The following commit(s) were added to refs/heads/ISIS-2222 by this push:
     new bbe4454  ISIS-2222: wip
bbe4454 is described below

commit bbe4454695ac07ef632594386deeb740aa56fadb
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jun 30 13:55:54 2020 +0100

    ISIS-2222: wip
---
 .../demoapp/dom/ActionLayout/ActionLayoutMenu.java |  16 +-
 .../ActionLayoutPositionVm-description.adoc        |  10 +-
 .../position/ActionLayoutPositionVm.java           |  18 +-
 .../position/ActionLayoutPositionVm.layout.xml     |  20 +--
 .../ActionLayoutPositionVm_annotatedBelow.java     |   2 +-
 .../ActionLayoutPositionVm_annotatedPanel.java     |   2 +-
 ...ionLayoutPositionVm_annotatedPanelDropDown.java |   2 +-
 .../ActionLayoutPositionVm_annotatedRight.java     |   2 +-
 .../ActionLayoutPositionVm_layoutBelow.java        |   2 +-
 .../ActionLayoutPositionVm_layoutPanel.java        |   2 +-
 ...ActionLayoutPositionVm_layoutPanelDropDown.java |   2 +-
 .../ActionLayoutPositionVm_layoutRight.java        |   2 +-
 .../ActionLayoutPromptStyleVm-description.adoc     |  32 ++++
 .../ActionLayoutPromptStyleVm.java}                |  30 +++-
 .../ActionLayoutPromptStyleVm.layout.xml}          |  19 +-
 ...ActionLayoutPromptStyleVm_annotatedInline.java} |  11 +-
 ...ayoutPromptStyleVm_annotatedInlineAsIfEdit.java |   6 +-
 .../ActionLayoutPromptStyleVm_annotatedModal.java} |  11 +-
 ...ctionLayoutPromptStyleVm_annotatedSidebar.java} |  11 +-
 .../ActionLayoutPromptStyleVm_layoutDialog.java    |   7 +-
 .../ActionLayoutPromptStyleVm_layoutInline.java    |   7 +-
 ...onLayoutPromptStyleVm_layoutInlineAsIfEdit.java |   7 +-
 .../dom/PropertyLayout/PropertyLayoutMenu.java     | 199 +--------------------
 .../PropertyLayoutCssClassMetaAnnotation.java      |   9 +-
 .../PropertyLayoutCssClassVm-description.adoc      |  14 +-
 .../cssClass/PropertyLayoutCssClassVm.java         |   6 +-
 .../PropertyLayoutCssClassVm_annotatedMixin.java   |   6 +-
 .../named/PropertyLayoutNamedMetaAnnotation.java   |   4 +-
 .../named/PropertyLayoutNamedVm-description.adoc   |  12 ++
 .../PropertyLayoutNamedVm.java}                    |  24 +--
 .../named/PropertyLayoutNamedVm.layout.xml}        |  24 +--
 .../PropertyLayoutNamedVm_annotatedEscaped.java    |   6 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  16 ++
 .../booleans/vm/PrimitiveBooleanViewModel.java     |   2 +-
 .../primitive/bytes/vm/PrimitiveByteViewModel.java |   2 +-
 .../doubles/vm/PrimitiveDoubleViewModel.java       |   2 +-
 .../floats/vm/PrimitiveFloatViewModel.java         |   2 +-
 .../primitive/ints/vm/PrimitiveIntViewModel.java   |   2 +-
 .../primitive/longs/vm/PrimitiveLongViewModel.java |   2 +-
 .../shorts/vm/PrimitiveShortViewModel.java         |   2 +-
 .../characters/WrapperCharacters-description.adoc  |  14 +-
 ...rCharacterHolder_actionReturningCollection.java |   7 +-
 ...acterHolder_updateReadOnlyOptionalProperty.java |   1 -
 .../characters/vm/WrapperCharacterViewModel.java   |   3 +-
 .../StatefulViewModelJaxbRefsEntity.java           |   2 +-
 .../usingjaxb/StatefulViewModelUsingJaxb.java      |   4 +-
 46 files changed, 226 insertions(+), 360 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/ActionLayoutMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/ActionLayoutMenu.java
index a9afe95..cdcfd63 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/ActionLayoutMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/ActionLayoutMenu.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.PropertyLayout;
+package demoapp.dom.ActionLayout;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
@@ -26,19 +26,19 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.extern.log4j.Log4j2;
 
-@DomainService(nature=NatureOfService.VIEW, objectType = "demo.PropertyLayoutMenu")
-@DomainObjectLayout(named="PropertyLayout")
+@DomainService(nature=NatureOfService.VIEW, objectType = "demo.ActionLayoutMenu")
+@DomainObjectLayout(named="ActionLayout")
 @Log4j2
-public class PropertyLayoutMenu {
+public class ActionLayoutMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
-    public demoapp.dom.PropertyLayout.named.StringViewModel named(){
-        return new demoapp.dom.PropertyLayout.named.StringViewModel();
+    public demoapp.dom.ActionLayout.position.ActionLayoutPositionVm position(){
+        return new demoapp.dom.ActionLayout.position.ActionLayoutPositionVm();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public demoapp.dom.PropertyLayout.cssClass.StringViewModel cssClass(){
-        return new demoapp.dom.PropertyLayout.cssClass.StringViewModel();
+    public demoapp.dom.ActionLayout.promptStyle.ActionLayoutPromptStyleVm promptStyle(){
+        return new demoapp.dom.ActionLayout.promptStyle.ActionLayoutPromptStyleVm();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm-description.adoc
index dcd19d1..aaba63d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm-description.adoc
@@ -2,33 +2,33 @@ TODO
 
 [source,java]
 ----
-include::StringViewModel.java[tags=class]
+include::ActionLayoutPositionVm.java[tags=class]
 ----
 
 * positioned _below_:
 +
 [source,java]
 ----
-include::StringViewModel_updatePositionBelow.java[tags=class]
+include::ActionLayoutPositionVm_annotatedBelow.java[tags=class]
 ----
 
 * positioned _right_:
 +
 [source,java]
 ----
-include::StringViewModel_updatePositionRight.java[tags=class]
+include::ActionLayoutPositionVm_annotatedRight.java[tags=class]
 ----
 
 * positioned on _panel_:
 +
 [source,java]
 ----
-include::StringViewModel_updatePositionPanel.java[tags=class]
+include::ActionLayoutPositionVm_annotatedPanel.java[tags=class]
 ----
 
 * positioned on _panel in drop-down_:
 +
 [source,java]
 ----
-include::StringViewModel_updatePositionPanelDropDown.java[tags=class]
+include::ActionLayoutPositionVm_annotatedPanelDropDown.java[tags=class]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java
index d3d1229..271d788 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java
@@ -38,27 +38,19 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
-@XmlRootElement(name = "rootx")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demo.ActionLayout.position.StringViewModel"
+        objectType = "demo.ActionLayoutPositionVm"
 )
-public class StringViewModel implements HasAsciiDocDescription {
+public class ActionLayoutPositionVm implements HasAsciiDocDescription {
 
-//end::class[]
-    public StringViewModel() {
-        this.title = "ActionLayout#position";
+    public String title() {
+        return "Demonstrates: ActionLayout#position";
     }
 
-//tag::class[]
-    @Title(prepend = "Demonstrates: ")
-    @Property(editing = Editing.DISABLED)
-    @XmlElement(required = true)
-    @Getter @Setter
-    private String title;
-
     @Property(optionality = Optionality.OPTIONAL)
     @MemberOrder(name = "annotated", sequence = "1")
     @XmlElement(required = false)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
index b1cf2ab..8580ed6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
@@ -20,18 +20,18 @@
 			<cpt:fieldSet name="General" id="general"/>
 			<cpt:fieldSet name="Annotated" id="annotated"/>
 			<cpt:fieldSet name="Layout" id="layout">
+				<cpt:action id="layoutPanel" position="PANEL">
+					<cpt:named>Positioned on panel</cpt:named>
+				</cpt:action>
+				<cpt:action id="layoutPanelDropDown" position="PANEL_DROPDOWN">
+					<cpt:named>Positioned on panel in drop down</cpt:named>
+				</cpt:action>
 				<cpt:property id="readOnlyProperty2">
-					<cpt:action id="update2PositionBelow" position="BELOW">
-						<cpt:named>Below</cpt:named>
+					<cpt:action id="layoutBelow" position="BELOW">
+						<cpt:named>Positioned below</cpt:named>
 					</cpt:action>
-					<cpt:action id="update2PositionPanel" position="PANEL">
-						<cpt:named>Panel</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="PANEL_DROPDOWN">
-						<cpt:named>Panel Drop Down</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="RIGHT">
-						<cpt:named>Right</cpt:named>
+					<cpt:action id="layoutRight" position="RIGHT">
+						<cpt:named>Positioned right</cpt:named>
 					</cpt:action>
 				</cpt:property>
 			</cpt:fieldSet>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
index 6839b4e..4bcfe26 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(position = ActionLayout.Position.BELOW, named = "Positioned below", describedAs = "position = BELOW")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionBelow {
+public class ActionLayoutPositionVm_annotatedBelow {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
index 0d601a6..0ce7e77 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(position = ActionLayout.Position.PANEL, named = "Positioned on panel", describedAs = "position = PANEL")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionPanel {
+public class ActionLayoutPositionVm_annotatedPanel {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
index 966384f..256f986 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Positioned on panel in dropdown", describedAs = "position = PANEL_DROPDOWN")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionPanelDropDown {
+public class ActionLayoutPositionVm_annotatedPanelDropDown {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
index 7bf853a..ba2854c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(position = ActionLayout.Position.RIGHT, named = "Positioned right", describedAs = "position = RIGHT")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionRight {
+public class ActionLayoutPositionVm_annotatedRight {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
index 7236418..f020383 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(named = "Positioned below", describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" position=BELOW/></cpt:property>")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update2PositionBelow {
+public class ActionLayoutPositionVm_layoutBelow {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
index 8ef3902..b2c0ae0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(named = "Positioned on panel", describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" position=PANEL/></cpt:property>")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update2PositionPanel {
+public class ActionLayoutPositionVm_layoutPanel {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
index 1166302..120fe41 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(named = "Positioned on panel dropdown", describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" position=PANEL_DROPDOWN/></cpt:property>")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update2PositionPanelDropDown {
+public class ActionLayoutPositionVm_layoutPanelDropDown {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
index 1907e19..71c2d2b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(named = "Positioned right", describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" position=RIGHT/></cpt:property>")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update2PositionRight {
+public class ActionLayoutPositionVm_layoutRight {
 
     private final ActionLayoutPositionVm stringViewModel;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm-description.adoc
new file mode 100644
index 0000000..4f56ddf
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm-description.adoc
@@ -0,0 +1,32 @@
+TODO
+
+[source,java]
+----
+include::ActionLayoutPromptStyleVm.java[tags=class]
+----
+
+* `promptStyle` of _inline_:
++
+[source,java]
+----
+include::ActionLayoutPromptStyleVm_annotatedInline.java[tags=class]
+----
+
+* `promptStyle` of _sidebar_:
++
+[source,java]
+----
+include::ActionLayoutPromptStyleVm_annotatedSidebar.java[tags=class]
+----
+
+* `promptStyle` of _modal_:
++
+[source,java]
+----
+include::ActionLayoutPromptStyleVm_annotatedModal.java[tags=class]
+----
+
+[source,java]
+----
+include::ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java[tags=class]
+----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
similarity index 69%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java
copy to examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
index d3d1229..5d9ece0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.ActionLayout.position;
+package demoapp.dom.ActionLayout.promptStyle;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -30,6 +30,7 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
@@ -38,23 +39,24 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
-@XmlRootElement(name = "rootx")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demo.ActionLayout.position.StringViewModel"
+        objectType = "demo.ActionLayoutPromptStyleVm"
 )
-public class StringViewModel implements HasAsciiDocDescription {
+public class ActionLayoutPromptStyleVm implements HasAsciiDocDescription {
 
 //end::class[]
-    public StringViewModel() {
-        this.title = "ActionLayout#position";
+    public ActionLayoutPromptStyleVm() {
+        this.title = "ActionLayout#promptStyle";
     }
 
 //tag::class[]
     @Title(prepend = "Demonstrates: ")
     @Property(editing = Editing.DISABLED)
+    @MemberOrder(name = "general", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String title;
@@ -66,10 +68,24 @@ public class StringViewModel implements HasAsciiDocDescription {
     private String readOnlyProperty1;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "layout", sequence = "1")
+    @PropertyLayout(describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT")
+    @MemberOrder(name = "annotated", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty2;
 
+    @Property(optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "layout", sequence = "1")
+    @XmlElement(required = false)
+    @Getter @Setter
+    private String readOnlyProperty3;
+
+    @Property(optionality = Optionality.OPTIONAL)
+    @PropertyLayout(describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT")
+    @MemberOrder(name = "layout", sequence = "2")
+    @XmlElement(required = false)
+    @Getter @Setter
+    private String readOnlyProperty4;
+
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.layout.xml
similarity index 78%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.layout.xml
index b1cf2ab..c9cadf5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.layout.xml
@@ -20,20 +20,17 @@
 			<cpt:fieldSet name="General" id="general"/>
 			<cpt:fieldSet name="Annotated" id="annotated"/>
 			<cpt:fieldSet name="Layout" id="layout">
-				<cpt:property id="readOnlyProperty2">
-					<cpt:action id="update2PositionBelow" position="BELOW">
-						<cpt:named>Below</cpt:named>
+				<cpt:property id="readOnlyProperty3">
+					<cpt:action id="layoutInline" promptStyle="INLINE">
+						<cpt:named>Inline</cpt:named>
 					</cpt:action>
-					<cpt:action id="update2PositionPanel" position="PANEL">
-						<cpt:named>Panel</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="PANEL_DROPDOWN">
-						<cpt:named>Panel Drop Down</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="RIGHT">
-						<cpt:named>Right</cpt:named>
+					<cpt:action id="layoutDialog" promptStyle="DIALOG">
+						<cpt:named>Dialog</cpt:named>
 					</cpt:action>
 				</cpt:property>
+				<cpt:property id="readOnlyProperty4">
+					<cpt:action id="layoutInlineAsIfEdit" promptStyle="INLINE_AS_IF_EDIT"/>
+				</cpt:property>
 			</cpt:fieldSet>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
similarity index 78%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
copy to examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
index 6839b4e..ac2c3f1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
@@ -16,10 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.ActionLayout.position;
+package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -31,13 +32,13 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty1",
         associateWithSequence = "1"
 )
-@ActionLayout(position = ActionLayout.Position.BELOW, named = "Positioned below", describedAs = "position = BELOW")
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionBelow {
+public class ActionLayoutPromptStyleVm_annotatedInline {
 
-    private final ActionLayoutPositionVm stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
index 48ae1a7..b696cbe 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
@@ -34,11 +34,11 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT, named = "Inline as if edit", describedAs = "promptStyle = INLINE_AS_IF_EDIT")
 @RequiredArgsConstructor
-public class StringViewModel_update2PromptStyleInlineAsIfEdit {
+public class ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit {
 
-    private final StringViewModel stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public StringViewModel act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
similarity index 78%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
copy to examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
index 0d601a6..76f2b3d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
@@ -16,10 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.ActionLayout.position;
+package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -31,13 +32,13 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty1",
         associateWithSequence = "2"
 )
-@ActionLayout(position = ActionLayout.Position.PANEL, named = "Positioned on panel", describedAs = "position = PANEL")
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionPanel {
+public class ActionLayoutPromptStyleVm_annotatedModal {
 
-    private final ActionLayoutPositionVm stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
similarity index 77%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
copy to examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
index 966384f..9c60d9e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
@@ -16,10 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.ActionLayout.position;
+package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -31,13 +32,13 @@ import lombok.RequiredArgsConstructor;
         associateWith = "readOnlyProperty1",
         associateWithSequence = "3"
 )
-@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Positioned on panel in dropdown", describedAs = "position = PANEL_DROPDOWN")
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
 @RequiredArgsConstructor
-public class ActionLayoutPromptVm_update1PositionPanelDropDown {
+public class ActionLayoutPromptStyleVm_annotatedSidebar {
 
-    private final ActionLayoutPositionVm stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
index 4580059..c6eb259 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
@@ -20,7 +20,6 @@ package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -34,11 +33,11 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" promptStyle = DIALOG/></cpt:property>")
 @RequiredArgsConstructor
-public class StringViewModel_update3PromptStyleDialog {
+public class ActionLayoutPromptStyleVm_layoutDialog {
 
-    private final StringViewModel stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public StringViewModel act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty3(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
index 8199cdd..c440aea 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
@@ -20,7 +20,6 @@ package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -34,11 +33,11 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" promptStyle = INLINE/></cpt:property>")
 @RequiredArgsConstructor
-public class StringViewModel_update3PromptStyleInline {
+public class ActionLayoutPromptStyleVm_layoutInline {
 
-    private final StringViewModel stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public StringViewModel act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty3(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
index 1cc012c..69a4def 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
@@ -20,7 +20,6 @@ package demoapp.dom.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -34,11 +33,11 @@ import lombok.RequiredArgsConstructor;
 )
 @ActionLayout(describedAs = "<cpt:property id=\"...\"><cpt:action id=\"...\" promptStyle = INLINE_AS_IF_EDIT/></cpt:property>")
 @RequiredArgsConstructor
-public class StringViewModel_update4PromptStyleInlineAsIfEdit {
+public class ActionLayoutPromptStyleVm_layoutInlineAsIfEdit {
 
-    private final StringViewModel stringViewModel;
+    private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public StringViewModel act(String newValue) {
+    public ActionLayoutPromptStyleVm act(String newValue) {
         stringViewModel.setReadOnlyProperty4(newValue);
         return stringViewModel;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/PropertyLayoutMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/PropertyLayoutMenu.java
index 28ec7ad..87e52b1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/PropertyLayoutMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/PropertyLayoutMenu.java
@@ -16,212 +16,29 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types;
-
-import java.nio.charset.StandardCharsets;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import java.util.Date;
-import java.util.UUID;
-
-import javax.inject.Inject;
+package demoapp.dom.PropertyLayout;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.value.Blob;
-import org.apache.isis.applib.value.Clob;
-import org.apache.isis.applib.value.Markup;
-import org.apache.isis.applib.value.NamedWithMimeType;
-import org.apache.isis.core.commons.internal.base._Bytes;
-import org.apache.isis.core.commons.internal.base._Strings;
-import org.apache.isis.core.commons.internal.resources._Resources;
-
-import lombok.val;
 
 import lombok.extern.log4j.Log4j2;
 
-import demoapp.dom.types.blob.BlobDemo;
-import demoapp.dom.types.clob.ClobDemo;
-import demoapp.dom.types.markup.MarkupDemo;
-import demoapp.dom.types.wrapper.WrapperDemo;
-import demoapp.dom.types.primitive.booleans.PrimitiveBooleans;
-import demoapp.dom.types.primitive.bytes.PrimitiveBytes;
-import demoapp.dom.types.primitive.chars.PrimitiveChars;
-import demoapp.dom.types.primitive.doubles.PrimitiveDoubles;
-import demoapp.dom.types.primitive.floats.PrimitiveFloats;
-import demoapp.dom.types.primitive.ints.PrimitiveInts;
-import demoapp.dom.types.primitive.longs.PrimitiveLongs;
-import demoapp.dom.types.primitive.shorts.PrimitiveShorts;
-import demoapp.dom.types.text.TextDemo;
-import demoapp.dom.types.time.TemporalDemo;
-import demoapp.dom.types.uuid.UuidDemo;
-import demoapp.dom.types.wrapper.characters.WrapperCharacters;
-
-@DomainService(nature=NatureOfService.VIEW, objectType = "demo.DataTypesMenu")
-@DomainObjectLayout(named="DataTypes")
+@DomainService(nature=NatureOfService.VIEW, objectType = "demo.PropertyLayoutMenu")
+@DomainObjectLayout(named="PropertyLayout")
 @Log4j2
-public class DataTypesMenu {
-
-    @Inject private FactoryService factoryService;
-
-    @Action
-    @ActionLayout(cssClassFa="fa-font")
-    public TextDemo text(){
-        val demo = factoryService.viewModel(TextDemo.class);
-
-        demo.setString("a string (click me)");
-        demo.setStringMultiline("A multiline string\nspanning\n3 lines. (click me)");
-
-        demo.setStringReadonly("a readonly string (but allows text select)");
-        demo.setStringMultilineReadonly("A readonly string\nspanning\n3 lines. (but allows text select)");
-
-        return demo;
-    }
-    
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperDemo wrappers(){
-        val demo = factoryService.viewModel(WrapperDemo.class);
-
-        demo.setJavaLangByte(Byte.MAX_VALUE);
-        demo.setJavaLangShort(Short.MAX_VALUE);
-        demo.setJavaLangInteger(Integer.MAX_VALUE);
-        demo.setJavaLangLong(Long.MAX_VALUE);
-
-        demo.setJavaLangFloat(Float.MAX_VALUE);
-        demo.setJavaLangDouble(Double.MAX_VALUE);
-
-        return demo;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-clock")
-    public TemporalDemo temporals(){
-        val demo = factoryService.viewModel(TemporalDemo.class);
-
-        demo.setJavaUtilDate(new Date());
-        demo.setJavaSqlDate( new java.sql.Date(System.currentTimeMillis()));
-        demo.setJavaSqlTimestamp(new java.sql.Timestamp(System.currentTimeMillis()));
-
-        demo.setJavaLocalDate(LocalDate.now());
-        demo.setJavaLocalDateTime(LocalDateTime.now());
-        demo.setJavaOffsetDateTime(OffsetDateTime.now());
-
-        return demo;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-at")
-    public UuidDemo uuid(){
-        val demo = factoryService.viewModel(UuidDemo.class);
-        demo.setUuid(UUID.randomUUID());
-        return demo;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-cloud")
-    public BlobDemo blobs(){
-        val demo = factoryService.viewModel(BlobDemo.class);
-
-        try {
-            val bytes = _Bytes.of(_Resources.load(BlobDemo.class, "isis-logo-568x286.png"));
-            demo.setLogo(Blob.of("isis-logo-568x286", NamedWithMimeType.CommonMimeType.PNG, bytes));
-        } catch (Exception e) {
-            log.error("failed to create Blob from image resource", e);
-        }
-
-        return demo;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-cloud")
-    public ClobDemo clobs(){
-        val demo = factoryService.viewModel(ClobDemo.class);
-
-        try {
-            val text = _Strings.read(_Resources.load(ClobDemo.class, "document.txt"), StandardCharsets.UTF_8);
-            demo.setDocument(Clob.of("document", NamedWithMimeType.CommonMimeType.TXT, text));
-        } catch (Exception e) {
-            log.error("failed to create Clob from text resource", e);
-        }
-
-        return demo;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-code")
-    public MarkupDemo markup(){
-        val demo = factoryService.viewModel(MarkupDemo.class);
-
-        try {
-            val htmlSource = _Strings.read(_Resources.load(MarkupDemo.class, "markup-embedded.html"), StandardCharsets.UTF_8);
-            demo.setMarkup(new Markup(htmlSource));
-        } catch (Exception e) {
-            log.error("failed to create Markup from file resource", e);
-        }
-
-        return demo;
-    }
-
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveBytes primitiveBytes(){
-        return new PrimitiveBytes();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveShorts primitiveShorts(){
-        return new PrimitiveShorts();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveInts primitiveInts(){
-        return new PrimitiveInts();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveLongs primitiveLongs(){
-        return new PrimitiveLongs();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveFloats primitiveFloats(){
-        return new PrimitiveFloats();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveDoubles primitiveDoubles(){
-        return new PrimitiveDoubles();
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveChars primitiveChars(){
-        return new PrimitiveChars();
-    }
+public class PropertyLayoutMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveBooleans primitiveBooleans(){
-        return new PrimitiveBooleans();
+    public demoapp.dom.PropertyLayout.named.PropertyLayoutNamedVm named(){
+        return new demoapp.dom.PropertyLayout.named.PropertyLayoutNamedVm();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperCharacters wrapperCharacters(){
-        return new WrapperCharacters();
+    public demoapp.dom.PropertyLayout.cssClass.PropertyLayoutCssClassVm cssClass(){
+        return new demoapp.dom.PropertyLayout.cssClass.PropertyLayoutCssClassVm();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassMetaAnnotation.java
index faba439..e9f996c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassMetaAnnotation.java
@@ -1,4 +1,4 @@
-package demoapp.dom.PropertyLayout.named;
+package demoapp.dom.PropertyLayout.cssClass;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
@@ -6,13 +6,14 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
-@PropertyLayout(named = "Named <i>from</i> custom type", namedEscaped = false)
+//tag::class[]
+@PropertyLayout(cssClass = "red")
 @Inherited
 @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
 @Retention(RetentionPolicy.RUNTIME)
-public @interface PropertyLayoutNamedMetaAnnotation {
+public @interface PropertyLayoutCssClassMetaAnnotation {
 
 }
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm-description.adoc
index 9169f74..d40bbd9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm-description.adoc
@@ -1,13 +1,11 @@
-JAXB supports `Character` out-of-the-box, so no special annotations are required.
+TODO
 
 [source,java]
 ----
-include::WrapperCharacterViewModel.java[tags=class]
+include::PropertyLayoutCssClassVm.java[tags=class]
 ----
-<.> a no-arg constructor is required by JAXB
-<.> required property as defined to JAXB
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis.
-+
-This is the default for JAXB so no additional annotation required.
 
+[source,java]
+----
+include::PropertyLayoutCssClassMetaAnnotation.java[tags=class]
+----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
index 58ee3cb..6258484 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
@@ -46,12 +46,12 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demo.PropertyLayout.cssClass.ActionLayoutPromptStyleVm"
+        objectType = "demo.PropertyLayoutCssClassVm"
 )
-public class StringViewModel implements HasAsciiDocDescription {
+public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
 
 //end::class[]
-    public StringViewModel() {
+    public PropertyLayoutCssClassVm() {
         this.title = "PropertyLayout#cssClass";
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm_annotatedMixin.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm_annotatedMixin.java
index ccfa09f..3066378 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm_annotatedMixin.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm_annotatedMixin.java
@@ -29,13 +29,13 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
 @RequiredArgsConstructor
-public class StringViewModel_mixinPropertyWithCssClass {
+public class PropertyLayoutCssClassVm_annotatedMixin {
 
-    private final StringViewModel stringViewModel;
+    private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
     @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
-        return stringViewModel.getPropertyUsingAnnotation();
+        return propertyLayoutCssClassVm.getPropertyUsingAnnotation();
     }
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedMetaAnnotation.java
index 6c3a315..97d0fb1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedMetaAnnotation.java
@@ -9,10 +9,12 @@ import java.lang.annotation.Target;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+//tag::class[]
 @PropertyLayout(named = "Named <i>from</i> custom type", namedEscaped = false)
 @Inherited
 @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
 @Retention(RetentionPolicy.RUNTIME)
-public @interface PropertyLayoutNamedCustomType {
+public @interface PropertyLayoutNamedMetaAnnotation {
 
 }
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm-description.adoc
new file mode 100644
index 0000000..6ebf612
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm-description.adoc
@@ -0,0 +1,12 @@
+TODO
+
+[source,java]
+----
+include::PropertyLayoutNamedVm.java[tags=class]
+----
+
+[source,java]
+----
+include::PropertyLayoutNamedMetaAnnotation.java[tags=class]
+----
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.java
similarity index 76%
copy from examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
copy to examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.java
index 58ee3cb..9450e6e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.PropertyLayout.cssClass;
+package demoapp.dom.PropertyLayout.named;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -37,7 +37,6 @@ import org.apache.isis.applib.annotation.Where;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom.PropertyLayout.named.PropertyLayoutNamedMetaAnnotation;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
@@ -46,13 +45,14 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demo.PropertyLayout.cssClass.ActionLayoutPromptStyleVm"
+        objectType = "demo.PropertyLayoutNamedVm"
 )
-public class StringViewModel implements HasAsciiDocDescription {
+public class PropertyLayoutNamedVm
+        implements HasAsciiDocDescription {
 
 //end::class[]
-    public StringViewModel() {
-        this.title = "PropertyLayout#cssClass";
+    public PropertyLayoutNamedVm() {
+        this.title = "PropertyLayout#named";
     }
 
 //tag::class[]
@@ -63,30 +63,30 @@ public class StringViewModel implements HasAsciiDocDescription {
     private String title;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(cssClass = "red", describedAs = "@PropertyLayout(cssClass=\"red\")", hidden = Where.ALL_TABLES)
+    @PropertyLayout(named = "Named using annotation", describedAs = "@PropertyLayout(named= \"Named using annotation\")", hidden = Where.ALL_TABLES)
     @MemberOrder(name = "properties", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(describedAs = "<cpt:property id=\"...\" cssClass=\"red\")/>", hidden = Where.ALL_TABLES)
+    @PropertyLayout(describedAs = "<cpt:property id=\"...\"><cpt:named>...</cpt:named></cpt:property>", hidden = Where.ALL_TABLES)
     @MemberOrder(name = "properties", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayoutCssClassMetaAnnotation
-    @PropertyLayout(describedAs = "@PropertyLayoutCssClassMetaAnnotation", hidden = Where.ALL_TABLES)
+    @PropertyLayoutNamedMetaAnnotation
+    @PropertyLayout(describedAs = "@PropertyLayoutNamedMetaAnnotation", hidden = Where.ALL_TABLES)
     @MemberOrder(name = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayoutCssClassMetaAnnotation
-    @PropertyLayout(cssClass = "blue", describedAs = "meta-annotation overridden using @PropertyLayout(...)", hidden = Where.ALL_TABLES)
+    @PropertyLayoutNamedMetaAnnotation
+    @PropertyLayout(named = "Name overrides meta-annotation", describedAs = "meta-annotation overridden using @PropertyLayout(...)", hidden = Where.ALL_TABLES)
     @MemberOrder(name = "meta-annotated", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.layout.xml
similarity index 70%
copy from examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.layout.xml
index b1cf2ab..bc67d4f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/ActionLayout/position/ActionLayoutPositionVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm.layout.xml
@@ -17,24 +17,16 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<cpt:fieldSet name="General" id="general"/>
-			<cpt:fieldSet name="Annotated" id="annotated"/>
-			<cpt:fieldSet name="Layout" id="layout">
-				<cpt:property id="readOnlyProperty2">
-					<cpt:action id="update2PositionBelow" position="BELOW">
-						<cpt:named>Below</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanel" position="PANEL">
-						<cpt:named>Panel</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="PANEL_DROPDOWN">
-						<cpt:named>Panel Drop Down</cpt:named>
-					</cpt:action>
-					<cpt:action id="update2PositionPanelDropDown" position="RIGHT">
-						<cpt:named>Right</cpt:named>
-					</cpt:action>
+			<cpt:fieldSet name="General" id="general">
+				<cpt:property id="title" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Properties" id="properties">
+				<cpt:property id="namedUsingLayoutProperty">
+					<cpt:named>Named using layout.xml</cpt:named>
 				</cpt:property>
 			</cpt:fieldSet>
+			<cpt:fieldSet name="Contributed" id="contributed"/>
+			<cpt:fieldSet name="Meta-annotated" id="meta-annotated"/>
 			<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/PropertyLayout/named/PropertyLayoutNamedVm_annotatedEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm_annotatedEscaped.java
index d1ee3ee..43a78eb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm_annotatedEscaped.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/PropertyLayout/named/PropertyLayoutNamedVm_annotatedEscaped.java
@@ -28,13 +28,13 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(named = "<i>Named<i/> escaped mixin property", namedEscaped = true, describedAs = "named = \"(some markup)\", namedEscaped = true")
 @RequiredArgsConstructor
-public class StringViewModel_mixinAnnotatedNamedEscaped {
+public class PropertyLayoutNamedVm_annotatedEscaped {
 
-    private final StringViewModel stringViewModel;
+    private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
     @MemberOrder(name = "contributed", sequence = "4")
     public String prop() {
-        return stringViewModel.getPropertyUsingAnnotation();
+        return propertyLayoutNamedVm.getPropertyUsingAnnotation();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index b6699b8..18f6a9a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -50,6 +50,22 @@
         </mb3:menu>
 
         <mb3:menu>
+            <mb3:named>ActionLayout</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.ActionLayoutMenu" id="position"/>
+                <mb3:serviceAction objectType="demo.ActionLayoutMenu" id="promptStyle"/>
+            </mb3:section>
+        </mb3:menu>
+
+        <mb3:menu>
+            <mb3:named>PropertyLayout</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.PropertyLayoutMenu" id="named"/>
+                <mb3:serviceAction objectType="demo.PropertyLayoutMenu" id="cssClass"/>
+            </mb3:section>
+        </mb3:menu>
+
+        <mb3:menu>
             <mb3:named>Tooltips</mb3:named>
             <mb3:section>
                 <mb3:serviceAction objectType="demo.TooltipMenu" id="tooltipDemo"/>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java
index c619d23..c6d1ecb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.booleans.holder.PrimitiveBooleanHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveBooleanViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
index 7110711..50b198e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveByteViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java
index 2870c45..bd75f50 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.doubles.holder.PrimitiveDoubleHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveDoubleViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java
index 733a15f..d5eee13 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.floats.holder.PrimitiveFloatHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveFloatViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java
index bb8473a..b92d27e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.ints.holder.PrimitiveIntHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveIntViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java
index 081e222..71b6aab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveLongViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java
index 48abd92..b9f7568 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java
@@ -38,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.shorts.holder.PrimitiveShortHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.PrimitiveShortViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/WrapperCharacters-description.adoc
index aae8446..b500880 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/WrapperCharacters-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/WrapperCharacters-description.adoc
@@ -9,7 +9,7 @@ Some properties on these domain objects are mandatory, some optional.
 
 == Common interface
 
-These objects both implement a common interface, `WrapperCharacterHolder`:
+These objects both implement a common interface, `StringHolder`:
 
 [source,java]
 ----
@@ -29,7 +29,7 @@ For example:
 +
 [source,java]
 ----
-include::holder/WrapperCharacterHolder_updateReadOnlyPropertyPromptStyleInline.java[tags=class]
+include::holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java[tags=class]
 ----
 +
 There are a number of variants of this action, to demonstrate different prompt layouts.
@@ -41,17 +41,11 @@ There are a number of variants of this action, to demonstrate different prompt l
 include::holder/WrapperCharacterHolder_actionReturning.java[tags=class]
 ----
 
-== Mixin properties
 
-We also use the interface to contribute a number of mixin properties:
-
-* the `mixinPropertyWithCssClass` property:
+* the `actionReturningCollection` action is:
 +
 [source,java]
 ----
-include::holder/WrapperCharacterHolder_mixinPropertyWithCssClass.java[tags=class]
+include::holder/WrapperCharacterHolder_actionReturningCollection.java[tags=class]
 ----
-+
-TIP: the styling is provided from the `application.css` static resource.
-
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_actionReturningCollection.java
index 118cd00..ba3d565 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_actionReturningCollection.java
@@ -29,9 +29,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 
-@Action(
-        semantics = SemanticsOf.SAFE
-)
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
 @RequiredArgsConstructor
 public class WrapperCharacterHolder_actionReturningCollection {
 
@@ -45,5 +44,5 @@ public class WrapperCharacterHolder_actionReturningCollection {
         );
         return characters;
     }
-
 }
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
index 94566df..61be49c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
@@ -22,7 +22,6 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/vm/WrapperCharacterViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/vm/WrapperCharacterViewModel.java
index 528b989..a17ac92 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/vm/WrapperCharacterViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/characters/vm/WrapperCharacterViewModel.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.wrapper.characters.vm;
 
-import javax.jdo.annotations.Column;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -41,7 +40,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.wrapper.characters.holder.WrapperCharacterHolder;
 
 //tag::class[]
-@XmlRootElement(name = "demo.WrapperCharacterViewModel")
+@XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
index f030c0b..472ac48 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
@@ -43,7 +43,7 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
-@XmlRootElement(name = "demo.StatefulViewModelJaxbRefsEntity")
+@XmlRootElement(name = "root")
 @XmlType(
         propOrder = {"message", "favoriteChild", "children"}
 )
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
index fe8871f..f137901 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
@@ -45,7 +45,7 @@ import lombok.val;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
-@XmlRootElement(name = "demo.StatefulViewModelUsingJaxb")   // <.>
+@XmlRootElement(name = "root")                              // <.>
 @XmlType                                                    // <.>
 @XmlAccessorType(XmlAccessType.FIELD)                       // <.>
 @DomainObject(
@@ -65,7 +65,7 @@ public class StatefulViewModelUsingJaxb implements HasAsciiDocDescription {
 
 //end::class[]
 //tag::child[]
-    @XmlRootElement(name = "demo.StatefulViewModelUsingJaxb.Child")
+    @XmlRootElement(name = "root")
     @XmlType
     @XmlAccessorType(XmlAccessType.FIELD)
     @Data