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 2017/04/14 10:28:26 UTC

[3/9] isis git commit: ISIS-1521: moves layout section from fundamentals guide to wicket viewer guide.

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc
index f195f10..4afb734 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc
@@ -19,11 +19,11 @@ The 'sign up' link can be suppressed, if required, by setting a configuration fl
 
 With 'sign up' not suppressed (the default):
 
-image::{_imagesdir}wicket-viewer/suppress-sign-up/login-page-default.png[width="300px",link="{_imagesdir}wicket-viewer/suppress-sign-up/login-page-default.png"]
+image::{_imagesdir}suppress-sign-up/login-page-default.png[width="300px",link="{_imagesdir}suppress-sign-up/login-page-default.png"]
 
 and with the link suppressed:
 
-image::{_imagesdir}wicket-viewer/suppress-sign-up/login-page-suppress-sign-up.png[width="300px",link="{_imagesdir}wicket-viewer/suppress-sign-up/login-page-suppress-sign-up.png"]
+image::{_imagesdir}suppress-sign-up/login-page-suppress-sign-up.png[width="300px",link="{_imagesdir}suppress-sign-up/login-page-suppress-sign-up.png"]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc
index 96d8605..e2450bb 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc
@@ -13,7 +13,7 @@ Isis' Wicket viewer has an About page that, by default, will provide a dump of t
 
 Here's what the About page looks like with this configuration added:
 
-image::{_imagesdir}wicket-viewer/about-page/about-page.png[width="800px",link="{_imagesdir}wicket-viewer/about-page/about-page.png"]
+image::{_imagesdir}about-page/about-page.png[width="800px",link="{_imagesdir}about-page/about-page.png"]
 
 [NOTE]
 ====

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc
index af9eff8..aafbd15 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc
@@ -13,11 +13,11 @@ display a png logo instead.
 
 The screenshot below shows the Isis addons example https://github.com/isisaddons/isis-app-todoapp/[todoapp] (not ASF) with a 'brand logo' image in its header:
 
-image::{_imagesdir}wicket-viewer/brand-logo/brand-logo.png[width="750px",link="{_imagesdir}wicket-viewer/brand-logo/brand-logo.png"]
+image::{_imagesdir}brand-logo/brand-logo.png[width="750px",link="{_imagesdir}brand-logo/brand-logo.png"]
 
 A custom brand logo (typically larger) can also be specified for the signin page:
 
-image::{_imagesdir}wicket-viewer/brand-logo/brand-logo-signin.png[width="750px",link="{_imagesdir}wicket-viewer/brand-logo/brand-logo-signin.png"]
+image::{_imagesdir}brand-logo/brand-logo-signin.png[width="750px",link="{_imagesdir}brand-logo/brand-logo-signin.png"]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc
index 2860ced..1d0a526 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc
@@ -92,7 +92,7 @@ div.x-myapp-highlight span.scalarName {
 }
 ----
 
-Note also that instead of using `@PropertyLayout(cssClass=...)` annotation, you can also specify the CSS style using a xref:ugfun.adoc#_ugfun_object-layout_dynamic[dynamic layout] JSON file:
+Note also that instead of using `@PropertyLayout(cssClass=...)` annotation, you can also specify the CSS style using a xref:ugvw.adoc#_ugvw_layout_dynamic[dynamic layout] JSON file:
 
 [source,javascript]
 ----

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_blob-attachments.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_blob-attachments.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_blob-attachments.adoc
index 9b702e5..2d2fa69 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_blob-attachments.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_blob-attachments.adoc
@@ -24,7 +24,7 @@ The following screenshots are taken from the Isis addons example https://github.
 
 `Blob` field rendered as attachment (with no data):
 
-image::{_imagesdir}wicket-viewer/blob-attachments/010-attachment-field-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/010-attachment-field.png"]
+image::{_imagesdir}blob-attachments/010-attachment-field-940.png[width="800px",link="{_imagesdir}blob-attachments/010-attachment-field.png"]
 
 [NOTE]
 ====
@@ -36,7 +36,7 @@ Note that these screenshots show an earlier version of the xref:ugvw.adoc#[Wicke
 
 Hit edit; 'choose file' button appears:
 
-image::{_imagesdir}wicket-viewer/blob-attachments/020-edit-choose-file-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/020-edit-choose-file.png"]
+image::{_imagesdir}blob-attachments/020-edit-choose-file-940.png[width="800px",link="{_imagesdir}blob-attachments/020-edit-choose-file.png"]
 
 
 
@@ -44,12 +44,12 @@ image::{_imagesdir}wicket-viewer/blob-attachments/020-edit-choose-file-940.png[w
 
 Choose file using the regular browser window:
 
-image::{_imagesdir}wicket-viewer/blob-attachments/030-choose-file-using-browser-520.png[width="520px",link="{_imagesdir}wicket-viewer/blob-attachments/030-choose-file-using-browser.png"]
+image::{_imagesdir}blob-attachments/030-choose-file-using-browser-520.png[width="520px",link="{_imagesdir}blob-attachments/030-choose-file-using-browser.png"]
 
 
 Chosen file is indicated:
 
-image::{_imagesdir}wicket-viewer/blob-attachments/040-edit-chosen-file-indicated-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/040-edit-chosen-file-indicated.png"]
+image::{_imagesdir}blob-attachments/040-edit-chosen-file-indicated-940.png[width="800px",link="{_imagesdir}blob-attachments/040-edit-chosen-file-indicated.png"]
 
 
 
@@ -57,7 +57,7 @@ image::{_imagesdir}wicket-viewer/blob-attachments/040-edit-chosen-file-indicated
 
 Back in view mode (ie once hit OK) if the `Blob` is an image, then it is shown:
 
-image::{_imagesdir}wicket-viewer/blob-attachments/050-ok-if-image-then-rendered-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/050-ok-if-image-then-rendered.png"]
+image::{_imagesdir}blob-attachments/050-ok-if-image-then-rendered-940.png[width="800px",link="{_imagesdir}blob-attachments/050-ok-if-image-then-rendered.png"]
 
 
 
@@ -65,7 +65,7 @@ image::{_imagesdir}wicket-viewer/blob-attachments/050-ok-if-image-then-rendered-
 
 `Blob` can be downloaded:
 
-image::{_imagesdir}wicket-viewer/blob-attachments/060-download-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/060-download.png"]
+image::{_imagesdir}blob-attachments/060-download-940.png[width="800px",link="{_imagesdir}blob-attachments/060-download.png"]
 
 
 
@@ -73,7 +73,7 @@ image::{_imagesdir}wicket-viewer/blob-attachments/060-download-940.png[width="80
 
 Back in edit mode, can choose a different file or clear (assuming property is not mandatory):
 
-image::{_imagesdir}wicket-viewer/blob-attachments/070-edit-clear-940.png[width="800px",link="{_imagesdir}wicket-viewer/blob-attachments/070-edit-clear.png"]
+image::{_imagesdir}blob-attachments/070-edit-clear-940.png[width="800px",link="{_imagesdir}blob-attachments/070-edit-clear.png"]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_bookmarked-pages.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_bookmarked-pages.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_bookmarked-pages.adoc
index 431dfec..d0de6d8 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_bookmarked-pages.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_bookmarked-pages.adoc
@@ -19,7 +19,7 @@ Bookmarking is automatic; whenever a bookmarkable object/action is visited, then
 
 The following screenshot, taken from https://github.com/isisaddons/isis-app-todoapp[Isisaddons example todoapp] (not ASF) shows how the bookmarks are listed in a sliding panel.
 
-image::{_imagesdir}wicket-viewer/bookmarked-pages/panel.png[width="800px",link="{_imagesdir}wicket-viewer/bookmarked-pages/panel.png"]
+image::{_imagesdir}bookmarked-pages/panel.png[width="800px",link="{_imagesdir}bookmarked-pages/panel.png"]
 
 [NOTE]
 ====
@@ -30,7 +30,7 @@ Note how the list contains both domain objects and an action ("not yet complete"
 
 Bookmarks can also form a hierarchy.  The following screenshot, also taken from the https://github.com/estatio/estatio[Estatio] application, shows a variety of different bookmarked objects with a nested structure:
 
-image::{_imagesdir}wicket-viewer/bookmarked-pages/panel-estatio.png[width="800px",link="{_imagesdir}wicket-viewer/bookmarked-pages/panel-estatio.png"]
+image::{_imagesdir}bookmarked-pages/panel-estatio.png[width="800px",link="{_imagesdir}bookmarked-pages/panel-estatio.png"]
 
 Some - like `Property`, `Lease` and `Party` - are root nodes. However, `LeaseItem` is bookmarkable as a child of `Lease`, and `LeaseTerm` is bookmarkable only as a child of `LeaseItem`. This parent/child relationship is reflected in the layout.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_hints-and-copy-url.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_hints-and-copy-url.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_hints-and-copy-url.adoc
index 43e6b69..7948b12 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_hints-and-copy-url.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_hints-and-copy-url.adoc
@@ -23,7 +23,7 @@ The following screenshots are taken from the [Estatio](https://github.com/estati
 
 This screenshot shows the copy URL button (top right):
 
-image::{_imagesdir}wicket-viewer/copy-link/010-copy-link-button.png[width="800px",link="{_imagesdir}wicket-viewer/copy-link/010-copy-link-button.png"]
+image::{_imagesdir}copy-link/010-copy-link-button.png[width="800px",link="{_imagesdir}copy-link/010-copy-link-button.png"]
 
 [NOTE]
 ====
@@ -32,7 +32,7 @@ Note that these screenshots show an earlier version of the xref:ugvw.adoc#[Wicke
 
 Clicking on this button brings up a dialog with the URL preselected:
 
-image::{_imagesdir}wicket-viewer/copy-link/020-copy-link-dialog.png[width="800px",link="{_imagesdir}wicket-viewer/copy-link/020-copy-link-dialog.png"]
+image::{_imagesdir}copy-link/020-copy-link-dialog.png[width="800px",link="{_imagesdir}copy-link/020-copy-link-dialog.png"]
 
 
 The URL in this case is something like:
@@ -46,14 +46,14 @@ The user can copy the link (eg `ctrl+C`) into the clipboard, then hit `OK` or `E
 
 Using the viewer the user can hide/show collection tables, can sort the tables by header columns:
 
-image::{_imagesdir}wicket-viewer/copy-link/030-hints.png[width="800px",link="{_imagesdir}wicket-viewer/copy-link/030-hints.png"]
+image::{_imagesdir}copy-link/030-hints.png[width="800px",link="{_imagesdir}copy-link/030-hints.png"]
 
 
 Also, if the collection spans multiple pages, then the individual page can be selected.
 
 Once the view has been customised, the URL shown in the copy URL dialog is in an extended form:
 
-image::{_imagesdir}wicket-viewer/copy-link/040-copy-link-with-hints.png[width="800px",link="{_imagesdir}wicket-viewer/copy-link/040-copy-link-with-hints.png"]
+image::{_imagesdir}copy-link/040-copy-link-with-hints.png[width="800px",link="{_imagesdir}copy-link/040-copy-link-with-hints.png"]
 
 The URL in this case is something like:
 
@@ -67,7 +67,7 @@ When the user invokes an action on the object, the URL (necessarily) changes to
 
 A quick way for the user to grab a shareable URL is simply by clicking on the object's title:
 
-image::{_imagesdir}wicket-viewer/copy-link/050-title-url.png[width="800px",link="{_imagesdir}wicket-viewer/copy-link/050-title-url.png"]
+image::{_imagesdir}copy-link/050-title-url.png[width="800px",link="{_imagesdir}copy-link/050-title-url.png"]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_recent-pages.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_recent-pages.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_recent-pages.adoc
index 951a980..00473b1 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_recent-pages.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_recent-pages.adoc
@@ -14,7 +14,7 @@ The Wicket viewer provides a recent pages drop-down that acts as a breadcrumb tr
 
 The following screenshot, taken from the https://github.com/estatio/estatio[Estatio] application, shows the recent pages drop-down after a number of pages have been accessed.
 
-image::{_imagesdir}wicket-viewer/recent-pages/recent-pages.png[width="800px",link="{_imagesdir}wicket-viewer/recent-pages/recent-pages.png"]
+image::{_imagesdir}recent-pages/recent-pages.png[width="800px",link="{_imagesdir}recent-pages/recent-pages.png"]
 
 
 [NOTE]

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_user-registration.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_user-registration.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_user-registration.adoc
index f99aafe..c595ae5 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_user-registration.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_features_user-registration.adoc
@@ -34,32 +34,32 @@ There is _no_ default implementation of the user registration service in the cor
 
 The user is presented with a login page:
 
-image::{_imagesdir}wicket-viewer/user-registration/login-page-default.png[width="300px",link="{_imagesdir}wicket-viewer/user-registration/login-page-default.png"]
+image::{_imagesdir}user-registration/login-page-default.png[width="300px",link="{_imagesdir}user-registration/login-page-default.png"]
 
 
 Navigate to the sign up page. Complete the page, and verify:
 
-image::{_imagesdir}wicket-viewer/user-registration/sign-up-page.png[width="300px",link="{_imagesdir}wicket-viewer/user-registration/sign-up-page.png"]
+image::{_imagesdir}user-registration/sign-up-page.png[width="300px",link="{_imagesdir}user-registration/sign-up-page.png"]
 
 
 Back to the login page:
 
-image::{_imagesdir}wicket-viewer/user-registration/sign-up-login-page-after-sign-up.png[width="300px",link="{_imagesdir}wicket-viewer/user-registration/sign-up-login-page-after-sign-up.png"]
+image::{_imagesdir}user-registration/sign-up-login-page-after-sign-up.png[width="300px",link="{_imagesdir}user-registration/sign-up-login-page-after-sign-up.png"]
 
 
 Email arrives, with link:
 
-image::{_imagesdir}wicket-viewer/user-registration/sign-up-email-with-verification-link.png[width="500px",link="{_imagesdir}wicket-viewer/user-registration/sign-up-email-with-verification-link.png"]
+image::{_imagesdir}user-registration/sign-up-email-with-verification-link.png[width="500px",link="{_imagesdir}user-registration/sign-up-email-with-verification-link.png"]
 
 
 Follow the link, complete the page:
 
-image::{_imagesdir}wicket-viewer/user-registration/sign-up-registration-page.png[width="300px",link="{_imagesdir}wicket-viewer/user-registration/sign-up-registration-page.png"]
+image::{_imagesdir}user-registration/sign-up-registration-page.png[width="300px",link="{_imagesdir}user-registration/sign-up-registration-page.png"]
 
 
 Automatically logged in:
 
-image::{_imagesdir}wicket-viewer/user-registration/sign-up-after-registration.png[width="800px",link="{_imagesdir}wicket-viewer/user-registration/sign-up-after-registration.png"]
+image::{_imagesdir}user-registration/sign-up-after-registration.png[width="800px",link="{_imagesdir}user-registration/sign-up-after-registration.png"]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout.adoc
index 3f8c609..3dc46a1 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout.adoc
@@ -6,69 +6,19 @@
 
 
 
-The layout of domain objects can be controlled either through annotations, or through the supplementary `layout.xml` file.
-Of these, the `layout.xml` file is superior; it offers more flexibility, and can be reloaded at runtime, thereby reducing the feedback loop.
 
-In addition, the layout can be fine-tuned using the xref:rgsvc.adoc#_rgsvc_spi_TableColumnOrderService[`TableColumnOrderService`] optional SPI service.
+In implementing the http://en.wikipedia.org/wiki/Naked_objects[naked objects pattern], Apache Isis aims to infer as much information from the domain classes as possible.
+Nevertheless, some metadata relating solely to the UI is inevitably required.
 
-== `layout.xml`
 
-For more information, see:
+This chapter describes how this is done both for domain objects -- statically or dynamically -- and for the application menu bar (containing domain service' actions).
 
-* the xref:ugfun.adoc#_ugfun_object-layout[user guide fundamentals] (layout chapter);
-
-* xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`] (whose functionality is exposed on the prototyping menu as an action) and lso the a xref:rgcms .adoc#_rgcms_classes_mixins_Object[mixin action]
-
-* xref:rgsvc.adoc#_rgsvc_spi_GridService[`GridService`] and its supporting services, xref:rgsvc.adoc#_rgsvc_spi_GridLoaderService[`GridLoaderService`] and xref:rgsvc.adoc#_rgsvc_spi_GridSystemService[`GridSystemService`]
-
-* xref:rgcms.adoc#_rgcms_classes_layout[grid layout classes], defined in the Apache Isis applib
-
-
-
-== Reordering columns
-
-The optional xref:rgsvc.adoc#_rgsvc_spi_TableColumnOrderService[`TableColumnOrderService`] SPI service can be used to reorder columns in a table, either for a parented collection (owned by parent domain object) or a standalone collection (returned from an action invocation).
-
-For example, suppose there is a `Customer` and an `Order`:
-
-[plantuml, {_imagesdir}/wicket-viewer/layouts/customer-order, png]
-....
-Customer "1" *--> "many" Order : orders
-
-class Order {
-    int num
-    Date placedOn
-    Date shippedOn
-    State state
-}
-....
-
-The order of these properties of `Order`, when rendered in the context of its owning `Customer`, can be controlled using this implementation of `TableColumnOrderService`:
-
-[source,java]
-----
-@DomainService(
-    nature = NatureOfService.DOMAIN,
-    menuOrder = "100"                               // <1>
-)
-public class TableColumnOrderServiceForCustomerOrders
-                 implements TableColumnOrderService {
-    public List<String> orderParented(
-            final Object parent,
-            final String collectionId,
-            final Class<?> collectionType,
-            final List<String> propertyIds) {
-        return parent instanceof Customer && "orders".equals(collectionId)
-             ? Arrays.asList("num", "placedOn", "state", "shippedOn")
-             : null;
-    }
-    public List<String> orderStandalone(
-            final Class<?> collectionType,
-            final List<String> propertyIds) {
-        return null;
-    }
-}
-----
-<1> specifies the order in which the `TableColumnOrderService` implementations are called.
+include::_ugvw_layout_static.adoc[leveloffset=+1]
+include::_ugvw_layout_dynamic_xml.adoc[leveloffset=+1]
+include::_ugvw_layout_dynamic.adoc[leveloffset=+1]
+include::_ugvw_layout_application-menu.adoc[leveloffset=+1]
+include::_ugvw_layout_static-vs-dynamic.adoc[leveloffset=+1]
+include::_ugvw_layout_handling-columns.adoc[leveloffset=+1]
+include::_ugvw_layout_customising-table-columns.adoc[leveloffset=+1]
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc
new file mode 100644
index 0000000..f849d66
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc
@@ -0,0 +1,171 @@
+[[_ugvw_layout_application-menu]]
+= Application Menu Layout
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+The actions of domain services are made available as an application menu bar. By default each domain service
+corresponds to a single menu on this menu bar, with its actions as the drop-down menu items. This is rarely exactly
+what is required, however. The `@MemberOrder` and `@DomainServiceLayout` annotations can be used to rearrange the
+placement of menu items.
+
+The screenshots below are taken from http://github.com/estatio/estatio[Estatio], an open source estate management
+application built using Apache Isis.
+
+== @DomainServiceLayout
+
+Menus for domain services can be placed either on a primary, secondary or tertiary menu bar.
+
+image::{_imagesdir}application-menu/layout-menus.png[width="800px",link="{_imagesdir}application-menu/layout-menus.png"]
+
+Within a single top-level menu (eg "Fixed Assets") there can be actions from multiple services. The Wicket viewer
+automatically adds a divider between each:
+
+image::{_imagesdir}application-menu/dividers.png[width="400px",link="{_imagesdir}application-menu/dividers.png"]
+
+In the example above the top-level menu combines the actions from the `Properties`, `Units` and `FixedAssetRegistrations`
+services. The `Properties` service is annotated:
+
+[source,java]
+----
+@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.1"
+)
+public class Properties ... { ... }
+----
+
+while the `Units` service is annotated:
+
+[source,java]
+----
+@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.2"
+)
+public class Units ... { ... }
+----
+
+and similarly `FixedAssetRegistrations` is annotated:
+
+[source,java]
+----
+@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.3"
+)
+public class FixedAssetRegistrations ... { ... }
+----
+
+Note that in all three cases the value of the `named` attribute and the `menuBar` attribute is the same: "Fixed Assets"
+and PRIMARY. This means that all will appear on a "Fixed Assets" menu in the primary menu bar.
+
+Meanwhile the value of `menuOrder` attribute is significant for two reasons:
+
+* for these three services on the same ("Fixed Assets") top-level menu, it determines the relative order of their sections (`Properties` first, then `Units`, then `FixedAssetRegistrations`)
+* it determines the placement of the top-level menu itself ("Fixed Assets") with respect to other top-level menus on the menu bar.
+
+To illustrate this latter point, the next top-level menu on the menu bar, "Parties", is placed after "Fixed Assets"
+ because the `menuOrder` of the first of its domain services, namely the `Parties` service, is higher than that for
+ "Fixed Assets":
+
+[source,java]
+----
+@DomainServiceLayout(
+        named="Parties",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "20.1"
+)
+public class Parties ... { ... }
+----
+
+Note that only the `menuOrder` of the _first_ domain service is significant in placing the menus along the menu bar;
+thereafter the purpose of the `menuOrder` is to order the menu services sections on the menu itself.
+
+== Ordering menu actions
+
+For a given service, the actions within a section on a menu is determined by the `@MemberOrder` annotation. Thus, for
+the `Units` domain service, its actions are annotated:
+
+[source,java]
+----
+public class Units extends EstatioDomainService<Unit> {
+
+    @MemberOrder(sequence = "1")
+    public Unit newUnit( ... ) { ... }
+
+    @MemberOrder(sequence = "2")
+    public List<Unit> findUnits( ... ) { ... }
+
+    @ActionLayout( prototype = true )
+    @MemberOrder(sequence = "99")
+    public List<Unit> allUnits() { ... }
+    ...
+}
+----
+
+Note that the last is also a prototype action (meaning it is only displayed in SERVER_PROTOTYPE (=Wicket Development) mode).
+In the UI it is rendered in italics.
+
+(It is possible to override this place of a given action by specifying `@MemberOrder(name=&quot;...&quot;)` where the name is
+that of a top-level menu. Prior to 1.8.0 this was the only way of doing things, as of 1.8.0 its use
+is not recommended).
+
+== Tertiary menubar
+
+The tertiary menu bar consists of a single unnamed menu, rendered underneath the user's login, top right. This is
+intended primarily for actions pertaining to the user themselves, eg their account, profile or settings:
+
+image::{_imagesdir}application-menu/tertiary.png[width="300px",link="{_imagesdir}application-menu/tertiary.png"]
+
+Domain services' actions can be associated with the tertiary menu using the same `@DomainServiceLayout` annotation. For
+example, the `updateEpochDate(...)` and `listAllSettings(...)` actions come from the following service:
+
+[source,java]
+----
+@DomainServiceLayout(
+        menuBar = DomainServiceLayout.MenuBar.TERTIARY,
+        menuOrder = "10.1"
+)
+public class EstatioAdministrationService ... {
+
+    @MemberOrder(sequence = "1")
+    public void updateEpochDate( ... ) { ... }
+
+    @MemberOrder(sequence = "2")
+    public List<ApplicationSetting> listAllSettings() { ... }
+    ...
+}
+----
+
+Because the number of items on the tertiary menu is expected to be small and most will pertain to the current user, the
+viewer does _not_ place dividers between actions from different services on the tertiary menu.
+
+
+== Isis Add-on modules
+
+Some of the (non-ASF) link:http://isisaddons.org[Isis Addons] modules also provide services whose actions appear in top-level menus.
+
+The http://github.com/isisaddons/isis-module-security[security]'s module places its domain service menus in three
+top-level menus:
+
+* its `ApplicationUsers`, `ApplicationRoles`, `ApplicationPermission`, `ApplicationFeatureViewModels` and
+ `ApplicationTenancies` domain services are all grouped together in a single "Security" top-level menu, on the
+ SECONDARY menu bar
+
+* its `SecurityModuleAppFixturesService` domain service, which allows the security modules' fixture scripts to be run,
+ is placed on a "Prototyping" top-level menu, also on the SECONDARY menu bar
+
+* its `MeService` domain service, which provides the `me()` action, is placed on the TERTIARY menu bar.
+
+Meanwhile the http://github.com/isisaddons/isis-module-devutils[devutils] module places its actions - to download layouts and
+so forth - on a "Prototyping" top-level menu, on the SECONDARY menu bar.
+
+Currently there is no facility to alter the placement of these services. However, their UI can be suppressed
+using security or using a xref:ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing subscriber].
+

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_customising-table-columns.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_customising-table-columns.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_customising-table-columns.adoc
new file mode 100644
index 0000000..8873610
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_customising-table-columns.adoc
@@ -0,0 +1,54 @@
+[[_ugvw_layout_customising-table-columns]]
+= Customising Table Columns
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+
+The optional xref:rgsvc.adoc#_rgsvc_spi_TableColumnOrderService[`TableColumnOrderService`] SPI service can be used to reorder columns in a table, either for a parented collection (owned by parent domain object) or a standalone collection (returned from an action invocation).
+
+For example, suppose there is a `Customer` and an `Order`:
+
+[plantuml, {_imagesdir}/layouts/customer-order, png]
+....
+Customer "1" *--> "many" Order : orders
+
+class Order {
+    int num
+    Date placedOn
+    Date shippedOn
+    State state
+}
+....
+
+The order of these properties of `Order`, when rendered in the context of its owning `Customer`, can be controlled using this implementation of `TableColumnOrderService`:
+
+[source,java]
+----
+@DomainService(
+    nature = NatureOfService.DOMAIN,
+    menuOrder = "100"                               // <1>
+)
+public class TableColumnOrderServiceForCustomerOrders
+                 implements TableColumnOrderService {
+    public List<String> orderParented(
+            final Object parent,
+            final String collectionId,
+            final Class<?> collectionType,
+            final List<String> propertyIds) {
+        return parent instanceof Customer && "orders".equals(collectionId)
+             ? Arrays.asList("num", "placedOn", "state", "shippedOn")
+             : null;
+    }
+    public List<String> orderStandalone(
+            final Class<?> collectionType,
+            final List<String> propertyIds) {
+        return null;
+    }
+}
+----
+<1> specifies the order in which the `TableColumnOrderService` implementations are called.
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic.adoc
new file mode 100644
index 0000000..cf02fca
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic.adoc
@@ -0,0 +1,151 @@
+[[_ugvw_layout_dynamic]]
+= Dynamic (JSON) Layout
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+Metadata providing UI hints can be specified either xref:ugvw.adoc#_ugvw_layout_static[statically], using annotations, or dynamically, using either a xref:ugvw.adoc#_ugvw_layout_dynamic_xml[``layout.xml``] file or (as described here) a `.layout.json` file.
+
+
+[IMPORTANT]
+====
+The use of dynamic layouts through the `.layout.json` is DEPRECATED.  Instead, use the
+``.layout.xml`` file, which enables much more sophisticated custom layouts than those provided by ``.layout.json``.
+
+It is possible to download initial `.layout.xml` files - which will capture all the metadata originally in the `.layout.json` file - using the xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`] (exposed as an action on the prototyping menu).
+The `.layout.json` file will be ignored once a `.layout.xml` file is present.
+====
+
+== JSON layout file
+
+The JSON layout file for class `Xxx` takes the name `Xxx.layout.json`, and resides in the same package as the class.
+
+
+The format of the file is:
+
+[source,javascript]
+----
+{
+  "columns": [                                // list of columns
+    {
+      "span": 6,                              // span of the left-hand property column
+      "memberGroups": {                       // ordered map of member (property) groups
+        "General": {                          // member group name
+          "members": {
+            "description": {                  // property, no associated actions, but with UI hint
+              "propertyLayout": {
+                "typicalLength": 50           // UI hint for size of field (no longer used in ISIS 1.8.0)
+              }
+            },
+            "category": {},
+            "complete": {                     // property, with associated actions
+              "propertyLayout": {
+                "describedAs": "Whether this todo item has been completed"
+              },
+              "actions": {
+                "completed": {
+                  "actionLayout": {
+                    "named": "Done",          // naming UI hint
+                    "cssClass": "x-highlight" // CSS UI hint
+                  }
+                },
+                "notYetCompleted": {
+                  "actionLayout": {
+                    "named": "Not done"
+                  }
+                }
+              }
+            }
+          },
+          "Misc": {
+            "members": {
+              "notes": {
+                "propertyLayout": {
+                  "multiLine": 5              // UI hint for text area
+                }
+              },
+              "versionSequence": {}
+            }
+          }
+        }
+      }
+    },
+    {
+      "span": 6,                              // span of the middle property column
+      "memberGroups": { ... }
+    },
+    {
+      "span": 0                               // span of the right property column (if any)
+    },
+    {
+      "span": 6,
+      "collections": {                        // ordered map of collections
+        "dependencies": {                     // collection, with associated actions
+          "collectionLayout": {
+            "paged": 10,                      // pagination UI hint
+            "render": "EAGERLY"               // lazy-loading UI hint
+          },
+          "actions": {
+            "add":{},
+            "delete": {}
+          },
+        },
+        "similarItems": {}                    // collection, no associated actions
+      }
+    }
+  ],
+  "actions": {                                // actions not associated with any member
+    "delete": {},
+    "duplicate": {
+      "actionLayout": {
+        "named": {
+          "value": "Clone"
+        }
+      }
+    }
+  }
+}
+----
+
+Although advisable, it is not necessary to list all class members in this file. Any members not listed with be
+ordered according either to annotations (if present) or fallback/default values.
+
+Note also that the layout file may contain entries for xref:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed associations and actions]; this allows each contributee classes to define their own layout for their contributions, possibly overriding any static metadata on the original domain service contributor.
+
+
+
+== Downloading an initial layout
+
+The fastest way to get started is to use the (non-ASF) link:http://github.com/isisaddons/isis-module-devutils[Isis addons' devutils] module to download the layout file (derived from any existing static metadata defined by annotations).
+
+
+
+== Required updates to the dom project's pom.xml
+
+Any `.layout.json` files must be compiled and available in the classpath.  Ensure the following is defined in the dom project's `pom.xml`:
+
+[source.xml]
+----
+<resources>
+    <resource>
+        <filtering>false</filtering>
+        <directory>src/main/resources</directory>
+    </resource>
+    <resource>
+        <filtering>false</filtering>
+        <directory>src/main/java</directory>
+        <includes>
+            <include>**</include>
+        </includes>
+        <excludes>
+            <exclude>**/*.java</exclude>
+        </excludes>
+    </resource>
+</resources>
+----
+
+If using an Apache Isis xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype], then the POM is already correctly configured.
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic_xml.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic_xml.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic_xml.adoc
new file mode 100644
index 0000000..f95fead
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_dynamic_xml.adoc
@@ -0,0 +1,402 @@
+[[_ugvw_layout_dynamic_xml]]
+= Dynamic (XML) Layout
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+Metadata providing UI hints can be specified either xref:ugvw.adoc#_ugvw_layout_static[statically], using annotations, or dynamically using an `Xxx.layout.xml` file (where `Xxx` is the entity or view model object to be rendered).
+
+The `Xxx.layout.xml` file is just the serialized form of a xref:rgcms.adoc#_rgcms_classes_layout[`Grid`] layout class defined within Apache Isis' applib.  These are JAXB-annotated classes with corresponding XSD schemas; the upshot of that
+is that IDEs such as IntelliJ and Eclipse can provide "intellisense", making iteasy to author such layout files.
+
+It is also possible to download an initial `.layout.xml` - capturing any existing layout metadata - using the xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`] (exposed on the prototyping menu) or using a xref:rgcms.adoc#_rgcms_classes_mixins_Object[mixin action] contributed to every domain object.
+
+[NOTE]
+====
+It is also possible to describe dynamic layouts using a `.layout.json` file, as discussed xref:ugvw.adoc#_ugvw_layout_dynamic[here].  The `.layout.json` file should be considered as deprecated: the ``.layout.xml`` file also enables much more sophisticated layouts than those afforded by ``.layout.json``.
+====
+
+== Grids vs Components
+
+The XML file distinguishes between two types of element:
+
+* those that define a grid structure, of: rows, columns, tab groups and tabs. +
++
+The rows and columns are closely modelled on link:getbootstrap.com[Bootstrap 3] (used in the implementation of the xref:ugvw.adoc[Wicket viewer]).
+
+* those that defines common components, of: fieldsets (previously called member groups or property groups), properties, collections, actions and also the title/icon of the domain object itself.
+
+More information about these classes can be found in xref:rgcms.adoc#_rgcms_classes_layout[the reference guide].  More information on Bootstrap 3's grid system can be found link:http://getbootstrap.com/css/#grid[here].
+
+
+== Screencast
+
+This link:https://www.youtube.com/watch?v=MxewC5Pve5k[screencast] describes the feature.
+
+
+
+
+== Examples
+
+Probably the easiest way to understand dynamic XML layouts is by example.  For this we'll use the `ToDoItem` from the
+(non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]:
+
+image::{_imagesdir}ugfun/_ugvw_layout_dynamic_xml/ToDoItem.png[width="940px",link="{_imagesdir}ugfun/_ugvw_layout_dynamic_xml/ToDoItem.png"]
+
+
+=== Namespaces
+
+First things first; every `.layout.xml` file must properly declare the XSD namespaces and schemas.  There are two: one for the grid classes, and one for the common component classes:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<bs3:grid
+  xsi:schemaLocation="http://isis.apache.org/applib/layout/component
+                      http://isis.apache.org/applib/layout/component/component.xsd
+                      http://isis.apache.org/applib/layout/grid/bootstrap3
+                      http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+  xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+  xmlns:c="http://isis.apache.org/applib/layout/component"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    ...
+</bs3:grid>
+----
+
+Most IDEs will automatically download the XSD schemas from the specified schema locations, thereby providing
+"intellisense" help as you edit the file.
+
+
+=== Rows, full-width cols, and tabs
+
+The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections.   In all three cases the row contains a single column spanning the full width of the page.  For the property and collection rows, the column contains a tab group.
+
+This corresponds to the following XML:
+
+[source,xml]
+----
+    <bs3:row>
+        <bs3:col span="12" unreferencedActions="true">
+            <c:domainObject bookmarking="AS_ROOT"/>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="12">
+            <bs3:tabGroup>
+                <bs3:tab name="Properties">...</bs3:tab>
+                <bs3:tab name="Other">...</bs3:tab>
+                <bs3:tab name="Metadata">...</bs3:tab>
+            </bs3:tabGroup>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="12">
+            <bs3:tabGroup unreferencedCollections="true">
+                <bs3:tab name="Similar to">...</bs3:tab>
+                <bs3:tab name="Dependencies">...</bs3:tab>
+            </bs3:tabGroup>
+        </bs3:col>
+    </bs3:row>
+----
+
+
+You will notice that one of the ``col``umns has an ``unreferencedActions`` attribute, while one of the ``tabGroup``s has a similar ``unreferencedCollections`` attribute.  This topic is discussed in more detail xref:ugfun.adoc#__ugvw_layout_dynamic_xml-unreferenced[below].
+
+
+
+=== Fieldsets
+
+The first tab containing properties is divided into two columns, each of which holds a single fieldset of multiple properties.  Those properties in turn can have associated actions.
+
+This corresponds to the following XML:
+
+[source,xml]
+----
+            <bs3:tab name="Properties">
+                <bs3:row>
+                    <bs3:col span="6">
+                        <c:fieldSet name="General" id="general" unreferencedProperties="true">
+                            <c:action id="duplicate" position="PANEL_DROPDOWN"/>
+                            <c:action id="delete"/>
+                            <c:property id="description"/>
+                            <c:property id="category"/>
+                            <c:property id="subcategory">
+                                <c:action id="updateCategory"/>
+                                <c:action id="analyseCategory" position="RIGHT"/>
+                            </c:property>
+                            <c:property id="complete">
+                                <c:action id="completed" cssClassFa="fa-thumbs-up"/>
+                                <c:action id="notYetCompleted" cssClassFa="fa-thumbs-down"/>
+                            </c:property>
+                        </c:fieldSet>
+                    </bs3:col>
+                    <bs3:col span="6">
+                        ...
+                    </bs3:col>
+                </bs3:row>
+            </bs3:tab>
+----
+
+The tab defines two columns, each span of 6 (meaning half the width of the page).
+
+In the first column there is a single fieldset.  Notice how actions - such as `duplicate` and `delete` - can be associated with this fieldset directly, meaning that they should be rendered on the fieldset's top panel.
+
+Thereafter the fieldset lists the properties in order.  Actions can be associated with properties too; here they are rendered underneath or to the right of the field.
+
+Note also the `unreferencedProperties` attribute for the fieldset; this topic is discussed in more detail xref:ugfun.adoc#__ugvw_layout_dynamic_xml-unreferenced[below].
+
+
+=== Collections
+
+In the final row the collections are placed in tabs, simply one collection per tab.  This corresponds to the following XML:
+
+[source,xml]
+----
+                <bs3:tab name="Similar to">
+                    <bs3:row>
+                        <bs3:col span="12">
+                            <c:collection defaultView="table" id="similarTo"/>
+                        </bs3:col>
+                    </bs3:row>
+                </bs3:tab>
+                <bs3:tab name="Dependencies">
+                    <bs3:row>
+                        <bs3:col span="12">
+                            <c:collection defaultView="table" id="dependencies">
+                                <c:action id="add"/>
+                                <c:action id="remove"/>
+                            </c:collection>
+                        </bs3:col>
+                    </bs3:row>
+                </bs3:tab>
+----
+
+As with properties, actions can be associated with collections; this indicates that they should be rendered in the collection's header.
+
+
+
+[[__ugvw_layout_dynamic_xml-unreferenced]]
+== Unreferenced Members
+
+As noted in the preceding discussion, several of the grid's regions have either an ``unreferencedActions``, ``unreferencedCollections`` or ``unreferencedProperties`` attribute.
+
+The rules are:
+
+* `unreferencedActions` attribute can be specified either on a column or on a fieldset.  +
++
+It would normally be typical to use the column holding the `<domainObject/>` icon/title, that is as shown in the example.  The unreferenced actions then appear as top-level actions for the domain object.
+
+* `unreferencedCollections` attribute can be specified either on a column or on a tabgroup. +
++
+If specified on a column, then that column will contain each of the unreferenced collections, stacked one on top of the other.  If specified on a tab group, then a separate tab will be created for each collection, with that tab containing only that single collection.
+
+* `unreferencedProperties` attribute can be specified only on a fieldset.
+
+The purpose of these attributes is to indicate where in the layout any unreferenced members should be rendered.  Every grid _must_ nominate one region for each of these three member types, the reason being that to ensure that the layout can be used even if it is incomplete with respect to the object members inferred from the Java source code.  This might be because the developer forgot to update the layout, or it might be because of a new mixin (property, collection or action) contributed to many objects.
+
+
+The framework ensures that in any given grid exactly one region is specified for each of the three `unreferenced...` attributes.  If the grid fails this validation, then a warning message will be displayed, and the invalid XML logged.  The layout XML will then be ignored.
+
+
+
+== More advanced features
+
+This section decribes a number of more features useful in more complex layouts.
+
+
+=== Multiple references to a feature
+
+One feature worth being aware of is that it is possible to render a single feature more than once.
+
+For example, the dashboard home page for the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp] shows
+the "not yet complete" collection of todo items twice, once as a table and also as a calendar:
+
+image::{_imagesdir}layout-dynamic-xml/ToDoAppDashboard.png[width="940px",link="{_imagesdir}layout-dynamic-xml/ToDoAppDashboard.png"]
+
+
+This is accomplished using the following (slightly abbreviated) layout:
+
+[source,xml]
+----
+<grid ...>
+    <row>
+        <col span="2" unreferencedActions="true">
+            ...
+        </col>
+        <col span="5" unreferencedCollections="true" cssClass="custom-padding-top-20">
+            <ns2:collection id="notYetComplete" defaultView="calendar"/>                <!--1-->
+        </col>
+        <col span="5" cssClass="custom-padding-top-20">
+            <ns2:collection id="notYetComplete" defaultView="table" paged="5"/>         <!--2-->
+            <ns2:collection id="complete" defaultView="table"/>
+        </col>
+        <col span="0">
+            <ns2:fieldSet name="General" id="general" unreferencedProperties="true"/>
+        </col>
+    </row>
+</grid>
+----
+<1> render the collection in "calendar" view
+<2> also render the collection in "table" view
+
+In the middle column the `notYetComplete` collection is rendered in "calendar" view, while in the right-most column
+it is rendered in "table" view.
+
+
+It is also possible to reference object properties and actions more than once.  This might be useful for a complex
+domain object with multiple tabs; certain properties or actions might appear on a summary tab (that shows the
+most commonly used info), but also on detail tabs.
+
+=== Custom CSS
+
+The ToDoApp's dashboard (above) also shows how custom CSS styles can be associated with specific regions of the layout:
+
+[source,xml]
+----
+<grid ...>
+    <row>
+        <col span="2" unreferencedActions="true">
+            <ns2:domainObject/>
+            <row>
+                <col span="12" cssClass="custom-width-100">                             <!--1-->
+                    <ns2:action id="exportToWordDoc"/>
+                </col>
+            </row>
+            ...
+        </col>
+        <col span="5" unreferencedCollections="true" cssClass="custom-padding-top-20">  <!--2-->
+            ...
+        </col>
+        <col span="5" cssClass="custom-padding-top-20">                                 <!--3-->
+            ...
+        </col>
+    </row>
+</grid>
+----
+<1> Render the column with the `custom-width-100` CSS class.
+<2> Render the column with the `custom-padding-top-20` CSS class.
+<3> Ditto
+
+For example the `custom-width-100` style is used to "stretch" the button for the `exportToWordDoc` action in the
+left-most column.  This is accomplished with the following CSS in `application.css`:
+
+[source,css]
+----
+.custom-width-100 ul,
+.custom-width-100 ul li,
+.custom-width-100 ul li a.btn {
+    width: 100%;
+}
+----
+
+Similarly, the middle and right columns are rendered using the `custom-padding-top-20` CSS class.  This shifts them down
+from the top of the page slightly, using the following CSS:
+
+[source,css]
+----
+.custom-padding-top-20 {
+    padding-top: 20px;
+}
+----
+
+
+
+
+== Migrating from earlier versions
+
+As noted earlier on, it is possible to download layout XML files using the xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`] (exposed on the prototyping menu); this will download a ZIP file of layout XML files for all domain entities and view models.  Alternatively the layout XML for a single domain object can be downloaded using the xref:rgcms.adoc#_rgcms_classes_mixins_Object[mixin action] (contributed to every domain object).
+
+There are four "styles":
+
+* current
+* complete
+* normalized
+* minimal
+
+
+Ignorig the "current" style (which merely downloads the currently cached layout), the other three styles allow the
+developer to choose how much metadata is to be specified in the XML, and how much (if any) will be obtained
+elsewhere, either from annotations in the metamodel or from an earlier `.layout.json` file if present.  The table
+below summarises the choices:
+
+.Table caption
+[cols="<.>,^.>,^.>,^.>", options="header"]
+|===
+
+| Style
+|xref:rgant.adoc#_rgant-MemberGroupLayout[`@MemberGroupLayout`]
+| xref:rgant.adoc#_rgant-MemberOrder[`@MemberOrder`]
+| xref:rgant.adoc#_rgant-ActionLayout[`@ActionLayout`], xref:rgant.adoc#_rgant-PropertyLayout[`@PropertyLayout`], xref:rgant.adoc#_rgant-CollectionLayout[`@CollectionLayout`]
+
+
+|`COMPLETE`
+|serialized as XML
+|serialized as XML
+|serialized as XML
+
+
+|`NORMALIZED`
+|serialized as XML
+|serialized as XML
+|not in the XML
+
+
+|`MINIMAL`
+|serialized as XML
+|not in the XML
+|not in the XML
+
+|===
+
+As a developer, you therefore have a choice as to how you provide the metadata required for customised layouts:
+
+* if you want all layout metadata to be read from the `.layout.xml` file, then download the "complete" version, and copy the file alongside the domain class.  You can then remove all `@MemberGroupLayout`, `@MemberOrder`, `@ActionLayout`, `@PropertyLayout` and `@CollectionLayout` annotations from the source code of the domain class.
+
+* if you want to use layout XML file to describe the grid (columns, tabs etc) and specify which object members are associated with those regions of the grid, then download the "normalized" version.  You can then remove the `@MemberGroupLayout` and `@MemberOrder` annotations from the source code of the domain class, but retain the `@ActionLayout`, `@PropertyLayout` and `@CollectionLayout` annotations.
+
+* if you want to use layout XML file ONLY to describe the grid, then download the "minimal" version.  The grid regions will be empty in this version, and the framework will use the `@MemberOrder` annotation to bind object members to those regions.  The only annotation that can be safely removed from the source code with this style is the `@MemberGroupLayout` annotation.
+
+
+Download either for a single domain object, or download all domain objects (entities and view models).
+
+
+== Domain Services
+
+For more information about layouts, see:
+
+* xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`] (whose functionality is exposed on the prototyping menu as an action) and lso the a xref:rgcms .adoc#_rgcms_classes_mixins_Object[mixin action]
+
+* xref:rgsvc.adoc#_rgsvc_spi_GridService[`GridService`] and its supporting services, xref:rgsvc.adoc#_rgsvc_spi_GridLoaderService[`GridLoaderService`] and xref:rgsvc.adoc#_rgsvc_spi_GridSystemService[`GridSystemService`]
+
+* xref:rgcms.adoc#_rgcms_classes_layout[grid layout classes], defined in the Apache Isis applib
+
+
+
+
+== Required updates to the dom project's pom.xml
+
+Any `.layout.xml` files must be compiled and available in the classpath.  Ensure the following is defined in the dom project's `pom.xml`:
+
+[source.xml]
+----
+<resources>
+    <resource>
+        <filtering>false</filtering>
+        <directory>src/main/resources</directory>
+    </resource>
+    <resource>
+        <filtering>false</filtering>
+        <directory>src/main/java</directory>
+        <includes>
+            <include>**</include>
+        </includes>
+        <excludes>
+            <exclude>**/*.java</exclude>
+        </excludes>
+    </resource>
+</resources>
+----
+
+If using an Apache Isis xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype], then the POM is already correctly configured.

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static-vs-dynamic.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static-vs-dynamic.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static-vs-dynamic.adoc
new file mode 100644
index 0000000..3ef16d6
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static-vs-dynamic.adoc
@@ -0,0 +1,26 @@
+[[_ugvw_layout_static-vs-dynamic]]
+= Static vs Dynamic Layouts
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+
+Using xref:ugvw.adoc#_ugvw_layout_dynamic[dynamic object layout]s using JSON has the huge benefit that the layout can be updated without requiring a recompile of the code and redeploy of the app.  Many developers also find it easier to rationalize about layout when all the hints are collated together in a single place (rather than scattered across the class members as annotations).
+
+Another benefit of dynamic layout is that UI hints can be provided for xref:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed associations and actions] that are synthesised at runtime.
+
+The main downsides of using dynamic layouts are a lack of typesafety (a typo will result in the metadata not being picked up for the element) and syntactic fragility (an invalid JSON document will result in no metadata for the entire class).
+
+Also, dynamic layouts have no notion of inheritance, whereas the dewey-decimal format `@MemberOrder` annotation allows the metadata of the subclass its superclasses to fit together relatively seamlessly.
+
+
+
+== Best of both worlds?
+
+Using the (non-ASF) link:http://github.com/isisaddons/isis-jrebel-plugin[Isis addons' jrebel] plugin comes close to getting the best of both words: metadata is specified in a type-safe way using annotations, but can be reloaded automatically.
+
+The downsides are licensing cost, and also the fact that metadata for contributed actions in the contributee class cannot be specified.
+
+Another open source alternative that you might also like to explore is DCEVM; there's a good write-up on the link:http://blog.jetbrains.com/idea/2013/07/get-true-hot-swap-in-java-with-dcevm-and-intellij-idea/[IntelliJ blog].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static.adoc
new file mode 100644
index 0000000..c5807fa
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_static.adoc
@@ -0,0 +1,178 @@
+[[_ugvw_layout_static]]
+= Static Object Layout
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+Metadata providing UI hints can be specified either statically, using annotations, or dynamically, using either a xref:ugvw.adoc#_ugvw_layout_dynamic_xml[`layout.xml`] file or a xref:ugvw.adoc#_ugvw_layout_dynamic[`.layout.json`] file.
+
+This section describes the static approach, using annotations.
+
+[NOTE]
+====
+Tabs and tabgroups are only supported using xref:ugvw.adoc#_ugvw_layout_dynamic_xml[`layout.xml`] files; they are not supported by annotations.
+====
+
+
+
+== `@MemberOrder`
+
+The xref:rgant.adoc#_rgant-MemberOrder[`@MemberOrder`]  annotation is used to specify the relative order of domain class properties, collections and actions.
+
+The annotation defines two attributes, xref:rgant.adoc#_rgant-MemberOrder_name[`name()`] and xref:rgant.adoc#_rgant-MemberOrder_sequence[`sequence()`].  Their usage depends on the member type:
+
+* for properties, the `name()` is used to group properties together into a member group (also called a property group
+or a fieldset.  The `sequence()` then orders properties within these groups. If no `name()` is specified then the
+property is placed in a fallback "General" group, called "General". +
++
+The name of these member groups/fieldsets are then referenced by xref:rgant.adoc#_rgant-MemberGroupLayout[`@MemberGroupLayout`].
+
+* for collections, the `name()` attribute is (currently) unused.  The `sequence()` orders collections relative to one another
+
+* for actions, the `name()` attribute associates an action with either a property or with a collection. +
+
+** If the `name()` attribute matches a property name, then the action's button is rendered close to the property, according to xref:rgant.adoc#_rgant-ActionLayout_position[`@ActionLayout#position()`] attribute. +
+
+** On the other hand if the `name() attribute matches a collection name, then the action's button is rendered on the collection's header.
+
+** If there is no `name()` value, then the action is considered to pertain to the object as a whole, and its button is rendered close to the object's icon and title.
+
+Within any of these, the `sequence()` then determines the relative ordering of the action with respect to other actions that have been similarly associated with properties/collections or left as "free-standing".
+
+
+
+For example:
+
+[source,java]
+----
+public class ToDoItem {
+    @MemberOrder(sequence="1")
+    public String getDescription() { ... }
+    @MemberOrder(sequence="2")
+    public String getCategory() { ... }
+    @MemberOrder(sequence="3")
+    public boolean isComplete() { ... }
+    @MemberOrder(name="Detail", sequence="1")
+    public LocalDate getDueBy() { ... }
+    @MemberOrder(name="Detail", sequence="2")
+    public BigDecimal getCost() { ... }
+    @MemberOrder(name="Detail", sequence="4")
+    public String getNotes() { ... }
+    @MemberOrder(name="Misc", sequence="99")
+    public Long getVersionSequence() { ... }
+    ...
+}
+----
+
+This defines three property (or member) groups, "General", "Detail" and "Misc"; "General" is the default if no `name` attribute is specified. Properties in the same member group are rendered together, as a fieldset.
+
+In addition, actions can optionally be associated (rendered close to) either properties or actions. This is done by overloading the ``@MemberOrder``'s xref:rgant.adoc#_rgant-MemberOrder_name[`name()`] attribute, holding the value of the property or collection.
+
+For example:
+
+[source,java]
+----
+public class ToDoItem {
+    @MemberOrder(sequence="3")
+    public boolean isComplete() { ... }
+    @MemberOrder(name="complete", sequence="1")
+    public ToDoItem completed() { ...}
+    @MemberOrder(name="complete", sequence="2")
+    public ToDoItem notYetCompleted() { ...}
+
+    @MemberOrder(sequence="1")
+    public SortedSet<ToDoItem> getDependencies() { ... }
+    @MemberOrder(name="dependencies", sequence="1")
+    public ToDoItem add(ToDoItem t) { ...}
+    @MemberOrder(name="dependencies", sequence="2")
+    public ToDoItem remove(ToDoItem t) { ...}
+    ...
+}
+----
+
+will associate the `completed()` and `notYetCompleted()` actions with the `complete` property, and will associate the `add()` and `remove()` actions with the `dependencies` collection.
+
+
+The value of xref:rgant.adoc#_rgant-MemberOrder_sequence[`sequence()`] is a string.  The simplest convention (as shown in the example above) is to use numbers -- 1, 2, 3 -- though it is a better idea to leave gaps in the numbers -- 10, 20, 30 perhaps -- such that a new member may be added without having to edit existing numbers.
+
+Even better is to adopt the 'dewey-decimal' notation -- 1, 1.1, 1.2, 2, 3, 5.1.1, 5.2.2, 5.2, 5.3 -- which allows for an indefinite amount of future insertion.  It also allows subclasses to insert their class members as required.
+
+
+
+
+== `@MemberGroupLayout`
+
+The xref:rgant.adoc#_rgant-MemberGroupLayout[`@MemberGroupLayout`] annotation specifies the relative positioning of property groups/fieldsets as being either in a left column, a middle column or in a right column.  The annotation also specifies the relative width of the columns.
+
+The property groups/fieldsets in this case are those that are inferred from the `@MemberOrder#name()` attribute.
+
+[TIP]
+====
+It is also possible to combine `@MemberOrder` with dynamic layouts, either using xref:ugvw.adoc#_ugvw_layout_xml[XML] or xref:ugvw.adoc#_ugvw_layout_dynamic[JSON].  The layout file defines only the regions of a grid structure (fieldsets/columns etc), but does __not__ specify the properties/collections/actions within those grid regions.  The `@MemberOrder` annotation in effect "binds" the properties or collections to those regions of the grid.
+
+When dynamic layouts are used this way, the xref:rgant.adoc#_rgant-MemberGroupLayout[`@MemberGroupLayout`] annotation is essentially ignored, but the metadata from the xref:rgant.adoc#_rgant-MemberOrder[`@MemberOrder`] annotation (and the other layout annotations, xref:rgant.adoc#_rgant-ActionLayout[`@ActionLayout`], xref:rgant.adoc#_rgant-PropertyLayout[`@PropertyLayout`] and xref:rgant.adoc#_rgant-CollectionLayout[`@CollectionLayout`]) are all still honoured.
+====
+
+For example:
+
+[source,java]
+----
+@MemberGroupLayout(
+     columnSpans={3,3,0,6},
+     left={"General", "Misc"},
+     middle="Detail"
+ )
+public class ToDoItem {
+    ...
+}
+----
+
+Four values are given in the `columnSpans` attribute. The first three are the relative widths of the three columns of property groups. The fourth, meanwhile, indicates the width of a final column that holds all the collections of the object.
+
+The values of these spans are taken as proportions of 12 virtual columns across the page (this taken from the link:http://getbootstrap.com/2.3.2/[Bootstrap] library).
+
+For example:
+
+* `{3,3,0,6}` indicates:
+** a left column of properties taking up 25% of the width
+** a middle column of properties taking up 25% of the width
+** a right column of collections taking up 50% of the width
+* `{2,6,0,4}` indicates:
+** a left column of properties taking up ~16% of the width
+** a middle column of properties taking up 50% of the width
+** a right column of collections taking up ~33% of the width
+* `{2,3,3,4}` indicates:
+** a left column of properties taking up ~16% of the width
+** a middle column of properties taking up 25% of the width
+** a right column of properties taking up 25% of the width
+** a far right column of collections taking up ~33% of the width
+
+If the sum of all the columns exceeds 12, then the collections are placed underneath the properties, taking up the full span. For example:
+
+* {4,4,4,12} indicates:
+** a left column of properties taking up ~33% of the width
+** a middle column of properties taking up ~33% of the width
+** a right column of properties taking up ~33% of the width
+** the collections underneath the property columns, taking up the full width
+
+== Example Layouts
+
+Below are sketches for the layout of the https://github.com/apache/isis/blob/f38fdb92941172eabb12e0943509f239e6d5925f/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java[ToDoItem] class of the Isis addons example https://github.com/isisaddons/isis-app-todoapp/[todoapp] (not ASF):
+
+The first divides the properties into two equal sized columns (6-6-0) and puts the collections underneath (12):
+
+image::{_imagesdir}reference-layout/6-6-0-12.png[width="720px",link="{_imagesdir}reference-layout/6-6-0-12.png"]
+
+The next divides the collections into three equal sized columns (4-4-4) and again puts the collections underneath (12):
+
+image::{_imagesdir}reference-layout/4-4-4-12.png[width="720px",link="{_imagesdir}reference-layout/4-4-4-12.png"]
+
+The last puts the properties into a single column (4-0) and places the collections into the other larger column (8-0):
+
+image::{_imagesdir}reference-layout/4-0-8-0.png[width="720px",link="{_imagesdir}reference-layout/4-0-8-0.png"]
+
+
+== Other Annotations
+
+As of 1.8.0, all the layout annotations have been consolidated into the various `XxxLayout` annotations: xref:rgant.adoc#_rgant-ActionLayout, [`@ActionLayout`] xref:rgant.adoc#_rgant-CollectionLayout[`@CollectionLayout`],  xref:rgant.adoc#_rgant-DomainObjectLayout[`@DomainObjectLayout`],  xref:rgant.adoc#_rgant-DomainServiceLayout[`@DomainServiceLayout`],  xref:rgant.adoc#_rgant-ParameterLayout[`@ParameterLayout`], xref:rgant.adoc#_rgant-PropertyLayout[`@PropertyLayout`], and xref:rgant.adoc#_rgant-ViewModelLayout[`@ViewModelLayout`]

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_request-parameters.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_request-parameters.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_request-parameters.adoc
index 94798bc..cc358cc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_request-parameters.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_request-parameters.adoc
@@ -17,12 +17,12 @@ Currently this support consists simply of being able to suppress the header and/
 
 For example, the regular view is:
 
-image::{_imagesdir}wicket-viewer/embedded-view/regular.png[width="720px",link="{_imagesdir}wicket-viewer/embedded-view/regular.png"]
+image::{_imagesdir}embedded-view/regular.png[width="720px",link="{_imagesdir}embedded-view/regular.png"]
 
 
 With the header and footer both suppressed only the main content is shown:
 
-image::{_imagesdir}wicket-viewer/embedded-view/no-header-no-footer.png[width="720px",link="{_imagesdir}wicket-viewer/embedded-view/no-header-no-footer.png"]
+image::{_imagesdir}embedded-view/no-header-no-footer.png[width="720px",link="{_imagesdir}embedded-view/no-header-no-footer.png"]
 
 
 It is also possible to suppress just the header, or just the footer.

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/about-page/about-page.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/about-page/about-page.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/about-page/about-page.png
new file mode 100644
index 0000000..ae5dfc8
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/about-page/about-page.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/dividers.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/dividers.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/dividers.png
new file mode 100644
index 0000000..dcb415d
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/dividers.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.pdn
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.pdn b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.pdn
new file mode 100644
index 0000000..01453f7
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.pdn differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.png
new file mode 100644
index 0000000..0bc73d1
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/layout-menus.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/tertiary.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/tertiary.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/tertiary.png
new file mode 100644
index 0000000..f2d2281
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/application-menu/tertiary.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field-940.png
new file mode 100644
index 0000000..96cbb31
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field.png
new file mode 100644
index 0000000..013f6e2
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/010-attachment-field.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file-940.png
new file mode 100644
index 0000000..7f90bea
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file.png
new file mode 100644
index 0000000..a7e3dc4
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/020-edit-choose-file.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser-520.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser-520.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser-520.png
new file mode 100644
index 0000000..6a32d1b
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser-520.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser.png
new file mode 100644
index 0000000..700c325
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/030-choose-file-using-browser.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated-940.png
new file mode 100644
index 0000000..d6bc924
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated.png
new file mode 100644
index 0000000..60ea5b3
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/040-edit-chosen-file-indicated.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered-940.png
new file mode 100644
index 0000000..302bbbc
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered.png
new file mode 100644
index 0000000..50799b2
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/050-ok-if-image-then-rendered.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download-940.png
new file mode 100644
index 0000000..41b4b27
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download.png
new file mode 100644
index 0000000..f726d0d
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/060-download.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear-940.png
new file mode 100644
index 0000000..0eae54e
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear.png
new file mode 100644
index 0000000..57c2a24
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/blob-attachments/070-edit-clear.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-940.png
new file mode 100644
index 0000000..c572707
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio-940.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio-940.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio-940.png
new file mode 100644
index 0000000..2fad852
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio-940.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio.png
new file mode 100644
index 0000000..0fa0cfa
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel-estatio.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel.png
new file mode 100644
index 0000000..b0d85f7
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/bookmarked-pages/panel.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/8f18b6f0/adocs/documentation/src/main/asciidoc/guides/ugvw/images/brand-logo/brand-logo-signin.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/images/brand-logo/brand-logo-signin.png b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/brand-logo/brand-logo-signin.png
new file mode 100644
index 0000000..92a022d
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/ugvw/images/brand-logo/brand-logo-signin.png differ