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/07/10 14:54:43 UTC

[isis] branch ISIS-2222 updated (a6ef6cf -> c072cff)

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 a6ef6cf  ISIS-2222: moves the ApplicationTenancyEvaluatorForDemo class
     add fbcf375  ISIS-2400: update menubar.xsd and add example use to demo
     add 0407d89  ISIS-2400: redirect schema location unless menubars.xsd gets released
     add 165a781  ISIS-2400: update menubar visitor (also adding call site stubs)
     add fed73db  ISIS-2400: wkt: remove menu spacer hack
     add 84e6800  ISIS-2400: wkt: menu item separators implemented properly (using fragments)
     add bc8cfb5  ISIS-2400: fixes MenuVisitor to also emit very first sections (when labeled)
     add a0af960  ISIS-2400: wkt: adds menu section CSS, also adds spacers to sections
     new c072cff  ISIS-2222: uses menu section titles

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:
 .../applib/layout/menubars/bootstrap3/menubars.xsd |   1 +
 .../isis/core/commons/internal/base/_Strings.java  |  10 ++
 .../dom/extensions/secman/IsisExtSecManMenu.java   |   6 +-
 .../AppTenancyVm-description.adoc}                 |   0
 .../SecManVm.java => apptenancy/AppTenancyVm.java} |  12 +-
 .../AppTenancyVm.layout.xml}                       |   0
 .../ApplicationTenancyEvaluatorForDemo.java        |   4 +-
 .../{ => apptenancy}/entities/TenantedJdo.java     |   7 +-
 .../entities/TenantedJdoEntities.java              |   3 +-
 .../entities/seed/TenantedJdoSeedService.java      |   4 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  | 140 +++++++++++----------
 .../java/demoapp/dom/types/isis/IsisTypesMenu.java |  10 +-
 .../dom/types/isisext/IsisExtTypesMenu.java        |   4 +-
 .../dom/types/javalang/JavaLangTypesMenu.java      |   4 +-
 .../types/javalang/JavaLangWrapperTypesMenu.java   |  16 +--
 .../dom/types/javamath/JavaMathTypesMenu.java      |   4 +-
 .../dom/types/javanet/JavaNetTypesMenu.java        |   2 +-
 .../dom/types/javasql/JavaSqlTypesMenu.java        |   4 +-
 .../dom/types/javatime/JavaTimeTypesMenu.java      |   6 +-
 .../dom/types/javautil/JavaUtilTypesMenu.java      |   4 +-
 .../dom/types/jodatime/JodaTimeTypesMenu.java      |   6 +-
 .../{ViewModels.java => ViewModelMenu.java}        |  15 ++-
 .../viewer/javafx/ui/main/MenuBuilderFx.java       |   6 +
 .../vaadin/ui/pages/main/MenuBuilderVaa.java       |   8 ++
 .../model/menu/MenuUiModel_buildMenuItems.java     |  20 ++-
 .../isis/viewer/common/model/menu/MenuVisitor.java |   5 +
 .../actionmenu/serviceactions/CssMenuItem.java     |  36 ++++--
 .../actionmenu/serviceactions/MenuActionPanel.java |  34 ++++-
 .../serviceactions/ServiceActionUtil.java          |  15 +--
 .../serviceactions/ServiceActionsPanel.html        |   8 ++
 .../serviceactions/ServiceActionsPanel.java        |  47 ++++---
 .../serviceactions/TertiaryActionsPanel.html       |   8 ++
 .../wicket/ui/pages/bootstrap-overrides-all-v2.css |   6 +
 33 files changed, 286 insertions(+), 169 deletions(-)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{vm/SecManVm-description.adoc => apptenancy/AppTenancyVm-description.adoc} (100%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{vm/SecManVm.java => apptenancy/AppTenancyVm.java} (89%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{vm/SecManVm.layout.xml => apptenancy/AppTenancyVm.layout.xml} (100%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{vm => apptenancy}/ApplicationTenancyEvaluatorForDemo.java (94%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{ => apptenancy}/entities/TenantedJdo.java (78%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{ => apptenancy}/entities/TenantedJdoEntities.java (83%)
 rename examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/{ => apptenancy}/entities/seed/TenantedJdoSeedService.java (88%)
 rename examples/demo/domain/src/main/java/demoapp/dom/viewmodels/{ViewModels.java => ViewModelMenu.java} (77%)


[isis] 01/01: ISIS-2222: uses menu section titles

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 c072cff1fd38ca4e716d3a7b8dd417a3eba7464f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jul 10 15:54:21 2020 +0100

    ISIS-2222: uses menu section titles
---
 .../dom/extensions/secman/IsisExtSecManMenu.java   |   6 +-
 .../AppTenancyVm-description.adoc}                 |   0
 .../SecManVm.java => apptenancy/AppTenancyVm.java} |  12 +-
 .../AppTenancyVm.layout.xml}                       |   0
 .../ApplicationTenancyEvaluatorForDemo.java        |   4 +-
 .../{ => apptenancy}/entities/TenantedJdo.java     |   7 +-
 .../entities/TenantedJdoEntities.java              |   3 +-
 .../entities/seed/TenantedJdoSeedService.java      |   4 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  | 130 +++++++++++----------
 .../java/demoapp/dom/types/isis/IsisTypesMenu.java |  10 +-
 .../dom/types/isisext/IsisExtTypesMenu.java        |   4 +-
 .../dom/types/javalang/JavaLangTypesMenu.java      |   4 +-
 .../types/javalang/JavaLangWrapperTypesMenu.java   |  16 +--
 .../dom/types/javamath/JavaMathTypesMenu.java      |   4 +-
 .../dom/types/javanet/JavaNetTypesMenu.java        |   2 +-
 .../dom/types/javasql/JavaSqlTypesMenu.java        |   4 +-
 .../dom/types/javatime/JavaTimeTypesMenu.java      |   6 +-
 .../dom/types/javautil/JavaUtilTypesMenu.java      |   4 +-
 .../dom/types/jodatime/JodaTimeTypesMenu.java      |   6 +-
 .../{ViewModels.java => ViewModelMenu.java}        |  15 ++-
 20 files changed, 120 insertions(+), 121 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/IsisExtSecManMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/IsisExtSecManMenu.java
index bf8840a..b8488dc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/IsisExtSecManMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/IsisExtSecManMenu.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.extern.log4j.Log4j2;
 
-import demoapp.dom.extensions.secman.vm.SecManVm;
+import demoapp.dom.extensions.secman.apptenancy.AppTenancyVm;
 
 @DomainService(nature=NatureOfService.VIEW, objectType = "demo.IsisExtSecManMenu")
 @DomainObjectLayout(named="SecMan")
@@ -34,8 +34,8 @@ import demoapp.dom.extensions.secman.vm.SecManVm;
 public class IsisExtSecManMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
-    public SecManVm secMan(){
-        return new SecManVm();
+    public AppTenancyVm appTenancy(){
+        return new AppTenancyVm();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm-description.adoc
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm-description.adoc
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm-description.adoc
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm.java
similarity index 89%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm.java
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm.java
index 5b919e6..b12f2af 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.extensions.secman.vm;
+package demoapp.dom.extensions.secman.apptenancy;
 
 import java.util.List;
 
@@ -35,8 +35,8 @@ import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.extensions.secman.entities.TenantedJdo;
-import demoapp.dom.extensions.secman.entities.TenantedJdoEntities;
+import demoapp.dom.extensions.secman.apptenancy.entities.TenantedJdo;
+import demoapp.dom.extensions.secman.apptenancy.entities.TenantedJdoEntities;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -46,7 +46,7 @@ import demoapp.dom.extensions.secman.entities.TenantedJdoEntities;
         nature=Nature.VIEW_MODEL
         , objectType = "demo.SecManVm"
 )
-public class SecManVm implements HasAsciiDocDescription {
+public class AppTenancyVm implements HasAsciiDocDescription {
 
     public String title() {
         return "Tenancy demo";
@@ -62,7 +62,7 @@ public class SecManVm implements HasAsciiDocDescription {
     }
     @Action(associateWith = "hideRegex")
     @ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
-    public SecManVm updateHideRegex(
+    public AppTenancyVm updateHideRegex(
             @Parameter(optionality = Optionality.OPTIONAL)
             String regex) {
         applicationTenancyEvaluatorForDemo.setHideRegex(regex);
@@ -79,7 +79,7 @@ public class SecManVm implements HasAsciiDocDescription {
     }
     @Action(associateWith = "disableRegex")
     @ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
-    public SecManVm updateDisableRegex(
+    public AppTenancyVm updateDisableRegex(
             @Parameter(optionality = Optionality.OPTIONAL)
             String regex) {
         applicationTenancyEvaluatorForDemo.setDisableRegex(regex);
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm.layout.xml
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/SecManVm.layout.xml
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/AppTenancyVm.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/ApplicationTenancyEvaluatorForDemo.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/ApplicationTenancyEvaluatorForDemo.java
similarity index 94%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/ApplicationTenancyEvaluatorForDemo.java
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/ApplicationTenancyEvaluatorForDemo.java
index cd38f75..7f334c7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/vm/ApplicationTenancyEvaluatorForDemo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/ApplicationTenancyEvaluatorForDemo.java
@@ -1,4 +1,4 @@
-package demoapp.dom.extensions.secman.vm;
+package demoapp.dom.extensions.secman.apptenancy;
 
 import java.util.regex.Pattern;
 
@@ -10,7 +10,7 @@ import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 import lombok.Getter;
 import lombok.val;
 
-import demoapp.dom.extensions.secman.entities.TenantedJdo;
+import demoapp.dom.extensions.secman.apptenancy.entities.TenantedJdo;
 
 //tag::class[]
 @Service
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdo.java
similarity index 78%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdo.java
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdo.java
index bd3c279..f34d04d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdo.java
@@ -1,21 +1,16 @@
-package demoapp.dom.extensions.secman.entities;
+package demoapp.dom.extensions.secman.apptenancy.entities;
 
 import javax.jdo.annotations.DatastoreIdentity;
 import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-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.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.jaxbadapters.PersistentEntityAdapter;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdoEntities.java
similarity index 83%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdoEntities.java
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdoEntities.java
index bb3f13f..ce07ac8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/TenantedJdoEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/TenantedJdoEntities.java
@@ -1,7 +1,6 @@
-package demoapp.dom.extensions.secman.entities;
+package demoapp.dom.extensions.secman.apptenancy.entities;
 
 import java.util.List;
-import java.util.Optional;
 
 import javax.inject.Inject;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/seed/TenantedJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/seed/TenantedJdoSeedService.java
similarity index 88%
rename from examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/seed/TenantedJdoSeedService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/seed/TenantedJdoSeedService.java
index 586f85f..5819ebd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/entities/seed/TenantedJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/extensions/secman/apptenancy/entities/seed/TenantedJdoSeedService.java
@@ -1,4 +1,4 @@
-package demoapp.dom.extensions.secman.entities.seed;
+package demoapp.dom.extensions.secman.apptenancy.entities.seed;
 
 import javax.inject.Inject;
 
@@ -9,7 +9,7 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 
 import demoapp.dom._infra.seed.SeedServiceAbstract;
 import demoapp.dom._infra.samples.NameSamples;
-import demoapp.dom.extensions.secman.entities.TenantedJdo;
+import demoapp.dom.extensions.secman.apptenancy.entities.TenantedJdo;
 
 @Service
 public class TenantedJdoSeedService extends SeedServiceAbstract {
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 29fc1f1..bd53dd5 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
@@ -26,64 +26,74 @@ as a replacement for
             </mb3:section>
             <mb3:section>
             	<mb3:named>Wrappers</mb3:named>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperBytes"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperShorts"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperIntegers"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperLongs"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperFloats"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperDoubles"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperCharacters"/>
-                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="wrapperBooleans"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="bytes"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="shorts"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="integers"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="longs"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="floats"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="doubles"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="characters"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="booleans"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="javaLangStrings"/>
-                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="javaLangVoids"/>
+                <mb3:named>Common</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="strings"/>
+                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="voids"/>
             </mb3:section>
         </mb3:menu>
 
         <mb3:menu>
             <mb3:named>More Types</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaMathTypesMenu" id="javaMathBigDecimals"/>
-                <mb3:serviceAction objectType="demo.JavaMathTypesMenu" id="javaMathBigIntegers"/>
+                <mb3:named>java.math</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaMathTypesMenu" id="bigDecimals"/>
+                <mb3:serviceAction objectType="demo.JavaMathTypesMenu" id="bigIntegers"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaNetTypesMenu" id="javaNetUrls"/>
+                <mb3:named>java.net</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaNetTypesMenu" id="urls"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="javaSqlDates"/>
-                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="javaSqlTimestamps"/>
+                <mb3:named>java.sql</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="dates"/>
+                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="timestamps"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeLocalDates"/>
-                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeLocalDateTimes"/>
-                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeOffsetDateTimes"/>
+                <mb3:named>java.time</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="localDates"/>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="localDateTimes"/>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="offsetDateTimes"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="javaUtilDates"/>
-                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="javaUtilUuids"/>
+                <mb3:named>java.util</mb3:named>
+                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="dates"/>
+                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="uuids"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaLocalDates"/>
-                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaLocalDateTimes"/>
-                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaDateTimes"/>
+                <mb3:named>JodaTime</mb3:named>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="localDates"/>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="localDateTimes"/>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="dateTimes"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisBlobs"/>
-                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisClobs"/>
-                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisImages"/>
-                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisLocalResourcePaths"/>
-                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisPasswords"/>
+                <mb3:named>Apache Isis Core</mb3:named>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="blobs"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="clobs"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="images"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="localResourcePaths"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="passwords"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="isisExtAsciiDocs"/>
-                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="isisExtMarkdowns"/>
+                <mb3:named>Apache Isis Extensions</mb3:named>
+                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="asciiDocs"/>
+                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="markdowns"/>
             </mb3:section>
         </mb3:menu>
 
         <mb3:menu>
             <mb3:named>Data Types (to remove)</mb3:named>
             <mb3:section>
+                <mb3:named>Miscellaneous</mb3:named>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="text"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="wrappers"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="uuid">
@@ -104,50 +114,29 @@ as a replacement for
         <mb3:menu>
             <mb3:named>View Models</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.ViewModels" id="openStateful" cssClassFa="mountain"/>
-                <mb3:serviceAction objectType="demo.ViewModels" id="openStatefulRefsEntity"/>
+                <mb3:serviceAction objectType="demo.ViewModels" id="stateful" cssClassFa="mountain"/>
+                <mb3:serviceAction objectType="demo.ViewModels" id="statefulRefsEntity"/>
             </mb3:section>
         </mb3:menu>
 
         <mb3:menu>
             <mb3:named>Annotations</mb3:named>
             <mb3:section>
+                <mb3:named>@ActionLayout</mb3:named>
                 <mb3:serviceAction objectType="demo.ActionLayoutMenu" id="position"/>
                 <mb3:serviceAction objectType="demo.ActionLayoutMenu" id="promptStyle"/>
             </mb3:section>
             <mb3:section>
+                <mb3:named>@PropertyLayout</mb3:named>
                 <mb3:serviceAction objectType="demo.PropertyLayoutMenu" id="named"/>
                 <mb3:serviceAction objectType="demo.PropertyLayoutMenu" id="cssClass"/>
             </mb3:section>
         </mb3:menu>
 
         <mb3:menu>
-            <mb3:named>Extensions</mb3:named>
-            <mb3:section>
-                <mb3:serviceAction objectType="demo.IsisExtSecManMenu" id="secMan"/>
-            </mb3:section>
-        </mb3:menu>
-
-        <mb3:menu>
-            <mb3:named>Tooltips</mb3:named>
-            <mb3:section>
-                <mb3:serviceAction objectType="demo.TooltipMenu" id="tooltipDemo"/>
-            </mb3:section>
-        </mb3:menu>
-
-        <mb3:menu>
-            <mb3:named>Trees</mb3:named>
-            <mb3:section>
-                <mb3:serviceAction objectType="demo.TreeDemoMenu" id="fileSystemTree"/>
-            </mb3:section>
-        </mb3:menu>
-        
-        <mb3:menu>
             <mb3:named>Actions</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.AssociatedActionMenu" id="associatedActions">
-                    <cpt:named>Associated Actions</cpt:named>
-                </mb3:serviceAction>
+                <mb3:serviceAction objectType="demo.AssociatedActionMenu" id="associatedActions"/>
                 <mb3:serviceAction objectType="demo.AsyncActionMenu" id="asyncActions">
                     <cpt:named>Background (Async) Actions</cpt:named>
                 </mb3:serviceAction>
@@ -162,26 +151,39 @@ as a replacement for
                 </mb3:serviceAction>
             </mb3:section>
         </mb3:menu>
-        
+
         <mb3:menu>
-            <mb3:named>Events</mb3:named>
+            <mb3:named>Misc</mb3:named>
+            <mb3:section>
+                <mb3:named>Tooltips</mb3:named>
+                <mb3:serviceAction objectType="demo.TooltipMenu" id="tooltipDemo"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Trees</mb3:named>
+                <mb3:serviceAction objectType="demo.TreeDemoMenu" id="fileSystemTree"/>
+            </mb3:section>
             <mb3:section>
+                <mb3:named>Events</mb3:named>
                 <mb3:serviceAction objectType="demo.EventsDemoMenu" id="eventsDemo" />
             </mb3:section>
+            <mb3:section>
+                <mb3:named>Error Handling</mb3:named>
+                <mb3:serviceAction objectType="demo.ErrorMenu" id="errorHandling" />
+            </mb3:section>
         </mb3:menu>
+
         <mb3:menu>
-            <mb3:named>Error Handling</mb3:named>
+            <mb3:named>Extensions</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.ErrorMenu" id="errorHandling" />
+                <mb3:named>SecMan</mb3:named>
+                <mb3:serviceAction objectType="demo.IsisExtSecManMenu" id="appTenancy"/>
             </mb3:section>
         </mb3:menu>
-        
+
         <mb3:menu>
             <mb3:named>Experimental</mb3:named>
             <mb3:section>
-            	<mb3:serviceAction objectType="demo.TupleDemoMenu" id="tupleDemo">
-                    <cpt:named>Tuple Types</cpt:named>
-                </mb3:serviceAction>
+            	<mb3:serviceAction objectType="demo.TupleDemoMenu" id="tupleDemo"/>
                 <mb3:serviceAction objectType="demo.JeeMenu" id="jeeInjectDemo" />
             </mb3:section>
         </mb3:menu>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
index a930264..0049835 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
@@ -43,31 +43,31 @@ public class IsisTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisBlobs isisBlobs(){
+    public IsisBlobs blobs(){
         return new IsisBlobs();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisClobs isisClobs(){
+    public IsisClobs clobs(){
         return new IsisClobs();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisImages isisImages(){
+    public IsisImages images(){
         return new IsisImages();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisLocalResourcePaths isisLocalResourcePaths(){
+    public IsisLocalResourcePaths resourcePaths(){
         return new IsisLocalResourcePaths();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisPasswords isisPasswords(){
+    public IsisPasswords passwords(){
         return new IsisPasswords();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/IsisExtTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/IsisExtTypesMenu.java
index 883fbc2..92f9c4e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/IsisExtTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/IsisExtTypesMenu.java
@@ -40,13 +40,13 @@ public class IsisExtTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisAsciiDocs isisExtAsciiDocs(){
+    public IsisAsciiDocs asciiDocs(){
         return new IsisAsciiDocs();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public IsisMarkdowns isisExtMarkdowns(){
+    public IsisMarkdowns markdowns(){
         return new IsisMarkdowns();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangTypesMenu.java
index ee7e9c1..06a987b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangTypesMenu.java
@@ -40,13 +40,13 @@ public class JavaLangTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaLangStrings javaLangStrings(){
+    public JavaLangStrings strings(){
         return new JavaLangStrings();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaLangVoids javaLangVoids(){
+    public JavaLangVoids voids(){
         return new JavaLangVoids();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
index e22d0fa..18aa588 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
@@ -43,49 +43,49 @@ public class JavaLangWrapperTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperBytes wrapperBytes(){
+    public WrapperBytes bytes(){
         return new WrapperBytes();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperShorts wrapperShorts(){
+    public WrapperShorts shorts(){
         return new WrapperShorts();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperIntegers wrapperIntegers(){
+    public WrapperIntegers integers(){
         return new WrapperIntegers();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperLongs wrapperLongs(){
+    public WrapperLongs longs(){
         return new WrapperLongs();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperFloats wrapperFloats(){
+    public WrapperFloats floats(){
         return new WrapperFloats();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperDoubles wrapperDoubles(){
+    public WrapperDoubles doubles(){
         return new WrapperDoubles();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperCharacters wrapperCharacters(){
+    public WrapperCharacters characters(){
         return new WrapperCharacters();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperBooleans wrapperBooleans(){
+    public WrapperBooleans booleans(){
         return new WrapperBooleans();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/JavaMathTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/JavaMathTypesMenu.java
index 0a7bbe3..b2ebf3a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/JavaMathTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/JavaMathTypesMenu.java
@@ -39,13 +39,13 @@ public class JavaMathTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaMathBigDecimals javaMathBigDecimals(){
+    public JavaMathBigDecimals bigDecimals(){
         return new JavaMathBigDecimals();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaMathBigIntegers javaMathBigIntegers(){
+    public JavaMathBigIntegers bigIntegers(){
         return new JavaMathBigIntegers();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/JavaNetTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/JavaNetTypesMenu.java
index e8f2fbb..fc28eb0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/JavaNetTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/JavaNetTypesMenu.java
@@ -36,7 +36,7 @@ public class JavaNetTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaNetUrls javaNetUrls(){
+    public JavaNetUrls urls(){
         return new JavaNetUrls();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/JavaSqlTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/JavaSqlTypesMenu.java
index 14126e0..0a91f58 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/JavaSqlTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/JavaSqlTypesMenu.java
@@ -38,13 +38,13 @@ public class JavaSqlTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaSqlDates javaSqlDates(){
+    public JavaSqlDates dates(){
         return new JavaSqlDates();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaSqlTimestamps javaSqlTimestamps(){
+    public JavaSqlTimestamps timestamps(){
         return new JavaSqlTimestamps();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/JavaTimeTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/JavaTimeTypesMenu.java
index 9d8bd37..38ae8ba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/JavaTimeTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/JavaTimeTypesMenu.java
@@ -39,19 +39,19 @@ public class JavaTimeTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaTimeLocalDates javaTimeLocalDates(){
+    public JavaTimeLocalDates localDates(){
         return new JavaTimeLocalDates();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaTimeLocalDateTimes javaTimeLocalDateTimes(){
+    public JavaTimeLocalDateTimes localDateTimes(){
         return new JavaTimeLocalDateTimes();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaTimeOffsetDateTimes javaTimeOffsetDateTimes(){
+    public JavaTimeOffsetDateTimes offsetDateTimes(){
         return new JavaTimeOffsetDateTimes();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/JavaUtilTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/JavaUtilTypesMenu.java
index 8797cff..67625dd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/JavaUtilTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/JavaUtilTypesMenu.java
@@ -37,13 +37,13 @@ public class JavaUtilTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaUtilUuids javaUtilUuids(){
+    public JavaUtilUuids uuids(){
         return new JavaUtilUuids();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JavaUtilDates javaUtilDates(){
+    public JavaUtilDates dates(){
         return new JavaUtilDates();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/JodaTimeTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/JodaTimeTypesMenu.java
index 9b82734..a381e17 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/JodaTimeTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/JodaTimeTypesMenu.java
@@ -39,19 +39,19 @@ public class JodaTimeTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JodaDateTimes jodaDateTimes(){
+    public JodaDateTimes dateTimes(){
         return new JodaDateTimes();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JodaLocalDates jodaLocalDates(){
+    public JodaLocalDates localDates(){
         return new JodaLocalDates();
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
-    public JodaLocalDateTimes jodaLocalDateTimes(){
+    public JodaLocalDateTimes localDateTimes(){
         return new JodaLocalDateTimes();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModelMenu.java
similarity index 77%
rename from examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java
rename to examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModelMenu.java
index ee2d71d..ffa8084 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModelMenu.java
@@ -19,7 +19,9 @@
 package demoapp.dom.viewmodels;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.val;
@@ -28,27 +30,28 @@ import demoapp.dom.viewmodels.jaxbrefentity.StatefulVmJaxbRefsEntity;
 import demoapp.dom.viewmodels.usingjaxb.StatefulVmUsingJaxb;
 
 @DomainService(
-        objectType = "demo.ViewModels"
+        objectType = "demo.ViewModelMenu"
 )
-public class ViewModels {
+@DomainServiceLayout(named = "View Models")
+public class ViewModelMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
-    public StatefulVmUsingJaxb openStateful(final String message) {
+    public StatefulVmUsingJaxb stateful(final String message) {
         val viewModel = new StatefulVmUsingJaxb();
         viewModel.setMessage(message);
         return viewModel;
     }
-    public String default0OpenStateful() {
+    public String default0Stateful() {
         return "Some initial state";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public StatefulVmJaxbRefsEntity openStatefulRefsEntity(final String message) {
+    public StatefulVmJaxbRefsEntity statefulRefsEntity(final String message) {
         val viewModel = new StatefulVmJaxbRefsEntity();
         viewModel.setMessage(message);
         return viewModel;
     }
-    public String default0OpenStatefulRefsEntity() {
+    public String default0StatefulRefsEntity() {
         return "Some initial state";
     }