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 2018/01/08 22:29:02 UTC

[03/51] [abbrv] [partial] isis-site git commit: ISIS-1465: publishes 1.16.0

http://git-wip-us.apache.org/repos/asf/isis-site/blob/2b88051d/content/guides/ugvw/ugvw.html
----------------------------------------------------------------------
diff --git a/content/guides/ugvw/ugvw.html b/content/guides/ugvw/ugvw.html
index d49ddf1..227deef 100644
--- a/content/guides/ugvw/ugvw.html
+++ b/content/guides/ugvw/ugvw.html
@@ -179,6 +179,7 @@ table.CodeRay td.code>pre{padding:0}
         <li><a href="../../guides/ugfun/ugfun.html">Fundamentals</a></li> 
         <li><a href="../../guides/ugvw/ugvw.html">Wicket Viewer</a></li> 
         <li><a href="../../guides/ugvro/ugvro.html">Restful Objects Viewer</a></li> 
+        <li><a href="../../guides/ugodn/ugodn.html">DataNucleus Object Store</a></li> 
         <li><a href="../../guides/ugsec/ugsec.html">Security</a></li> 
         <li><a href="../../guides/ugtst/ugtst.html">Testing</a></li> 
         <li><a href="../../guides/ugbtb/ugbtb.html">Beyond the Basics</a></li> 
@@ -196,25 +197,32 @@ table.CodeRay td.code>pre{padding:0}
        </ul> </li> 
       <li class="dropdown  hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Downloads<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
-        <li><a href="../../downloads.html">Downloads</a></li> 
-        <li><a href="../../release-notes/release-notes.html">Release Notes</a></li> 
-        <li><a href="../../migration-notes/migration-notes.html">Migration Notes</a></li> 
-        <li role="separator" class="divider"></li> 
         <li class="dropdown-header">Maven archetypes</li> 
         <li><a href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld</a></li> 
         <li><a href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp</a></li> 
         <li role="separator" class="divider"></li> 
-        <li><a href="https://issues.apache.org/jira/browse/ISIS">ASF JIRA</a></li> 
+        <li><a href="../../downloads.html">Downloads</a></li> 
+        <li><a href="../../release-notes/release-notes.html">Release Notes</a></li> 
+        <li><a href="../../migration-notes/migration-notes.html">Migration Notes</a></li> 
+        <li role="separator" class="divider"></li> 
         <li><a href="https://github.com/apache/isis">Github mirror</a></li> 
        </ul> </li> 
       <li class="dropdown  hidden-sm"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Support<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
-        <li><a href="../../support.html">Mailing lists</a></li> 
+        <li class="dropdown-header">Guides</li> 
+        <li><a href="../../guides/dg/dg.html">Developers' Guide</a></li> 
+        <li><a href="../../guides/cgcom/cgcom.html">Committers' Guide</a></li> 
+        <li><a href="../../guides/htg.html">Hints-n-Tips Guide</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Mailing Lists</li> 
+        <li><a href="../../support.html">How to subscribe</a></li> 
         <li><a href="https://lists.apache.org/list.html?users@isis.apache.org">Archives (ASF Pony mail)</a></li> 
         <li><a href="http://isis.markmail.org/search/?q=">Archives (Markmail)</a></li> 
+        <li role="separator" class="divider"></li> 
+        <li class="dropdown-header">Other Resources</li> 
+        <li><a href="https://issues.apache.org/jira/browse/ISIS">ASF JIRA</a></li> 
         <li><a href="http://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li> 
-        <li><a href="../../guides/dg/dg.html">How to contribute</a></li> 
-        <li><a href="../../help.html">Other resources</a></li> 
+        <li><a href="../../help.html">Wiki, Fisheye etc.</a></li> 
        </ul> </li> 
       <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">@ASF<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
@@ -1071,7 +1079,7 @@ table.CodeRay td.code>pre{padding:0}
          <p>In implementing the <a href="http://en.wikipedia.org/wiki/Naked_objects">naked objects pattern</a>, 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. This chapter describes how this is done both for domain objects using either annotations or using an associated layout file.</p> 
         </div> 
         <div class="paragraph"> 
-         <p>It also describes how to layout the application menu items (containing domain service' actions), as more well as more advanced topics such as customising which columns appear in tables.</p> 
+         <p>The chapter also describes how to customising which columns of associated objects appear in tables. The layout of application menu items is described in a <a href="#_ugvw_menubars-layout">separate chapter</a>.</p> 
         </div> 
         <div class="sect2"> 
          <h3 id="_ugvw_layout_annotation-based">3.1. Annotation-based Layout</h3>
@@ -1312,7 +1320,7 @@ table.CodeRay td.code>pre{padding:0}
          <div class="sect3"> 
           <h4 id="_other_annotations">3.1.4. Other Annotations</h4> 
           <div class="paragraph"> 
-           <p>As of <code>1.8.0</code>, all the layout annotations have been consolidated into the various <code>XxxLayout</code> annotations: <a href="../rgant/rgant.html#_rgant-ActionLayout, "><code>@ActionLayout</code></a> <a href="../rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>, <a href="../rgant/rgant.html#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a>, <a href="../rgant/rgant.html#_rgant-DomainServiceLayout"><code>@DomainServiceLayout</code></a>, <a href="../rgant/rgant.html#_rgant-ParameterLayout"><code>@ParameterLayout</code></a>, <a href="../rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>, and <a href="../rgant/rgant.html#_rgant-ViewModelLayout"><code>@ViewModelLayout</code></a></p> 
+           <p>All the layout annotations (eg <code>@Regex</code> and <code>@Named</code>) have been deprecated, instead replaced by the various <code>XxxLayout</code> annotations: <a href="../rgant/rgant.html#_rgant-ActionLayout, "><code>@ActionLayout</code></a> <a href="../rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>, <a href="../rgant/rgant.html#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a>, <a href="../rgant/rgant.html#_rgant-DomainServiceLayout"><code>@DomainServiceLayout</code></a>, <a href="../rgant/rgant.html#_rgant-ParameterLayout"><code>@ParameterLayout</code></a>, <a href="../rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>, and <a href="../rgant/rgant.html#_rgant-ViewModelLayout"><code>@ViewModelLayout</code></a></p> 
           </div> 
          </div> 
         </div> 
@@ -1349,8 +1357,9 @@ table.CodeRay td.code>pre{padding:0}
          </div> 
          <div class="ulist"> 
           <ul> 
-           <li> <p>file-based layouts are not type: a typo will result in the metadata not being picked up for the element. They also suffer from syntactic fragility: an invalid XML document will result in no metadata for the entire class.</p> </li> 
-           <li> <p>there is no notion of inheritance, so a <code>.layout.xml</code> is required for all concrete classes and also for any abstract classes (if used as a collection type) In contrast, the dewey-decimal format <code>@MemberOrder</code> annotation allows the metadata of the subclass its superclasses to fit together relatively seamlessly.</p> </li> 
+           <li> <p>file-based layouts are not typesafe: a typo will result in the metadata not being picked up for the element.</p> </li> 
+           <li> <p>they suffer from syntactic fragility: an invalid XML document will result in no metadata for the entire class.</p> </li> 
+           <li> <p>there is no notion of inheritance, so a <code>.layout.xml</code> is required for all concrete classes and also for any abstract classes (if used as a collection type). In contrast, the dewey-decimal format <code>@MemberOrder</code> annotation allows the metadata of the subclass its superclasses to fit together relatively seamlessly.</p> </li> 
           </ul> 
          </div> 
          <div class="paragraph"> 
@@ -1519,7 +1528,7 @@ table.CodeRay td.code>pre{padding:0}
                <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
                <td class="content"> 
                 <div class="paragraph"> 
-                 <p>(As of <code>1.15.0</code>) the <code>&lt;fieldset&gt;</code>'s "name" attribute is optional. If omitted, then the title panel is suppressed, freeing more real estate.</p> 
+                 <p>The <code>&lt;fieldset&gt;</code>'s "name" attribute is optional. If omitted, then the title panel is suppressed, freeing more real estate.</p> 
                 </div> 
                 <div class="paragraph"> 
                  <p>Do be aware though that if there are any actions that have been placed on the fieldset’s panel, then these <em>will <strong>not</strong> be displayed</em>.</p> 
@@ -1536,23 +1545,23 @@ table.CodeRay td.code>pre{padding:0}
            </div> 
            <div class="listingblock"> 
             <div class="content"> 
-             <pre class="CodeRay highlight"><code data-lang="xml">                <span class="tag">&lt;bs3:tab</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">Similar to</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
-                    <span class="tag">&lt;bs3:row&gt;</span>
-                        <span class="tag">&lt;bs3:col</span> <span class="attribute-name">span</span>=<span class="string"><span class="delimiter">"</span><span class="content">12</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
-                            <span class="tag">&lt;c:collection</span> <span class="attribute-name">defaultView</span>=<span class="string"><span class="delimiter">"</span><span class="content">table</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">similarTo</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
-                        <span class="tag">&lt;/bs3:col&gt;</span>
-                    <span class="tag">&lt;/bs3:row&gt;</span>
-                <span class="tag">&lt;/bs3:tab&gt;</span>
-                <span class="tag">&lt;bs3:tab</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">Dependencies</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
-                    <span class="tag">&lt;bs3:row&gt;</span>
-                        <span class="tag">&lt;bs3:col</span> <span class="attribute-name">span</span>=<span class="string"><span class="delimiter">"</span><span class="content">12</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
-                            <span class="tag">&lt;c:collection</span> <span class="attribute-name">defaultView</span>=<span class="string"><span class="delimiter">"</span><span class="content">table</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">dependencies</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
-                                <span class="tag">&lt;c:action</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">add</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
-                                <span class="tag">&lt;c:action</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">remove</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
-                            <span class="tag">&lt;/c:collection&gt;</span>
-                        <span class="tag">&lt;/bs3:col&gt;</span>
-                    <span class="tag">&lt;/bs3:row&gt;</span>
-                <span class="tag">&lt;/bs3:tab&gt;</span></code></pre> 
+             <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;bs3:tab</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">Similar to</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;bs3:row&gt;</span>
+        <span class="tag">&lt;bs3:col</span> <span class="attribute-name">span</span>=<span class="string"><span class="delimiter">"</span><span class="content">12</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+            <span class="tag">&lt;c:collection</span> <span class="attribute-name">defaultView</span>=<span class="string"><span class="delimiter">"</span><span class="content">table</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">similarTo</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
+        <span class="tag">&lt;/bs3:col&gt;</span>
+    <span class="tag">&lt;/bs3:row&gt;</span>
+<span class="tag">&lt;/bs3:tab&gt;</span>
+<span class="tag">&lt;bs3:tab</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">Dependencies</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;bs3:row&gt;</span>
+        <span class="tag">&lt;bs3:col</span> <span class="attribute-name">span</span>=<span class="string"><span class="delimiter">"</span><span class="content">12</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+            <span class="tag">&lt;c:collection</span> <span class="attribute-name">defaultView</span>=<span class="string"><span class="delimiter">"</span><span class="content">table</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">dependencies</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+                <span class="tag">&lt;c:action</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">add</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
+                <span class="tag">&lt;c:action</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">remove</span><span class="delimiter">"</span></span><span class="tag">/&gt;</span>
+            <span class="tag">&lt;/c:collection&gt;</span>
+        <span class="tag">&lt;/bs3:col&gt;</span>
+    <span class="tag">&lt;/bs3:row&gt;</span>
+<span class="tag">&lt;/bs3:tab&gt;</span></code></pre> 
             </div> 
            </div> 
            <div class="paragraph"> 
@@ -1837,43 +1846,140 @@ table.CodeRay td.code>pre{padding:0}
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_layout_application-menu">3.3. Application Menu Layout</h3>
+         <h3 id="_ugvw_layout_table-columns">3.3. Table Columns</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
           <ul class="dropdown-menu">
-           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_application-menu.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
           </ul>
          </div> 
          <div class="paragraph"> 
-          <p>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 <code>@MemberOrder</code> and <code>@DomainServiceLayout</code> annotations can be used to rearrange the placement of menu items.</p> 
+          <p>The optional <a href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_TableColumnOrderService"><code>TableColumnOrderService</code></a> 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).</p> 
          </div> 
          <div class="paragraph"> 
-          <p>The screenshots below are taken from <a href="http://github.com/estatio/estatio">Estatio</a>, an open source estate management application built using Apache Isis.</p> 
+          <p>For example, suppose there is a <code>Customer</code> and an <code>Order</code>:</p> 
          </div> 
-         <div class="sect3"> 
-          <h4 id="__domainservicelayout">3.3.1. @DomainServiceLayout</h4> 
-          <div class="paragraph"> 
-           <p>Menus for domain services can be placed either on a primary, secondary or tertiary menu bar.</p> 
-          </div> 
-          <div class="imageblock"> 
-           <div class="content"> 
-            <a class="image" href="images/application-menu/layout-menus.png"><img src="images/application-menu/layout-menus.png" alt="layout menus" width="800px"></a> 
-           </div> 
-          </div> 
-          <div class="paragraph"> 
-           <p>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:</p> 
+         <div class="imageblock"> 
+          <div class="content"> 
+           <img src="images/layouts/customer-order.png" alt="customer order" width="108" height="248"> 
           </div> 
-          <div class="imageblock"> 
-           <div class="content"> 
-            <a class="image" href="images/application-menu/dividers.png"><img src="images/application-menu/dividers.png" alt="dividers" width="400px"></a> 
-           </div> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The order of these properties of <code>Order</code>, when rendered in the context of its owning <code>Customer</code>, can be controlled using this implementation of <code>TableColumnOrderService</code>:</p> 
+         </div> 
+         <div class="listingblock"> 
+          <div class="content"> 
+           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(
+    nature = NatureOfService.DOMAIN,
+    menuOrder = <span class="string"><span class="delimiter">"</span><span class="content">100</span><span class="delimiter">"</span></span>                               <i class="conum" data-value="1"></i><b>(1)</b>
+)
+<span class="directive">public</span> <span class="type">class</span> <span class="class">TableColumnOrderServiceForCustomerOrders</span>
+                 <span class="directive">implements</span> TableColumnOrderService {
+    <span class="directive">public</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; orderParented(
+            <span class="directive">final</span> <span class="predefined-type">Object</span> parent,
+            <span class="directive">final</span> <span class="predefined-type">String</span> collectionId,
+            <span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; collectionType,
+            <span class="directive">final</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; propertyIds) {
+        <span class="keyword">return</span> parent <span class="keyword">instanceof</span> Customer &amp;&amp; <span class="string"><span class="delimiter">"</span><span class="content">orders</span><span class="delimiter">"</span></span>.equals(collectionId)
+             ? <span class="predefined-type">Arrays</span>.asList(<span class="string"><span class="delimiter">"</span><span class="content">num</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">placedOn</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">state</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">shippedOn</span><span class="delimiter">"</span></span>)
+             : <span class="predefined-constant">null</span>;
+    }
+    <span class="directive">public</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; orderStandalone(
+            <span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; collectionType,
+            <span class="directive">final</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; propertyIds) {
+        <span class="keyword">return</span> <span class="predefined-constant">null</span>;
+    }
+}</code></pre> 
           </div> 
+         </div> 
+         <div class="colist arabic"> 
+          <table> 
+           <tbody>
+            <tr> 
+             <td><i class="conum" data-value="1"></i><b>1</b></td> 
+             <td>specifies the order in which the <code>TableColumnOrderService</code> implementations are called.</td> 
+            </tr> 
+           </tbody>
+          </table> 
+         </div> 
+        </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_ugvw_menubars-layout">4. Menu Bars Layout</h2>
+       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+        <ul class="dropdown-menu">
+         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+        </ul>
+       </div> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>The actions of domain services are made available as menu items on menus. 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; it often makes sense to group menu items for similar domain services together.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>For example, the (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a> modules provides services whose actions appear into two top-level menus:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>its <code>ApplicationUsers</code>, <code>ApplicationRoles</code>, <code>ApplicationPermission</code>, <code>ApplicationFeatureViewModels</code> and <code>ApplicationTenancies</code> domain services are all grouped together in a single "Security" top-level menu, on the SECONDARY menu bar</p> </li> 
+          <li> <p>its <code>MeService</code> domain service, which provides the <code>me()</code> action, is placed on the TERTIARY menu bar.</p> </li> 
+         </ul> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The menus themselves can be placed either on a primary, secondary or tertiary menu bar, as shown in this screenshot (taken from <a href="http://github.com/estatio/estatio">Estatio</a>, an open source estate management application built using Apache Isis):</p> 
+        </div> 
+        <div class="imageblock"> 
+         <div class="content"> 
+          <a class="image" href="images/application-menu/layout-menus.png"><img src="images/application-menu/layout-menus.png" alt="layout menus" width="800px"></a> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Within a single top-level menu (eg "Fixed Assets") there can be actions from multiple services. The Wicket viewer shows these as separate sections, with a divider between each:</p> 
+        </div> 
+        <div class="imageblock"> 
+         <div class="content"> 
+          <a class="image" href="images/application-menu/dividers.png"><img src="images/application-menu/dividers.png" alt="dividers" width="400px"></a> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>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:</p> 
+        </div> 
+        <div class="imageblock"> 
+         <div class="content"> 
+          <a class="image" href="images/application-menu/tertiary.png"><img src="images/application-menu/tertiary.png" alt="tertiary" width="300px"></a> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>The Apache Isis framework provides two mechanisms to control the arrangement of domain service actions across menubars and menus, either using annotations or using a file-based layout.</p> 
+        </div> 
+        <div class="sect2"> 
+         <h3 id="_ugvw_menubars-layout_annotation-based">4.1. Annotation-based Menu Bars</h3>
+         <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_annotation-based.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+          <ul class="dropdown-menu">
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_annotation-based.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_annotation-based.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_annotation-based.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_annotation-based.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+          </ul>
+         </div> 
+         <div class="paragraph"> 
+          <p>The annotations-based approach for arranging the placement of menu items is achieved through the <a href="../rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> and <a href="../rgant/rgant.html#_rgant-DomainServiceLayout"><code>@DomainServiceLayout</code></a> annotations.</p> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="__domainservicelayout">4.1.1. @DomainServiceLayout</h4> 
           <div class="paragraph"> 
-           <p>In the example above the top-level menu combines the actions from the <code>Properties</code>, <code>Units</code> and <code>FixedAssetRegistrations</code> services. The <code>Properties</code> service is annotated:</p> 
+           <p>In the example from Estatio shown above the top-level menu combines the actions from the <code>Properties</code>, <code>Units</code> and <code>FixedAssetRegistrations</code> services. The <code>Properties</code> service is annotated:</p> 
           </div> 
           <div class="listingblock"> 
            <div class="content"> 
@@ -1941,7 +2047,7 @@ table.CodeRay td.code>pre{padding:0}
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_ordering_menu_actions">3.3.2. Ordering menu actions</h4> 
+          <h4 id="_ordering_menu_actions">4.1.2. Ordering menu actions</h4> 
           <div class="paragraph"> 
            <p>For a given service, the actions within a section on a menu is determined by the <code>@MemberOrder</code> annotation. Thus, for the <code>Units</code> domain service, its actions are annotated:</p> 
           </div> 
@@ -1965,22 +2071,14 @@ table.CodeRay td.code>pre{padding:0}
           <div class="paragraph"> 
            <p>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.</p> 
           </div> 
-          <div class="paragraph"> 
-           <p>(It is possible to override this place of a given action by specifying <code>@MemberOrder(name="…​")</code> where the name is that of a top-level menu. Prior to <code>1.8.0</code> this was the only way of doing things, as of <code>1.8.0</code> its use is not recommended).</p> 
-          </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_tertiary_menubar">3.3.3. Tertiary menubar</h4> 
+          <h4 id="_tertiary_menu">4.1.3. Tertiary Menu</h4> 
           <div class="paragraph"> 
-           <p>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:</p> 
-          </div> 
-          <div class="imageblock"> 
-           <div class="content"> 
-            <a class="image" href="images/application-menu/tertiary.png"><img src="images/application-menu/tertiary.png" alt="tertiary" width="300px"></a> 
-           </div> 
+           <p>Domain services' actions can be associated with the tertiary menu using the same <code>@DomainServiceLayout</code> annotation, but be aware that the <code>@DomainServiceLayout#name()</code> attribute will be ignored (there is only one effective menu).</p> 
           </div> 
           <div class="paragraph"> 
-           <p>Domain services' actions can be associated with the tertiary menu using the same <code>@DomainServiceLayout</code> annotation. For example, the <code>updateEpochDate(…​)</code> and <code>listAllSettings(…​)</code> actions come from the following service:</p> 
+           <p>For example, the <code>updateEpochDate(…​)</code> and <code>listAllSettings(…​)</code> actions come from the following service:</p> 
           </div> 
           <div class="listingblock"> 
            <div class="content"> 
@@ -2003,91 +2101,142 @@ table.CodeRay td.code>pre{padding:0}
            <p>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 <em>not</em> place dividers between actions from different services on the tertiary menu.</p> 
           </div> 
          </div> 
-         <div class="sect3"> 
-          <h4 id="_incode_platform_modules">3.3.4. Incode Platform modules</h4> 
-          <div class="paragraph"> 
-           <p>Some of the (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a> modules also provide services whose actions appear in top-level menus.</p> 
-          </div> 
-          <div class="paragraph"> 
-           <p>The security’s module places its domain service menus in three top-level menus:</p> 
-          </div> 
-          <div class="ulist"> 
-           <ul> 
-            <li> <p>its <code>ApplicationUsers</code>, <code>ApplicationRoles</code>, <code>ApplicationPermission</code>, <code>ApplicationFeatureViewModels</code> and <code>ApplicationTenancies</code> domain services are all grouped together in a single "Security" top-level menu, on the SECONDARY menu bar</p> </li> 
-            <li> <p>its <code>MeService</code> domain service, which provides the <code>me()</code> action, is placed on the TERTIARY menu bar.</p> </li> 
-           </ul> 
-          </div> 
-          <div class="paragraph"> 
-           <p>Currently there is no facility to alter the placement of these services. However, their UI can be suppressed using security or using a <a href="../ugbtb/ugbtb.html#_ugbtb_hints-and-tips_vetoing-visibility">vetoing subscriber</a>.</p> 
-          </div> 
-         </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_layout_table-columns">3.4. Table Columns</h3>
+         <h3 id="_ugvw_menubars-layout_file-based">4.2. File-based Menu Bars</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
+          <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_file-based.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
           <ul class="dropdown-menu">
-           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_table-columns.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
+           <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_file-based.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
+           <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_file-based.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
+           <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_file-based.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
+           <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_menubars-layout_file-based.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
           </ul>
          </div> 
          <div class="paragraph"> 
-          <p>The optional <a href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_TableColumnOrderService"><code>TableColumnOrderService</code></a> 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).</p> 
+          <p>The domain service actions can be arranged across menu items using the <code>menubars.layout.xml</code> file. Not only is this easier to work with, it also can be reloaded dynamically (if in prototype mode), substantially redu.</p> 
          </div> 
          <div class="paragraph"> 
-          <p>For example, suppose there is a <code>Customer</code> and an <code>Order</code>:</p> 
+          <p>As for <a href="#_ugvw_layout_file-based">file-based object layouts</a>, this offers a number of benefits:</p> 
          </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <img src="images/layouts/customer-order.png" alt="customer order" width="108" height="248"> 
-          </div> 
+         <div class="ulist"> 
+          <ul> 
+           <li> <p>Probably most significantly, the layout can be updated without requiring a recompile of the code and redeploy of the app; fine-tuning the layout with your end users is easy to do</p> </li> 
+           <li> <p>Many developers also find it easier to rationalize about menu bars layout when all the hints are collated together in a single place (rather than scattered across the domain service classes as annotations).</p> </li> 
+          </ul> 
          </div> 
          <div class="paragraph"> 
-          <p>The order of these properties of <code>Order</code>, when rendered in the context of its owning <code>Customer</code>, can be controlled using this implementation of <code>TableColumnOrderService</code>:</p> 
+          <p>There are some disadvantages to using file-based layouts:</p> 
          </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(
-    nature = NatureOfService.DOMAIN,
-    menuOrder = <span class="string"><span class="delimiter">"</span><span class="content">100</span><span class="delimiter">"</span></span>                               <i class="conum" data-value="1"></i><b>(1)</b>
-)
-<span class="directive">public</span> <span class="type">class</span> <span class="class">TableColumnOrderServiceForCustomerOrders</span>
-                 <span class="directive">implements</span> TableColumnOrderService {
-    <span class="directive">public</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; orderParented(
-            <span class="directive">final</span> <span class="predefined-type">Object</span> parent,
-            <span class="directive">final</span> <span class="predefined-type">String</span> collectionId,
-            <span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; collectionType,
-            <span class="directive">final</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; propertyIds) {
-        <span class="keyword">return</span> parent <span class="keyword">instanceof</span> Customer &amp;&amp; <span class="string"><span class="delimiter">"</span><span class="content">orders</span><span class="delimiter">"</span></span>.equals(collectionId)
-             ? <span class="predefined-type">Arrays</span>.asList(<span class="string"><span class="delimiter">"</span><span class="content">num</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">placedOn</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">state</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">shippedOn</span><span class="delimiter">"</span></span>)
-             : <span class="predefined-constant">null</span>;
-    }
-    <span class="directive">public</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; orderStandalone(
-            <span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; collectionType,
-            <span class="directive">final</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">String</span>&gt; propertyIds) {
-        <span class="keyword">return</span> <span class="predefined-constant">null</span>;
-    }
-}</code></pre> 
+         <div class="ulist"> 
+          <ul> 
+           <li> <p>file-based layouts are not typesafe: a typo will result in the metadata not being picked up for the element.</p> </li> 
+           <li> <p>they also suffer from syntactic fragility: an invalid XML document will result in no metadata for the entire class.</p> </li> 
+          </ul> 
+         </div> 
+         <div class="paragraph"> 
+          <p>The <code>menubars.layout.xml</code> file is just the serialized form of a <a href="../rgcms/rgcms.html#_rgcms_classes_layout"><code>MenuBars</code></a> 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 it easy to author such layout files.</p> 
+         </div> 
+         <div class="sect3"> 
+          <h4 id="_obtaining_an_initial_layout">4.2.1. Obtaining an initial layout</h4> 
+          <div class="paragraph"> 
+           <p>An initial <code>menubars.layout.xml</code> - capturing any existing metadata either implicit or explicitly specified through annotations can be downloaded from the <a href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_MenuBarsService"><code>MenuBarsService</code></a> (exposed on the prototyping menu):</p> 
+          </div> 
+          <div class="imageblock"> 
+           <div class="content"> 
+            <a class="image" href="images//menubars/010-download.png"><img src="images//menubars/010-download.png" alt="010 download" width="300px"></a> 
+           </div> 
+          </div> 
+          <div class="paragraph"> 
+           <p>This action allows either the "Default" or the "Fallback" layout to be downloaded.</p> 
+          </div> 
+          <div class="imageblock"> 
+           <div class="content"> 
+            <a class="image" href="images//menubars/020-download.png"><img src="images//menubars/020-download.png" alt="020 download" width="400px"></a> 
+           </div> 
+          </div> 
+          <div class="paragraph"> 
+           <p>The "Default" layout is that currently in use, while the "Fallback" layout is that provided only from the annotations. Initially these are identical.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>For example, here’s a fragment of that provided by the simpleapp archetype:</p> 
+          </div> 
+          <div class="listingblock"> 
+           <div class="content"> 
+            <pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;</span>
+<span class="tag">&lt;mb3:menuBars</span>
+    <span class="attribute-name">xsi:schemaLocation</span>=<span class="string"><span class="delimiter">"</span><span class="content">...</span><span class="delimiter">"</span></span>
+    <span class="attribute-name">xmlns:cpt</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://isis.apache.org/applib/layout/component</span><span class="delimiter">"</span></span>
+    <span class="attribute-name">xmlns:lnk</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://isis.apache.org/applib/layout/links</span><span class="delimiter">"</span></span>
+    <span class="attribute-name">xmlns:mb3</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://isis.apache.org/applib/layout/menubars/bootstrap3</span><span class="delimiter">"</span></span>
+    <span class="attribute-name">xmlns:xsi</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2001/XMLSchema-instance</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;mb3:primary&gt;</span>
+        <span class="tag">&lt;mb3:menu&gt;</span>
+            <span class="tag">&lt;mb3:named&gt;</span>Simple Objects<span class="tag">&lt;/mb3:named&gt;</span>
+            <span class="tag">&lt;mb3:section&gt;</span>
+                <span class="tag">&lt;mb3:serviceAction</span> <span class="attribute-name">objectType</span>=<span class="string"><span class="delimiter">"</span><span class="content">simple.SimpleObjectMenu</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">listAll</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+                    <span class="tag">&lt;cpt:named&gt;</span>List All<span class="tag">&lt;/cpt:named&gt;</span>
+                <span class="tag">&lt;/mb3:serviceAction&gt;</span>
+                <span class="tag">&lt;mb3:serviceAction</span> <span class="attribute-name">objectType</span>=<span class="string"><span class="delimiter">"</span><span class="content">simple.SimpleObjectMenu</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">findByName</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+                    <span class="tag">&lt;cpt:named&gt;</span>Find By Name<span class="tag">&lt;/cpt:named&gt;</span>
+                <span class="tag">&lt;/mb3:serviceAction&gt;</span>
+                <span class="tag">&lt;mb3:serviceAction</span> <span class="attribute-name">objectType</span>=<span class="string"><span class="delimiter">"</span><span class="content">simple.SimpleObjectMenu</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">create</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+                    <span class="tag">&lt;cpt:named&gt;</span>Create<span class="tag">&lt;/cpt:named&gt;</span>
+                <span class="tag">&lt;/mb3:serviceAction&gt;</span>
+            <span class="tag">&lt;/mb3:section&gt;</span>
+        <span class="tag">&lt;/mb3:menu&gt;</span>
+        <span class="tag">&lt;mb3:menu</span> <span class="attribute-name">unreferencedActions</span>=<span class="string"><span class="delimiter">"</span><span class="content">true</span><span class="delimiter">"</span></span><span class="tag">&gt;</span>
+            <span class="tag">&lt;mb3:named&gt;</span>Other<span class="tag">&lt;/mb3:named&gt;</span>
+        <span class="tag">&lt;/mb3:menu&gt;</span>
+    <span class="tag">&lt;/mb3:primary&gt;</span>
+    <span class="tag">&lt;mb3:secondary&gt;</span>
+        <span class="tag">&lt;mb3:menu&gt;</span>
+            <span class="tag">&lt;mb3:named&gt;</span>Prototyping<span class="tag">&lt;/mb3:named&gt;</span>
+            ...
+    <span class="tag">&lt;/mb3:secondary&gt;</span>
+    <span class="tag">&lt;mb3:tertiary&gt;</span>
+        <span class="tag">&lt;mb3:menu&gt;</span>
+            ...
+        <span class="tag">&lt;/mb3:menu&gt;</span>
+    <span class="tag">&lt;/mb3:tertiary&gt;</span>
+<span class="tag">&lt;/mb3:menuBars&gt;</span></code></pre> 
+           </div> 
+          </div> 
+          <div class="paragraph"> 
+           <p>Note the "Other" menu, with <code>unreferencedActions</code> attribute set to <code>true</code>. For a layout file to be valid there must be exactly one <code>&lt;menu&gt;</code> with this attribute set. Any domain service actions that are not explicitly listed will be placed under this menu.</p> 
           </div> 
          </div> 
-         <div class="colist arabic"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td>specifies the order in which the <code>TableColumnOrderService</code> implementations are called.</td> 
-            </tr> 
-           </tbody>
-          </table> 
+         <div class="sect3"> 
+          <h4 id="_adjusting_the_layout">4.2.2. Adjusting the layout</h4> 
+          <div class="paragraph"> 
+           <p>The downloaded <code>menubars.layout.xml</code> file can be adjusted as necessary, creating new menus and menu sections. Once done, it can be saved in the same package as the <code>AppManifest</code> used to bootstrap the application. Subsequently, the file is then parsed and used when the application is started.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>If running in prototype mode, the file will be dynamically reloaded from the classpath.</p> 
+          </div> 
+          <div class="paragraph"> 
+           <p>Once the application has bootstrapped with a layout file, downloading the "Default" layout (from the prototyping menu) in essence just returns this file.</p> 
+          </div> 
+          <div class="admonitionblock tip"> 
+           <table> 
+            <tbody>
+             <tr> 
+              <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
+              <td class="content"> 
+               <div class="paragraph"> 
+                <p>If, when the application is run, unwanted service actions are shown in the "Other" menu (which you would like to place elsewhere), then download the "Default" layout again. The downloaded file will list out all these domain service actions, so that they can easily be moved elsewhere.</p> 
+               </div> </td> 
+             </tr> 
+            </tbody>
+           </table> 
+          </div> 
          </div> 
         </div> 
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_ugvw_configuration-properties">4. Configuration Properties</h2>
+       <h2 id="_ugvw_configuration-properties">5. Configuration Properties</h2>
        <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
         <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
         <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2273,7 +2422,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>disableDependentChoiceAutoSelection</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>disableDependent</code><br> <code>ChoiceAutoSelection</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code>,<code>false</code><br> (<code><em>false</em></code>)</p></td> 
@@ -2339,7 +2488,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>maxTitleLengthInParentedTables</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>maxTitleLength</code><br> <code>InParentedTables</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock">+ve integer<br> (<code><em>12</em></code>)</p></td> 
@@ -2354,7 +2503,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>maxTitleLengthInStandaloneTables</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>maxTitleLength</code><br> <code>InStandaloneTables</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock">+ve integer,<br> (<code><em>12</em></code>)</p></td> 
@@ -2384,7 +2533,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>preventDoubleClickForFormSubmit</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>preventDoubleClick</code><br> <code>ForFormSubmit</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code>,<code>false</code><br> (<code><em>true</em></code>)</p></td> 
@@ -2399,7 +2548,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>preventDoubleClickForNoArgAction</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>preventDoubleClick</code><br> <code>ForNoArgAction</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code>,<code>false</code><br> (<code><em>true</em></code>)</p></td> 
@@ -2481,7 +2630,7 @@ table.CodeRay td.code>pre{padding:0}
            <td class="tableblock halign-left valign-top">
             <div>
              <div class="paragraph"> 
-              <p><code>isis.viewer.wicket.</code><br> <code>replaceDisabledTagWithReadonlyTag</code></p> 
+              <p><code>isis.viewer.wicket.</code><br> <code>replaceDisabledTag</code>-<br> <code>WithReadonlyTag</code></p> 
              </div>
             </div></td> 
            <td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code>,<code>false</code><br> (<code><em>true</em></code>)</p></td> 
@@ -2699,15 +2848,116 @@ table.CodeRay td.code>pre{padding:0}
              <div class="paragraph"> 
               <p>Whether the WicketSource plugin should be enabled; by default it is not enabled.</p> 
              </div> 
+             <div class="admonitionblock warning"> 
+              <table> 
+               <tbody>
+                <tr> 
+                 <td class="icon"> <i class="fa icon-warning" title="Warning"></i> </td> 
+                 <td class="content"> 
+                  <div class="paragraph"> 
+                   <p>Enabling this setting can significantly slow down rendering performance of the Wicket viewer.</p> 
+                  </div> </td> 
+                </tr> 
+               </tbody>
+              </table> 
+             </div>
+            </div></td> 
+          </tr> 
+         </tbody> 
+        </table> 
+        <div class="paragraph"> 
+         <p>Also:</p> 
+        </div> 
+        <table class="tableblock frame-all grid-all spread"> 
+         <colgroup> 
+          <col style="width: 33.3333%;"> 
+          <col style="width: 16.6666%;"> 
+          <col style="width: 50.0001%;"> 
+         </colgroup> 
+         <thead> 
+          <tr> 
+           <th class="tableblock halign-left valign-top">Property</th> 
+           <th class="tableblock halign-left valign-top">Value<br> (default value)</th> 
+           <th class="tableblock halign-left valign-top">Description</th> 
+          </tr> 
+         </thead> 
+         <tbody> 
+          <tr> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p><code>isis.viewers.</code><br> <code>paged.parented</code></p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">positive integer (12)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Default page size for parented collections (as owned by an object, eg <code>Customer#getOrders()</code>)</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p><code>isis.viewers.</code><br> <code>paged.standalone</code></p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock">positive integer (25)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Default page size for standalone collections (as returned from an action invocation)</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p><code>isis.viewers.</code><br> <code>propertyLayout.</code><br> <code>labelPosition</code></p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><code>TOP</code>, <code>LEFT</code><br> (<code>LEFT</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Default for label position for all properties if not explicitly specified using <a href="../rgant/rgant.html#_rgant-PropertyLayout_labelPosition"><code>@PropertyLayout#labelPosition()</code></a></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>If you want a consistent look-n-feel throughout the app, eg all property labels to the top, then it’d be rather frustrating to have to annotate every property.</p> 
+             </div> 
              <div class="paragraph"> 
-              <p>Prior to <code>1.12.0</code> this was enabled by default for prototyping (not production). However it can significantly slow down rendering, hence the introduction of this configuration setting.</p> 
+              <p>If these are not present then Apache Isis will render according to internal defaults. At the time of writing, this means labels are to the left for all datatypes except multiline strings.</p> 
+             </div>
+            </div></td> 
+          </tr> 
+          <tr> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p><code>isis.viewers.</code><br> <code>collectionLayout.</code><br> <code>defaultView</code></p> 
+             </div>
+            </div></td> 
+           <td class="tableblock halign-left valign-top"><p class="tableblock"><code>hidden</code>, <code>table</code><br> (<code>hidden</code>)</p></td> 
+           <td class="tableblock halign-left valign-top">
+            <div>
+             <div class="paragraph"> 
+              <p>Default for the default view for all (parented) collections if not explicitly specified using <a href="../rgant/rgant.html#_rgant-CollectionLayout_defaultView"><code>@CollectionLayout#defaultView()</code></a></p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>By default the framework renders (parented) collections as "hidden", ie collapsed. These can be overridden on a case-by-case basis using the <a href="../rgant/rgant.html#_rgant-CollectionLayout_defaultView"><code>@CollectionLayout#defaultView()</code></a> or the corresponding <code>&lt;collectionLayout defaultView="…​"&gt;</code> element in the <code>Xxx.layout.xml</code> layout file.</p> 
+             </div> 
+             <div class="paragraph"> 
+              <p>If the majority of collections should be displayed as "table" form, then it is more convenient to specify the default view globally.</p> 
              </div>
             </div></td> 
           </tr> 
          </tbody> 
         </table> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_abbreviating-titles">4.1. Abbreviating/suppressing titles in tables</h3>
+         <h3 id="_ugvw_configuration-properties_abbreviating-titles">5.1. Abbreviating/suppressing titles in tables</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_abbreviating-titles.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2746,7 +2996,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_suppressing-remember-me">4.2. Suppressing 'remember me'</h3>
+         <h3 id="_ugvw_configuration-properties_suppressing-remember-me">5.2. Suppressing 'remember me'</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-remember-me.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2761,7 +3011,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_screenshots_6">4.2.1. Screenshots</h4> 
+          <h4 id="_screenshots_6">5.2.1. Screenshots</h4> 
           <div class="paragraph"> 
            <p>With 'remember me' not suppressed (the default):</p> 
           </div> 
@@ -2780,7 +3030,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_configuration_4">4.2.2. Configuration</h4> 
+          <h4 id="_configuration_4">5.2.2. Configuration</h4> 
           <div class="paragraph"> 
            <p>To suppress the 'remember me' checkbox, add the following configuration flag:</p> 
           </div> 
@@ -2792,7 +3042,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_suppressing-sign-up">4.3. Suppressing 'sign up'</h3>
+         <h3 id="_ugvw_configuration-properties_suppressing-sign-up">5.3. Suppressing 'sign up'</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-sign-up.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2810,7 +3060,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>The 'sign up' link can be suppressed, if required, by setting a configuration flag.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_screenshots_7">4.3.1. Screenshots</h4> 
+          <h4 id="_screenshots_7">5.3.1. Screenshots</h4> 
           <div class="paragraph"> 
            <p>With 'sign up' not suppressed (the default):</p> 
           </div> 
@@ -2829,7 +3079,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_configuration_5">4.3.2. Configuration</h4> 
+          <h4 id="_configuration_5">5.3.2. Configuration</h4> 
           <div class="paragraph"> 
            <p>To suppress the 'sign up' link, add the following configuration flag:</p> 
           </div> 
@@ -2840,14 +3090,14 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_see_also">4.3.3. See also</h4> 
+          <h4 id="_see_also">5.3.3. See also</h4> 
           <div class="paragraph"> 
            <p>The <a href="../ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-password-reset">password reset link</a> can be suppressed in a similar manner.</p> 
           </div> 
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_suppressing-password-reset">4.4. Suppressing 'password reset'</h3>
+         <h3 id="_ugvw_configuration-properties_suppressing-password-reset">5.4. Suppressing 'password reset'</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_suppressing-password-reset.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2865,7 +3115,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>The 'password reset' link can be suppressed, if required, by setting a configuration flag.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_screenshots_8">4.4.1. Screenshots</h4> 
+          <h4 id="_screenshots_8">5.4.1. Screenshots</h4> 
           <div class="paragraph"> 
            <p>With 'password reset' not suppressed (the default):</p> 
           </div> 
@@ -2884,7 +3134,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_configuration_6">4.4.2. Configuration</h4> 
+          <h4 id="_configuration_6">5.4.2. Configuration</h4> 
           <div class="paragraph"> 
            <p>To suppress the 'password reset' link, add the following configuration flag:</p> 
           </div> 
@@ -2898,14 +3148,14 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_see_also_2">4.4.3. See also</h4> 
+          <h4 id="_see_also_2">5.4.3. See also</h4> 
           <div class="paragraph"> 
            <p>The <a href="../ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-sign-up">sign up link</a> can be suppressed in a similar manner.</p> 
           </div> 
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_stripped-wicket-tags">4.5. Stripped Wicket tags</h3>
+         <h3 id="_ugvw_configuration-properties_stripped-wicket-tags">5.5. Stripped Wicket tags</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_stripped-wicket-tags.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -2942,7 +3192,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_configuration-properties_showing-theme-chooser">4.6. Showing a theme chooser</h3>
+         <h3 id="_ugvw_configuration-properties_showing-theme-chooser">5.6. Showing a theme chooser</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties_showing-theme-chooser.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3011,7 +3261,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_ugvw_customisation">5. Customisation</h2>
+       <h2 id="_ugvw_customisation">6. Customisation</h2>
        <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
         <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
         <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3024,7 +3274,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
        </div> 
        <div class="sectionbody"> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_brand-logo">5.1. Brand logo</h3>
+         <h3 id="_ugvw_customisation_brand-logo">6.1. Brand logo</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_brand-logo.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3039,7 +3289,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>By default the Wicket viewer will display the application name top-left in the header menu. This can be changed to display a png logo instead.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_screenshots_9">5.1.1. Screenshots</h4> 
+          <h4 id="_screenshots_9">6.1.1. Screenshots</h4> 
           <div class="paragraph"> 
            <p>The screenshot below shows the Isis addons example <a href="https://github.com/isisaddons/isis-app-todoapp/">todoapp</a> (not ASF) with a 'brand logo' image in its header:</p> 
           </div> 
@@ -3058,7 +3308,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_configuration_7">5.1.2. Configuration</h4> 
+          <h4 id="_configuration_7">6.1.2. Configuration</h4> 
           <div class="paragraph"> 
            <p>In the application-specific subclass of <code>IsisWicketApplication</code>, bind:</p> 
           </div> 
@@ -3110,7 +3360,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_default-theme">5.2. Specifying a default theme</h3>
+         <h3 id="_ugvw_customisation_default-theme">6.2. Specifying a default theme</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_default-theme.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3142,7 +3392,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_welcome-page">5.3. Welcome page</h3>
+         <h3 id="_ugvw_customisation_welcome-page">6.3. Welcome page</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_welcome-page.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3196,7 +3446,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_about-page">5.4. About page</h3>
+         <h3 id="_ugvw_customisation_about-page">6.4. About page</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_about-page.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3211,7 +3461,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>Isis' Wicket viewer has an About page that, by default, will provide a dump of the JARs that make up the webapp. This page will also show the manifest attributes of the WAR archive itself, if there are any. One of these attributes may also be used as the application version number.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_screenshot">5.4.1. Screenshot</h4> 
+          <h4 id="_screenshot">6.4.1. Screenshot</h4> 
           <div class="paragraph"> 
            <p>Here’s what the About page looks like with this configuration added:</p> 
           </div> 
@@ -3247,7 +3497,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_configuration_8">5.4.2. Configuration</h4> 
+          <h4 id="_configuration_8">6.4.2. Configuration</h4> 
           <div class="sect4"> 
            <h5 id="_adding_attributes_to_the_war_s_manifest">Adding attributes to the WAR’s manifest</h5> 
            <div class="paragraph"> 
@@ -3340,7 +3590,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_tweaking-css-classes">5.5. Tweaking CSS classes</h3>
+         <h3 id="_ugvw_customisation_tweaking-css-classes">6.5. Tweaking CSS classes</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_tweaking-css-classes.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3365,7 +3615,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>These customizations should generally be added to <a href="../rgcfg/rgcfg.html#_rgcfg_application-specific_application-css"><code>application.css</code></a>; this file is included by default in every webpage served up by the Wicket viewer.</p> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_individual_members">5.5.1. Individual members</h4> 
+          <h4 id="_individual_members">6.5.1. Individual members</h4> 
           <div class="paragraph"> 
            <p>For example, the <code>ToDoItem</code> object of the Isis addons example <a href="https://github.com/isisaddons/isis-app-todoapp/">todoapp</a> (not ASF) has a <code>notes</code> property. The HTML for this will be something like:</p> 
           </div> 
@@ -3405,7 +3655,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="_custom_css_styles">5.5.2. Custom CSS styles</h4> 
+          <h4 id="_custom_css_styles">6.5.2. Custom CSS styles</h4> 
           <div class="paragraph"> 
            <p>The above technique works well if you know the class member to target, but you might instead want to apply a custom style to a set of members. For this, you can use the <code>@CssClass</code>.</p> 
           </div> 
@@ -3447,7 +3697,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           </div> 
          </div> 
          <div class="sect3"> 
-          <h4 id="__ugvw_customisation_tweaking-css-classes_columns-in-tables">5.5.3. Table columns</h4> 
+          <h4 id="__ugvw_customisation_tweaking-css-classes_columns-in-tables">6.5.3. Table columns</h4> 
           <div class="paragraph"> 
            <p>Sometimes you may want to apply styling to specific columns of tables. For example, you might want to adjust width so that for certain properties have more (or less) room than they otherwise would; or you might want to hide the column completely. This also applies to the initial icon/title column.</p> 
           </div> 
@@ -3615,7 +3865,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_cheap-n-cheerful-theme">5.6. Cheap-n-cheerful theme</h3>
+         <h3 id="_ugvw_customisation_cheap-n-cheerful-theme">6.6. Cheap-n-cheerful theme</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_cheap-n-cheerful-theme.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3657,7 +3907,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_using-different-css-file">5.7. Using a different CSS file</h3>
+         <h3 id="_ugvw_customisation_using-different-css-file">6.7. Using a different CSS file</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_using-different-css-file.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3698,7 +3948,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_custom-javascript">5.8. Custom Javascript</h3>
+         <h3 id="_ugvw_customisation_custom-javascript">6.8. Custom Javascript</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_custom-javascript.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3757,7 +4007,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_auto-refresh">5.9. Auto-refresh page</h3>
+         <h3 id="_ugvw_customisation_auto-refresh">6.9. Auto-refresh page</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_auto-refresh.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3807,7 +4057,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
          </div> 
         </div> 
         <div class="sect2"> 
-         <h3 id="_ugvw_customisation_request-parameters">5.10. Embedded View</h3>
+         <h3 id="_ugvw_customisation_request-parameters">6.10. Embedded View</h3>
          <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
           <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_customisation_request-parameters.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
           <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
@@ -3825,7 +4075,7 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=8</code></pre>
           <p>Currently this support consists simply of being able

<TRUNCATED>