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 2016/02/10 17:12:38 UTC

[1/5] isis git commit: ISIS-993: moving around and renaming the applib schema files for layout

Repository: isis
Updated Branches:
  refs/heads/ISIS-993 78943221c -> 67b6e05e0


http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 17c6fc9..91d93f6 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -31,7 +31,7 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.commons.lang.Closure;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index 57bc89c..3c12319 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -27,8 +27,8 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
index 6b7dfcc..d83915c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
@@ -22,8 +22,8 @@ package org.apache.isis.viewer.wicket.ui.components.entity.selector.links;
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCGrid;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
index 7137a11..59ef10d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
@@ -22,8 +22,8 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/Util.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/Util.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/Util.java
index 90a84f0..e7bc76b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/Util.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/Util.java
@@ -23,8 +23,8 @@ import com.google.common.base.Strings;
 
 import org.apache.wicket.MarkupContainer;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Element;
-import org.apache.isis.applib.layout.bootstrap3.BS3ElementAbstract;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Element;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3ElementAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
 public class Util {

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
index e33c5fd..598dad3 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
@@ -20,7 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.clearfix;
 
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3ClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
index 3332e1c..93198b2 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
@@ -32,14 +32,14 @@ import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.bootstrap3.BS3TabGroup;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
index c54c58f..7aac0fe 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
@@ -21,10 +21,10 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.row;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3ClearFix;
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.bootstrap3.BS3RowContent;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3RowContent;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
index e1bf0d2..b350b6c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
@@ -29,8 +29,8 @@ import org.apache.wicket.extensions.markup.html.tabs.TabbedPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.util.ScopedSessionAttribute;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
index 93f85ac..61c81e7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
@@ -3,8 +3,8 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.tabs;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
 import org.apache.isis.viewer.wicket.model.hints.HasUiHintDisambiguator;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs3.Util;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropUtil.java
index 9079391..f487ef0 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropUtil.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCColumn;
-import org.apache.isis.applib.layout.common.FieldSet;
+import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/collections/EntityCollectionsPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/collections/EntityCollectionsPanel.java
index b89009b..6f36549 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/collections/EntityCollectionsPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/collections/EntityCollectionsPanel.java
@@ -31,7 +31,7 @@ import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCColumn;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/columns/EntityColumn.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/columns/EntityColumn.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/columns/EntityColumn.java
index aaacdef..2abe0a6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/columns/EntityColumn.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/columns/EntityColumn.java
@@ -31,8 +31,8 @@ import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCColumn;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index e2b01db..b29bf94 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -29,7 +29,7 @@ import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.Strings;
 
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-FC.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-FC.xml b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-FC.xml
deleted file mode 100644
index f92597a..0000000
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-FC.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<grid xsi:schemaLocation="http://isis.apache.org/schema/applib/layout/common http://isis.apache.org/schema/applib/layout/common/common.xsd http://isis.apache.org/schema/applib/layout/fixedcols http://isis.apache.org/schema/applib/layout/fixedcols/fixedcols.xsd" xmlns="http://isis.apache.org/schema/applib/layout/fixedcols" xmlns:c="http://isis.apache.org/schema/applib/layout/common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-
-    <left span="0">
-    </left>
-    <tabGroup>
-        <tab name="Properties">
-            <left span="12">
-                <c:fieldSet name="General">
-                    <c:action id="delete" position="PANEL_DROPDOWN"/>
-                    <c:property id="name" labelPosition="TOP">
-                        <c:action id="updateName">
-                            <c:describedAs>This allows the name to be updated</c:describedAs>
-                        </c:action>
-                    </c:property>
-                </c:fieldSet>
-            </left>
-        </tab>
-        <tab name="Metadata">
-            <left span="12">
-                <c:fieldSet name="Foo">
-                    <c:action id="downloadJdoMetadata" position="PANEL"/>
-                    <c:action id="downloadLayoutXml" position="PANEL"/>
-                    <c:property id="versionSequence"/>
-                </c:fieldSet>
-
-            </left>
-        </tab>
-    </tabGroup>
-    <tabGroup>
-        <tab name="Collections">
-            <left span="12">
-                <c:collection id="similarTo" defaultView="table"/>
-            </left>
-            <right span="6">
-                <c:collection id="others" defaultView="table"/>
-            </right>
-        </tab>
-    </tabGroup>
-</grid>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.json
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.json b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.json
deleted file mode 100644
index a8f1d31..0000000
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.json
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- *  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.
- */
-{
-    "columns": [
-        {
-            "span": 6,
-            "memberGroups": {
-                "General": {
-                    "members": {
-                        "name": {
-                            "propertyLayout": {
-                                "named": "Name",
-                                "namedEscaped": false
-                            },
-                            "actions": {
-                                "updateName": {
-                                    "actionLayout": {
-                                        "position": "BOTTOM"
-                                    }
-                                }
-                            }
-                        }
-                    }
-                },
-                "Metadata": {
-                    "members": {
-                        "versionSequence": {
-                            "propertyLayout": {
-                                "named": "Version"
-                            },
-                            "actions": {
-                                "downloadJdoMetadata": {
-                                    "actionLayout": {
-                                        "position": "PANEL_DROPDOWN"
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        {
-            "span": 0,
-            "memberGroups": {}
-        },
-        {
-            "span": 0,
-            "memberGroups": {}
-        },
-        {
-            "span": 6,
-            "collections": {}
-        }
-    ],
-    "actions": {}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
index 9652100..47529e2 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
@@ -1,54 +1,21 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/schema/applib/layout/common http://isis.apache.org/schema/applib/layout/common/common.xsd http://isis.apache.org/schema/applib/layout/bootstrap3 http://isis.apache.org/schema/applib/layout/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/schema/applib/layout/common" xmlns:bs3="http://isis.apache.org/schema/applib/layout/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-
-<!--
-    <bs3:row>
-        <bs3:col span="8" unreferencedActions="false">
-            <c:domainObject/>
-        </bs3:col>
-    </bs3:row>
-
-    <bs3:row>
-        <bs3:col span="12">
-            <bs3:tabGroup>
-                <bs3:tab name="Properties">
-                    <bs3:row>
-                        <bs3:col span="6">
-                            <c:fieldSet name="General" unreferencedProperties="true" unreferencedActions="true"/>
-                        </bs3:col>
-                        <bs3:col span="6">
-                            <c:fieldSet name="Metadata">
-                                <c:action id="downloadJdoMetadata"/>
-                                <c:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
-                                <c:property id="versionSequence"/>
-                            </c:fieldSet>
-                        </bs3:col>
-                    </bs3:row>
-                </bs3:tab>
-            </bs3:tabGroup>
-        </bs3:col>
-    </bs3:row>
-    <bs3:row>
-        <bs3:col span="12">
-            <bs3:tabGroup unreferencedCollections="true"/>
-        </bs3:col>
-    </bs3:row>
--->
+<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:c="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
     <bs3:row>
-        <bs3:col span="12" unreferencedActions="false">
+        <bs3:col span="12" unreferencedActions="true">
             <c:domainObject/>
         </bs3:col>
     </bs3:row>
     <bs3:row>
         <bs3:col span="6">
             <bs3:tabGroup>
-                <bs3:tab name="General" cssClass="bar">
-                    <bs3:row cssClass="foo">
+                <bs3:tab name="General">
+                    <bs3:row>
                         <bs3:col span="12">
-                            <c:fieldSet name="Properties" unreferencedActions="true">
+                            <c:fieldSet name="Properties">
                                 <c:property id="name"/>
+                            </c:fieldSet>
+                            <c:fieldSet name="Misc">
                                 <c:property id="versionSequence"/>
                             </c:fieldSet>
                         </bs3:col>
@@ -67,23 +34,6 @@
         </bs3:col>
         <bs3:col span="6">
             <bs3:tabGroup  unreferencedCollections="true">
-                <bs3:tab name="Others">
-                    <bs3:row>
-                        <bs3:col span="12">
-                            <c:collection id="others" defaultView="table"/>
-                        </bs3:col>
-                    </bs3:row>
-                </bs3:tab>
-            </bs3:tabGroup>
-            <bs3:tabGroup>
-                <bs3:tab name="Similar To">
-                    <bs3:row>
-                        <bs3:col span="12">
-
-                        </bs3:col>
-                    </bs3:row>
-                </bs3:tab>
-
             </bs3:tabGroup>
         </bs3:col>
     </bs3:row>


[3/5] isis git commit: ISIS-993: moving around and renaming the applib schema files for layout

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
new file mode 100644
index 0000000..6372cfb
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface ActionLayoutDataOwner extends Owner {
+    List<ActionLayoutData> getActions();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
new file mode 100644
index 0000000..813c8c1
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
@@ -0,0 +1,268 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.base.Function;
+
+import org.apache.isis.applib.annotation.Where;
+
+/**
+ * Describes the layout of a single collection, broadly corresponds to the {@link org.apache.isis.applib.annotation.CollectionLayout} annotation.
+ *
+ * <p>
+ *     Note that {@link org.apache.isis.applib.annotation.CollectionLayout#render()} is omitted because
+ *     {@link #defaultView} is its replacement.
+ * </p>
+ */
+@XmlRootElement(
+        name = "collection"
+)
+@XmlType(
+        name = "collection"
+        , propOrder = {
+                "named"
+                ,"describedAs"
+                ,"sortedBy"
+                , "actions"
+                , "metadataError"
+        }
+)
+public class CollectionLayoutData
+        implements MemberRegion<CollectionLayoutDataOwner>,
+                   ActionLayoutDataOwner,
+                   Serializable,
+                   HasCssClass, HasDescribedAs, HasHidden, HasNamed {
+
+    private static final long serialVersionUID = 1L;
+
+    public CollectionLayoutData() {
+    }
+    public CollectionLayoutData(final String id) {
+        setId(id);
+    }
+
+
+    private String id;
+
+    /**
+     * Collection identifier, being the getter method without "get" prefix, first letter lower cased.
+     */
+    @XmlAttribute(required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private String defaultView;
+
+    /**
+     * Typically <code>table</code> or <code>hidden</code>, but could be any other named view that is configured and
+     * appropriate, eg <code>gmap3</code> or <code>fullcalendar2</code>.
+     */
+    @XmlAttribute(required = false)
+    public String getDefaultView() {
+        return defaultView;
+    }
+
+    public void setDefaultView(String defaultView) {
+        this.defaultView = defaultView;
+    }
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+    private Integer paged;
+
+    @XmlAttribute(required = false)
+    public Integer getPaged() {
+        return paged;
+    }
+
+    public void setPaged(Integer paged) {
+        this.paged = paged;
+    }
+
+
+
+    private String sortedBy;
+
+    @XmlElement(required = false)
+    public String getSortedBy() {
+        return sortedBy;
+    }
+
+    public void setSortedBy(String sortedBy) {
+        this.sortedBy = sortedBy;
+    }
+
+
+
+    private List<ActionLayoutData> actions;
+
+    // no wrapper
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+
+    private CollectionLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public CollectionLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final CollectionLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+
+
+    public static class Functions {
+        private Functions(){}
+
+        public static Function<CollectionLayoutData, String> id() {
+            return new Function<CollectionLayoutData, String>() {
+                @Override
+                public String apply(final CollectionLayoutData metadata) {
+                    return metadata.getId();
+                }
+            };
+        }
+    }
+
+    @Override public String toString() {
+        return "CollectionLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
new file mode 100644
index 0000000..b4ecb19
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
@@ -0,0 +1,26 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface CollectionLayoutDataOwner extends MemberRegionOwner {
+
+    List<CollectionLayoutData> getCollections();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
new file mode 100644
index 0000000..276b0a3
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
@@ -0,0 +1,208 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+
+/**
+ * Describes the layout of the title and icon of a domain object, broadly corresponding to {@link org.apache.isis.applib.annotation.DomainObjectLayout}.
+ */
+@XmlRootElement(
+        name = "domainObject"
+)
+@XmlType(
+        name = "domainObject"
+        , propOrder = {
+            "named"
+            , "describedAs"
+            , "plural"
+            , "metadataError"
+        }
+)
+public class DomainObjectLayoutData implements Serializable, Owned<DomainObjectLayoutDataOwner>,
+        HasBookmarking, HasCssClass, HasCssClassFa, HasDescribedAs, HasNamed {
+
+    private static final long serialVersionUID = 1L;
+
+    public DomainObjectLayoutData() {
+    }
+
+
+    private BookmarkPolicy bookmarking;
+
+    @Override
+    @XmlAttribute(required = false)
+    public BookmarkPolicy getBookmarking() {
+        return bookmarking;
+    }
+
+    @Override
+    public void setBookmarking(BookmarkPolicy bookmarking) {
+        this.bookmarking = bookmarking;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String cssClassFa;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClassFa() {
+        return cssClassFa;
+    }
+
+    @Override
+    public void setCssClassFa(String cssClassFa) {
+        this.cssClassFa = cssClassFa;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
+
+    @Override
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+        return cssClassFaPosition;
+    }
+
+    @Override
+    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
+        this.cssClassFaPosition = cssClassFaPosition;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+
+    private String plural;
+
+    @XmlElement(required = false)
+    public String getPlural() {
+        return plural;
+    }
+
+    public void setPlural(String plural) {
+        this.plural = plural;
+    }
+
+
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    private DomainObjectLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public DomainObjectLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final DomainObjectLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
new file mode 100644
index 0000000..74c6a25
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface DomainObjectLayoutDataOwner extends Owner {
+
+    DomainObjectLayoutData getDomainObject();
+    void setDomainObject(DomainObjectLayoutData domainObjectLayoutData);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
new file mode 100644
index 0000000..e2533da
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
@@ -0,0 +1,223 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.annotation.Nullable;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+
+/**
+ * A {@link MemberRegion region} of the page containing a set of
+ * related {@link PropertyLayoutData properties} and associated
+ * {@link ActionLayoutData actions}.
+ */
+@XmlRootElement(
+        name = "fieldSet"
+)
+@XmlType(
+        name = "fieldSet"
+        , propOrder = {
+                "name"
+                , "actions"
+                , "properties"
+                , "metadataError"
+        }
+)
+public class FieldSet
+        implements MemberRegion<FieldSetOwner>,
+                   ActionLayoutDataOwner,
+                   Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    public FieldSet() {
+    }
+
+    public FieldSet(final String name) {
+        setName(name);
+    }
+
+
+
+    private String id;
+
+    /**
+     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
+     */
+    @XmlAttribute(required = false)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+
+
+    private Boolean unreferencedActions;
+
+    /**
+     * Whether this fieldset should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any layout must have precisely one fieldset or {@link BS3Col col} that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedActions() {
+        return unreferencedActions;
+    }
+
+    public void setUnreferencedActions(final Boolean unreferencedActions) {
+        this.unreferencedActions = unreferencedActions;
+    }
+
+
+    private Boolean unreferencedProperties;
+    /**
+     * Whether this fieldset should be used to hold any unreferenced properties (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any grid layout must have precisely one fieldset that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedProperties() {
+        return unreferencedProperties;
+    }
+
+    public void setUnreferencedProperties(final Boolean unreferencedProperties) {
+        this.unreferencedProperties = unreferencedProperties;
+    }
+
+
+
+
+    private String name;
+
+    /**
+     * Corresponds to the {@link MemberOrder#name()} (when applied to properties).
+     */
+    @XmlAttribute(required = true)
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+
+    private List<ActionLayoutData> actions = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+
+    private List<PropertyLayoutData> properties = Lists.newArrayList();
+
+    // no wrapper; required=false because may be auto-generated
+    @XmlElement(name = "property", required = false)
+    public List<PropertyLayoutData> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(List<PropertyLayoutData> properties) {
+        this.properties = properties;
+    }
+
+
+    private FieldSetOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public FieldSetOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final FieldSetOwner owner) {
+        this.owner = owner;
+    }
+
+
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    public static class Util {
+        private Util(){}
+        public static Function<? super FieldSet, String> nameOf() {
+            return new Function<FieldSet, String>() {
+                @Nullable @Override
+                public String apply(@Nullable final FieldSet fieldSet) {
+                    return fieldSet.getName();
+                }
+            };
+        }
+    }
+
+    @Override public String toString() {
+        return "FieldSet{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
new file mode 100644
index 0000000..c6a0942
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface FieldSetOwner extends MemberRegionOwner {
+    List<FieldSet> getFieldSets();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/Grid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Grid.java
new file mode 100644
index 0000000..754a2b1
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Grid.java
@@ -0,0 +1,84 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.LinkedHashMap;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.layout.GridService;
+
+/**
+ * All top-level page layout classes should implement this interface.
+ *
+ * <p>
+ *     It is used by the {@link GridService} as a common based type for any layouts read in from XML.
+ * </p>
+ */
+public interface Grid {
+
+    @Programmatic
+    Class<?> getDomainClass();
+
+    @Programmatic
+    void setDomainClass(final Class<?> domainClass);
+
+    @Programmatic
+    boolean isNormalized();
+
+    @Programmatic
+    void setNormalized(final boolean normalized);
+
+    @Programmatic
+    LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById();
+
+    @Programmatic
+    LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById();
+
+    @Programmatic
+    LinkedHashMap<String, ActionLayoutData> getAllActionsById();
+
+    interface Visitor {
+        void visit(final DomainObjectLayoutData domainObjectLayoutData);
+
+        void visit(final ActionLayoutData actionLayoutData);
+
+        void visit(final PropertyLayoutData propertyLayoutData);
+
+        void visit(final CollectionLayoutData collectionLayoutData);
+
+        void visit(final FieldSet fieldSet);
+    }
+
+    class VisitorAdapter implements Visitor {
+        @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
+        }
+        @Override public void visit(final ActionLayoutData actionLayoutData) {
+        }
+        @Override public void visit(final PropertyLayoutData propertyLayoutData) {
+        }
+        @Override public void visit(final CollectionLayoutData collectionLayoutData) {
+        }
+        @Override public void visit(final FieldSet fieldSet) {
+        }
+    }
+
+    @Programmatic
+    void visit(final Grid.Visitor visitor);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/GridAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/GridAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/GridAbstract.java
new file mode 100644
index 0000000..e097756
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/GridAbstract.java
@@ -0,0 +1,181 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.services.layout.GridService;
+
+/**
+ * All top-level page layout classes should implement this interface.
+ *
+ * <p>
+ *     It is used by the {@link GridService} as a common based type for any layouts read in from XML.
+ * </p>
+ */
+@XmlTransient // ignore this class
+public abstract class GridAbstract implements Grid {
+
+
+    private Class<?> domainClass;
+
+    @Programmatic
+    @XmlTransient
+    public Class<?> getDomainClass() {
+        return domainClass;
+    }
+
+    @Programmatic
+    public void setDomainClass(final Class<?> domainClass) {
+        this.domainClass = domainClass;
+    }
+
+
+
+    private boolean normalized;
+
+    @Programmatic
+    @XmlTransient
+    public boolean isNormalized() {
+        return normalized;
+    }
+
+    @Programmatic
+    public void setNormalized(final boolean normalized) {
+        this.normalized = normalized;
+    }
+
+
+    /**
+     * Convenience for subclasses.
+     */
+    protected void traverseActions(
+            final ActionLayoutDataOwner actionLayoutDataOwner,
+            final GridAbstract.Visitor visitor) {
+        final List<ActionLayoutData> actionLayoutDatas = actionLayoutDataOwner.getActions();
+        if(actionLayoutDatas == null) {
+            return;
+        }
+        for (final ActionLayoutData actionLayoutData : Lists.newArrayList(actionLayoutDatas)) {
+            actionLayoutData.setOwner(actionLayoutDataOwner);
+            visitor.visit(actionLayoutData);
+        }
+    }
+
+
+    /**
+     * Convenience for subclasses.
+     */
+    protected void traverseFieldSets(final FieldSetOwner fieldSetOwner, final GridAbstract.Visitor visitor) {
+        final List<FieldSet> fieldSets = fieldSetOwner.getFieldSets();
+        for (FieldSet fieldSet : Lists.newArrayList(fieldSets)) {
+            fieldSet.setOwner(fieldSetOwner);
+            visitor.visit(fieldSet);
+            traverseActions(fieldSet, visitor);
+            final List<PropertyLayoutData> properties = fieldSet.getProperties();
+            for (final PropertyLayoutData property : Lists.newArrayList(properties)) {
+                property.setOwner(fieldSet);
+                visitor.visit(property);
+                traverseActions(property, visitor);
+            }
+        }
+    }
+
+
+    /**
+     * Convenience for subclasses.
+     */
+    protected void traverseCollections(
+            final CollectionLayoutDataOwner owner, final GridAbstract.Visitor visitor) {
+        final List<CollectionLayoutData> collections = owner.getCollections();
+        for (CollectionLayoutData collection : Lists.newArrayList(collections)) {
+            collection.setOwner(owner);
+            visitor.visit(collection);
+            traverseActions(collection, visitor);
+        }
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById() {
+        final LinkedHashMap<String, PropertyLayoutData> propertiesById = Maps.newLinkedHashMap();
+        visit(new BS3Grid.VisitorAdapter() {
+            public void visit(final PropertyLayoutData propertyLayoutData) {
+                propertiesById.put(propertyLayoutData.getId(), propertyLayoutData);
+            }
+        });
+        return propertiesById;
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById() {
+        final LinkedHashMap<String, CollectionLayoutData> collectionsById = Maps.newLinkedHashMap();
+
+        visit(new BS3Grid.VisitorAdapter() {
+            @Override
+            public void visit(final CollectionLayoutData collectionLayoutData) {
+                collectionsById.put(collectionLayoutData.getId(), collectionLayoutData);
+            }
+        });
+        return collectionsById;
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, ActionLayoutData> getAllActionsById() {
+        final LinkedHashMap<String, ActionLayoutData> actionsById = Maps.newLinkedHashMap();
+
+        visit(new BS3Grid.VisitorAdapter() {
+            @Override
+            public void visit(final ActionLayoutData actionLayoutData) {
+                actionsById.put(actionLayoutData.getId(), actionLayoutData);
+            }
+        });
+        return actionsById;
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, FieldSet> getAllFieldSetsByName() {
+        final LinkedHashMap<String, FieldSet> fieldSetsByName = Maps.newLinkedHashMap();
+
+        visit(new BS3Grid.VisitorAdapter() {
+            @Override
+            public void visit(final FieldSet fieldSet) {
+                fieldSetsByName.put(fieldSet.getName(), fieldSet);
+            }
+        });
+        return fieldSetsByName;
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasBookmarking.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasBookmarking.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasBookmarking.java
new file mode 100644
index 0000000..b4750cf
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasBookmarking.java
@@ -0,0 +1,14 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasBookmarking {
+    @XmlAttribute(required = false) BookmarkPolicy getBookmarking();
+
+    void setBookmarking(BookmarkPolicy bookmarking);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClass.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClass.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClass.java
new file mode 100644
index 0000000..3126d09
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClass.java
@@ -0,0 +1,12 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasCssClass {
+    @XmlAttribute(required = false) String getCssClass();
+
+    void setCssClass(String cssClass);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClassFa.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClassFa.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClassFa.java
new file mode 100644
index 0000000..f6111d8
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasCssClassFa.java
@@ -0,0 +1,16 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasCssClassFa {
+    @XmlAttribute(required = false) String getCssClassFa();
+
+    void setCssClassFa(String cssClassFa);
+
+    @XmlAttribute(required = false) org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition();
+
+    void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasDescribedAs.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasDescribedAs.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasDescribedAs.java
new file mode 100644
index 0000000..44e4b5d
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasDescribedAs.java
@@ -0,0 +1,12 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasDescribedAs {
+    @XmlElement(required = false) String getDescribedAs();
+
+    void setDescribedAs(String describedAs);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasHidden.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasHidden.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasHidden.java
new file mode 100644
index 0000000..935357a
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasHidden.java
@@ -0,0 +1,14 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.isis.applib.annotation.Where;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasHidden {
+    @XmlAttribute(required = false) Where getHidden();
+
+    void setHidden(Where hidden);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
new file mode 100644
index 0000000..3099496
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
@@ -0,0 +1,17 @@
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Created by Dan on 10/02/2016.
+ */
+public interface HasNamed {
+    @XmlElement(required = false) String getNamed();
+
+    void setNamed(String named);
+
+    @XmlAttribute(required = false) Boolean getNamedEscaped();
+
+    void setNamedEscaped(Boolean namedEscaped);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
new file mode 100644
index 0000000..f44efe2
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
@@ -0,0 +1,33 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+/**
+ * Represents an area on the page containing one or several related members.
+ *
+ * <p>
+ *     Implementations include a <code>FieldSet</code> (containing a number
+ *     of properties and their actions), and a <code>CollectionLayoutData</code>
+ *     (containing a single collection and associated actions)
+ * </p>
+ */
+public interface MemberRegion<T extends MemberRegionOwner> extends Owned<T> {
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
new file mode 100644
index 0000000..a32526a
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
@@ -0,0 +1,23 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface MemberRegionOwner extends Owner {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
new file mode 100644
index 0000000..807fe54
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
@@ -0,0 +1,23 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface Owned<T extends Owner> {
+    T getOwner();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
new file mode 100644
index 0000000..37299cf
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
@@ -0,0 +1,24 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface Owner {
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
new file mode 100644
index 0000000..cf09ced
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
@@ -0,0 +1,252 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.Where;
+
+/**
+ * Describes the layout of a single property, broadly corresponds to the {@link org.apache.isis.applib.annotation.PropertyLayout} annotation.
+ */
+@XmlRootElement(
+        name = "property"
+)
+@XmlType(
+        name = "property"
+        , propOrder = {
+                "named"
+                , "describedAs"
+                , "actions"
+                , "metadataError"
+        }
+)
+public class PropertyLayoutData
+        implements ActionLayoutDataOwner,
+                   Serializable,
+                   Owned<FieldSet>,
+                   HasCssClass, HasDescribedAs, HasHidden, HasNamed {
+
+    private static final long serialVersionUID = 1L;
+
+    public PropertyLayoutData() {
+    }
+
+    public PropertyLayoutData(final String id) {
+        this.id = id;
+    }
+
+    private String id;
+
+    /**
+     * Property identifier, being the getter method without "get" or "is" prefix, first letter lower cased.
+     */
+    @XmlAttribute(required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+    private LabelPosition labelPosition;
+
+    @XmlAttribute(required = false)
+    public LabelPosition getLabelPosition() {
+        return labelPosition;
+    }
+
+    public void setLabelPosition(LabelPosition labelPosition) {
+        this.labelPosition = labelPosition;
+    }
+
+
+    private Integer multiLine;
+
+    @XmlAttribute(required = false)
+    public Integer getMultiLine() {
+        return multiLine;
+    }
+
+    public void setMultiLine(Integer multiLine) {
+        this.multiLine = multiLine;
+    }
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+    private Boolean renderedAsDayBefore;
+
+    @XmlAttribute(required = false)
+    public Boolean getRenderedAsDayBefore() {
+        return renderedAsDayBefore;
+    }
+
+    public void setRenderedAsDayBefore(Boolean renderedAsDayBefore) {
+        this.renderedAsDayBefore = renderedAsDayBefore;
+    }
+
+
+    private Integer typicalLength;
+
+    @XmlAttribute(required = false)
+    public Integer getTypicalLength() {
+        return typicalLength;
+    }
+
+    public void setTypicalLength(Integer typicalLength) {
+        this.typicalLength = typicalLength;
+    }
+
+
+
+    private List<ActionLayoutData> actions;
+
+    // no wrapper
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+    private FieldSet owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public FieldSet getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final FieldSet owner) {
+        this.owner = owner;
+    }
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+    @Override
+    public String toString() {
+        return "PropertyLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/package-info.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/package-info.java
new file mode 100644
index 0000000..3b17836
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/package-info.java
@@ -0,0 +1,36 @@
+/*
+ *  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.
+ */
+
+/**
+ * The classes in this package provide layout metadata for a domain object's properties, collections and actions - the
+ * &quot;building blocks&quot; which then must be arranged into some sort of layout.
+ *
+ * <p>
+ *     The <code>bootstrap3</code> and <code>fixedcols</code> packages both provide different ways of doing the layout,
+ *     and both reference the classes in this package.
+ * </p>
+ *
+ */
+@javax.xml.bind.annotation.XmlSchema(
+        namespace = "http://isis.apache.org/applib/layout/component",
+        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
+        // specifying the location seems to cause JaxbService#toXsd() to not generate the schema; not sure why...
+        //, location = ..."http://isis.apache.org/schema/metamodel/layout/common/common.xsd"
+)
+package org.apache.isis.applib.layout.component;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
new file mode 100644
index 0000000..acf64e9
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
@@ -0,0 +1,24 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+public abstract class BS3ClearFix extends BS3RowContent {
+
+    public abstract String toCssClass();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
new file mode 100644
index 0000000..817b685
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
@@ -0,0 +1,39 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(
+        name = "clearFixHidden"
+)
+@XmlType(
+        name = "clearFixHidden"
+)
+public class BS3ClearFixHidden extends BS3ClearFix {
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public String toCssClass() {
+        return "clearfix hidden-" + getSize().toCssClassFragment();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
new file mode 100644
index 0000000..bb83ca5
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
@@ -0,0 +1,59 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(
+        name = "clearFixVisible"
+)
+@XmlType(
+        name = "clearFixVisible"
+)
+public class BS3ClearFixVisible extends BS3ClearFix {
+
+    private static final long serialVersionUID = 1L;
+
+    public enum CssDisplay {
+        BLOCK,
+        INLINE,
+        INLINE_BLOCK
+    }
+
+    private CssDisplay cssDisplay;
+
+
+    @XmlAttribute(required = true)
+    public CssDisplay getCssDisplay() {
+        return cssDisplay;
+    }
+
+    public void setCssDisplay(final CssDisplay cssDisplay) {
+        this.cssDisplay = cssDisplay;
+    }
+
+
+    @Override
+    public String toCssClass() {
+        return "clearfix visible-" + getSize().toCssClassFragment() + "-" + getCssClass().toLowerCase().replace('_', '-');
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
new file mode 100644
index 0000000..bc289d8
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
@@ -0,0 +1,257 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutDataOwner;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.FieldSetOwner;
+
+/**
+ * A column within a row which, depending on its {@link #getSpan()}, could be as narrow as 1/12th of the page's width, all the way up to spanning the entire page.
+ *
+ * <p>
+ *     Pretty much other content can be contained within a column, though most commonly it will be {@link FieldSet fieldset}s
+ *     (a group of properties) or {@link CollectionLayoutData collection}s.  However, columns can also be used to
+ *     contain further {@link BS3Row row}s (creating a nested grid of rows/cols/rows/cols) and {@link BS3TabGroup tabgroup}s.
+ * </p>
+ *
+ * <p>
+ *     It is rendered as a (eg) &lt;div class=&quot;col-md-4 ...&quot;&gt;
+ * </p>
+ */
+@XmlRootElement(
+        name = "col"
+)
+@XmlType(
+        name = "col"
+        , propOrder = {
+            "domainObject",
+            "actions",
+            "rows",
+            "tabGroups",
+            "fieldSets",
+            "collections",
+            "metadataError"
+        }
+)
+public class BS3Col extends BS3RowContent
+        implements ActionLayoutDataOwner, BS3TabGroupOwner, BS3RowOwner, FieldSetOwner, HasCssId,
+        CollectionLayoutDataOwner, DomainObjectLayoutDataOwner {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    private String id;
+
+    /**
+     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
+     */
+    @XmlAttribute(required = false)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+
+    private int span;
+
+    @XmlAttribute(required = true)
+    public int getSpan() {
+        return span;
+    }
+
+    public void setSpan(final int span) {
+        this.span = span;
+    }
+
+
+    private Boolean unreferencedActions;
+
+    /**
+     * Whether this column should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any layout must have precisely one column or {@link FieldSet} that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedActions() {
+        return unreferencedActions;
+    }
+
+    public void setUnreferencedActions(final Boolean unreferencedActions) {
+        this.unreferencedActions = unreferencedActions;
+    }
+
+
+    private Boolean unreferencedCollections;
+    /**
+     * Whether this column should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any layout must have precisely one column or {@link BS3TabGroup tabgroup} that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedCollections() {
+        return unreferencedCollections;
+    }
+
+    public void setUnreferencedCollections(final Boolean unreferencedCollections) {
+        this.unreferencedCollections = unreferencedCollections;
+    }
+
+
+
+
+
+    private DomainObjectLayoutData domainObject;
+
+    /**
+     * Whether to show the object's icon and title.
+     */
+    @XmlElementRef(type=DomainObjectLayoutData.class, name="domainObject", required = false)
+    public DomainObjectLayoutData getDomainObject() {
+        return domainObject;
+    }
+
+    public void setDomainObject(final DomainObjectLayoutData domainObjectLayoutData) {
+        this.domainObject = domainObjectLayoutData;
+    }
+
+
+
+    private List<ActionLayoutData> actions = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElementRef(type = ActionLayoutData.class, name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    public void setActions(final List<ActionLayoutData> actions) {
+        this.actions = actions;
+    }
+
+
+
+    private List<BS3Row> rows = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElement(name = "row", required = false)
+    public List<BS3Row> getRows() {
+        return rows;
+    }
+
+    public void setRows(final List<BS3Row> rows) {
+        this.rows = rows;
+    }
+
+
+
+    private List<BS3TabGroup> tabGroups = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElement(name = "tabGroup", required = false)
+    public List<BS3TabGroup> getTabGroups() {
+        return tabGroups;
+    }
+
+    public void setTabGroups(final List<BS3TabGroup> tabGroups) {
+        this.tabGroups = tabGroups;
+    }
+
+
+
+    private List<FieldSet> fieldSets = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElementRef(type=FieldSet.class, name = "fieldSet", required = false)
+    public List<FieldSet> getFieldSets() {
+        return fieldSets;
+    }
+
+    public void setFieldSets(final List<FieldSet> fieldSets) {
+        this.fieldSets = fieldSets;
+    }
+
+
+
+    private List<CollectionLayoutData> collections = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElementRef(type=CollectionLayoutData.class, name = "collection", required = false)
+    public List<CollectionLayoutData> getCollections() {
+        return collections;
+    }
+
+    public void setCollections(final List<CollectionLayoutData> collections) {
+        this.collections = collections;
+    }
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    public String toCssClass() {
+        final Size size = getSize() != null? getSize(): Size.MD;
+        return "col-" + size.toCssClassFragment() + "-" + getSpan();
+    }
+
+
+    @Override public String toString() {
+        return "BS3Col{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
new file mode 100644
index 0000000..062d557
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
@@ -0,0 +1,35 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.io.Serializable;
+
+public interface BS3Element extends WithinGrid, Serializable {
+
+    /**
+     * Any additional CSS classes to render on the page element corresponding to this object,
+     * eg as per the <a href="http://getbootstrap.com/css/#grid-less">Bootstrap mixins</a> or just for
+     * custom styling.
+     */
+    String getCssClass();
+
+    void setCssClass(final String cssClass);
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
new file mode 100644
index 0000000..ef0e312
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
@@ -0,0 +1,46 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ * Superclass for all layout classes, factoring out the common {@link #getCssClass()} attribute.
+ */
+public abstract class BS3ElementAbstract implements BS3Element {
+
+    private String cssClass;
+
+    /**
+     * Any additional CSS classes to render on the page element corresponding to this object,
+     * eg as per the <a href="http://getbootstrap.com/css/#grid-less">Bootstrap mixins</a> or just for
+     * custom styling.
+     */
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    public void setCssClass(final String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
new file mode 100644
index 0000000..dc836ec
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
@@ -0,0 +1,304 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.layout.component.GridAbstract;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
+import org.apache.isis.applib.services.dto.Dto;
+
+/**
+ * This is the top-level for rendering the domain object's properties, collections and actions.  It simply consists
+ * of a number of rows.
+ *
+ * <p>
+ *     The element is rendered as a &lt;div class=&quot;...&quot;&gt;
+ * </p>
+ */
+@XmlRootElement(
+        name = "grid"
+)
+@XmlType(
+        name = "grid"
+        , propOrder = {
+            "rows",
+            "metadataErrors"
+        }
+)
+public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwner {
+
+    private static final long serialVersionUID = 1L;
+
+
+    private String cssClass;
+
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    public void setCssClass(final String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+
+
+
+    private List<BS3Row> rows = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElement(name = "row", required = true)
+    public List<BS3Row> getRows() {
+        return rows;
+    }
+
+    public void setRows(final List<BS3Row> rows) {
+        this.rows = rows;
+    }
+
+
+
+    private List<String> metadataErrors = Lists.newArrayList();
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(name = "metadataError", required = false)
+    public List<String> getMetadataErrors() {
+        return metadataErrors;
+    }
+
+    public void setMetadataErrors(final List<String> metadataErrors) {
+        this.metadataErrors = metadataErrors;
+    }
+
+
+
+
+    private BS3RowOwner owner;
+
+
+
+    public interface Visitor extends Grid.Visitor {
+        void preVisit(final BS3Grid bs3Grid);
+        void visit(final BS3Grid bs3Grid);
+        void postVisit(final BS3Grid bs3Grid);
+        void preVisit(final BS3Row bs3Row);
+        void visit(final BS3Row bs3Row);
+        void postVisit(final BS3Row bs3Row);
+        void preVisit(final BS3Col bs3Col);
+        void visit(final BS3Col bs3Col);
+        void postVisit(final BS3Col bs3Col);
+        void visit(final BS3ClearFix bs3ClearFix);
+        void preVisit(final BS3TabGroup bs3TabGroup);
+        void visit(final BS3TabGroup bs3TabGroup);
+        void postVisit(final BS3TabGroup bs3TabGroup);
+        void preVisit(final BS3Tab bs3Tab);
+        void visit(final BS3Tab bs3Tab);
+        void postVisit(final BS3Tab bs3Tab);
+    }
+
+    public static class VisitorAdapter extends Grid.VisitorAdapter implements Visitor {
+        @Override public void preVisit(final BS3Grid bs3Grid) { }
+        @Override public void visit(final BS3Grid bs3Grid) { }
+        @Override public void postVisit(final BS3Grid bs3Grid) { }
+
+        @Override public void preVisit(final BS3Row bs3Row) { }
+        @Override public void visit(final BS3Row bs3Row) { }
+        @Override public void postVisit(final BS3Row bs3Row) { }
+
+        @Override public void preVisit(final BS3Col bs3Col) { }
+        @Override public void visit(final BS3Col bs3Col) { }
+        @Override public void postVisit(final BS3Col bs3Col) { }
+
+        @Override public void visit(final BS3ClearFix bs3ClearFix) { }
+
+        @Override public void preVisit(final BS3TabGroup bs3TabGroup) { }
+        @Override public void visit(final BS3TabGroup bs3TabGroup) { }
+        @Override public void postVisit(final BS3TabGroup bs3TabGroup) { }
+
+        @Override public void preVisit(final BS3Tab bs3Tab) { }
+        @Override public void visit(final BS3Tab bs3Tab) { }
+        @Override public void postVisit(final BS3Tab bs3Tab) { }
+    }
+
+    public void visit(final Grid.Visitor visitor) {
+        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        bs3Visitor.preVisit(this);
+        bs3Visitor.visit(this);
+        traverseRows(this, visitor);
+        bs3Visitor.postVisit(this);
+    }
+
+    protected void traverseRows(final BS3RowOwner rowOwner, final Grid.Visitor visitor) {
+        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BS3Row> rows = rowOwner.getRows();
+        for (BS3Row bs3Row : Lists.newArrayList(rows)) {
+            bs3Row.setOwner(this);
+            bs3Visitor.preVisit(bs3Row);
+            bs3Visitor.visit(bs3Row);
+            traverseCols(visitor, bs3Row);
+            bs3Visitor.postVisit(bs3Row);
+        }
+    }
+
+    private void traverseCols(final Grid.Visitor visitor, final BS3Row bs3Row) {
+        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BS3RowContent> cols = bs3Row.getCols();
+        for (BS3RowContent rowContent : Lists.newArrayList(cols)) {
+            rowContent.setOwner(bs3Row);
+            if(rowContent instanceof BS3Col) {
+                final BS3Col bs3Col = (BS3Col) rowContent;
+                bs3Visitor.preVisit(bs3Col);
+                bs3Visitor.visit(bs3Col);
+                traverseDomainObject(bs3Col, visitor);
+                traverseTabGroups(bs3Col, visitor);
+                traverseActions(bs3Col, visitor);
+                traverseFieldSets(bs3Col, visitor);
+                traverseCollections(bs3Col, visitor);
+                traverseRows(bs3Col, visitor);
+                bs3Visitor.postVisit(bs3Col);
+            } else if (rowContent instanceof BS3ClearFix) {
+                final BS3ClearFix bs3ClearFix = (BS3ClearFix) rowContent;
+                bs3Visitor.visit(bs3ClearFix);
+            } else {
+                throw new IllegalStateException(
+                        "Unrecognized implementation of BS3RowContent, " + rowContent);
+            }
+        }
+    }
+
+    private void traverseDomainObject(final BS3Col bs3Col, final Grid.Visitor visitor) {
+        final DomainObjectLayoutData domainObject = bs3Col.getDomainObject();
+        if(domainObject == null) {
+            return;
+        }
+        domainObject.setOwner(bs3Col);
+        visitor.visit(domainObject);
+    }
+
+    private void traverseTabGroups(
+            final BS3TabGroupOwner bs3TabGroupOwner,
+            final Grid.Visitor visitor) {
+        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BS3TabGroup> tabGroups = bs3TabGroupOwner.getTabGroups();
+        for (BS3TabGroup bs3TabGroup : Lists.newArrayList(tabGroups)) {
+            bs3TabGroup.setOwner(bs3TabGroupOwner);
+            bs3Visitor.preVisit(bs3TabGroup);
+            bs3Visitor.visit(bs3TabGroup);
+            traverseTabs(bs3TabGroup, visitor);
+            bs3Visitor.postVisit(bs3TabGroup);
+        }
+    }
+
+    private void traverseTabs(
+            final BS3TabOwner bs3TabOwner,
+            final Grid.Visitor visitor) {
+        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BS3Tab> tabs = bs3TabOwner.getTabs();
+        for (BS3Tab tab : Lists.newArrayList(tabs)) {
+            tab.setOwner(bs3TabOwner);
+            bs3Visitor.preVisit(tab);
+            bs3Visitor.visit(tab);
+            traverseRows(tab, visitor);
+            bs3Visitor.postVisit(tab);
+        }
+    }
+
+    private static Visitor asBs3Visitor(final Grid.Visitor visitor) {
+        return visitor instanceof Visitor? (Visitor) visitor : new BS3Grid.VisitorAdapter() {
+            @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
+                visitor.visit(domainObjectLayoutData);
+            }
+
+            @Override public void visit(final ActionLayoutData actionLayoutData) {
+                visitor.visit(actionLayoutData);
+            }
+
+            @Override public void visit(final PropertyLayoutData propertyLayoutData) {
+                visitor.visit(propertyLayoutData);
+            }
+
+            @Override public void visit(final CollectionLayoutData collectionLayoutData) {
+                visitor.visit(collectionLayoutData);
+            }
+
+            @Override public void visit(final FieldSet fieldSet) {
+                visitor.visit(fieldSet);
+            }
+        };
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, BS3Tab> getAllTabsByName() {
+        final LinkedHashMap<String, BS3Tab> tabsByName = Maps.newLinkedHashMap();
+
+        visit(new BS3Grid.VisitorAdapter() {
+            @Override
+            public void visit(final BS3Tab bS3Tab) {
+                tabsByName.put(bS3Tab.getName(), bS3Tab);
+            }
+        });
+        return tabsByName;
+    }
+
+
+    @Programmatic
+    @XmlTransient
+    public LinkedHashMap<String, HasCssId> getAllCssId() {
+        final LinkedHashMap<String, HasCssId> divsByCssId = Maps.newLinkedHashMap();
+
+        visit(new BS3Grid.VisitorAdapter() {
+            @Override
+            public void visit(final BS3Row bs3Row) {
+                final String id = bs3Row.getId();
+                divsByCssId.put(id, bs3Row);
+            }
+        });
+        return divsByCssId;
+    }
+
+    @Override
+    @Programmatic
+    @XmlTransient
+    public BS3Grid getGrid() {
+        return this;
+    }
+
+}


[2/5] isis git commit: ISIS-993: moving around and renaming the applib schema files for layout

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
new file mode 100644
index 0000000..5fd3b56
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
@@ -0,0 +1,140 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+/**
+ * Contains a row of content, either on the top-level {@link BS3Grid page} or at any other lower-level element that can
+ * contain rows, eg {@link BS3Tab tabs}.
+ *
+ * <p>
+ *     It is rendered as a &lt;div class=&quot;row ...&quot;&gt;
+ * </p>
+ */
+@XmlType(
+        name = "row"
+        , propOrder = {
+            "cols"
+            , "metadataError"
+        }
+)
+public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowContentOwner {
+
+    private static final long serialVersionUID = 1L;
+
+
+    private String id;
+
+    /**
+     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
+     */
+    @XmlAttribute(required = false)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+
+
+    private List<BS3RowContent> cols = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElementRefs({
+            @XmlElementRef(type = BS3Col.class, name="col", required = true),
+            @XmlElementRef(type = BS3ClearFixVisible.class,  name="clearFixVisible", required = false),
+            @XmlElementRef(type = BS3ClearFixHidden.class,  name="clearFixHidden", required = false)
+    })
+    public List<BS3RowContent> getCols() {
+        return cols;
+    }
+
+    public void setCols(final List<BS3RowContent> cols) {
+        this.cols = cols;
+    }
+
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+    private BS3RowOwner owner;
+
+
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public BS3RowOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final BS3RowOwner owner) {
+        this.owner = owner;
+    }
+
+
+
+    @Override
+    @XmlTransient
+    @Programmatic
+    public BS3Grid getGrid() {
+        return getOwner().getGrid();
+    }
+
+
+    @Override public String toString() {
+        return "BS3Row{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
new file mode 100644
index 0000000..892193e
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
@@ -0,0 +1,95 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+/**
+ * Common superclass for any content of a row.
+ *
+ * <p>
+ *     Most commonly the content of a row is {@link BS3Col col}umns, but it may be either of the
+ *     {@link BS3ClearFix clearfix} classes.
+ * </p>
+ *
+ */
+public abstract class BS3RowContent extends BS3ElementAbstract {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * As per <a href="http://getbootstrap.com/css/#grid-options">grid options</a>, also used in
+     * <a href="http://getbootstrap.com/css/#responsive-utilities">responsive utility</a> classes.
+     */
+    public enum Size {
+        XS,
+        SM,
+        MD,
+        LG;
+
+        public String toCssClassFragment() {
+            return name().toLowerCase();
+        }
+    }
+
+    private Size size;
+
+    /**
+     * Default if not specified is {@link Size#MD}.
+     */
+    @XmlAttribute(required = false)
+    public Size getSize() {
+        return size;
+    }
+
+    public void setSize(final Size size) {
+        this.size = size;
+    }
+
+
+    private BS3RowContentOwner owner;
+
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public BS3RowContentOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final BS3RowContentOwner owner) {
+        this.owner = owner;
+    }
+
+    @Override
+    @XmlTransient
+    @Programmatic
+    public BS3Grid getGrid() {
+        return getOwner().getGrid();
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
new file mode 100644
index 0000000..c0f1dbd
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import org.apache.isis.applib.layout.component.Owner;
+
+public interface BS3RowContentOwner extends Owner, WithinGrid {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
new file mode 100644
index 0000000..1dafe14
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
@@ -0,0 +1,28 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import org.apache.isis.applib.layout.component.Owner;
+
+public interface BS3RowOwner extends Owner, WithinGrid {
+
+    List<BS3Row> getRows();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
new file mode 100644
index 0000000..1cd3268
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
@@ -0,0 +1,177 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
+
+/**
+ * Represents a tab within a {@link BS3TabGroup tab group}.
+ *
+ * <p>
+ *     They simply contain one or more {@link BS3Row row}s.
+ * </p>
+ */
+@XmlType(
+        name = "tab"
+        , propOrder = {
+            "name",
+            "rows"
+        }
+)
+public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
+
+    private static final long serialVersionUID = 1L;
+
+    private String name;
+    @XmlAttribute(required = true)
+    public String getName() {
+        return name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+
+    private List<BS3Row> rows = Lists.newArrayList();
+
+    // no wrapper
+    @XmlElement(name = "row", required = true)
+    public List<BS3Row> getRows() {
+        return rows;
+    }
+
+    public void setRows(final List<BS3Row> rows) {
+        this.rows = rows;
+    }
+
+
+
+    private BS3TabOwner owner;
+
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public BS3TabOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final BS3TabOwner owner) {
+        this.owner = owner;
+    }
+
+
+    public static class Predicates {
+        public static Predicate<BS3Tab> notEmpty() {
+            final AtomicBoolean visitingTheNode = new AtomicBoolean(false);
+            final AtomicBoolean foundContent = new AtomicBoolean(false);
+
+            return new Predicate<BS3Tab>() {
+                @Override
+                public boolean apply(final BS3Tab thisBs3Tab) {
+                    final BS3Grid owningGrid = thisBs3Tab.getGrid();
+                    owningGrid.visit(new BS3Grid.VisitorAdapter() {
+
+                        /**
+                         * if found the tab, then reset 'foundContent' to false, and then use 'visitingTheNode' as
+                         * a marker to indicate that the visitor is now being passed to the nodes underneath the tab.
+                         * In those children, if visited (with the 'visitingTheNode' flag enabled), then simply set the
+                         * 'foundContent' flag.
+                         */
+                        @Override
+                        public void preVisit(final BS3Tab bs3Tab) {
+                            if(bs3Tab == thisBs3Tab) {
+                                foundContent.set(false);
+                                visitingTheNode.set(true);
+                            }
+                        }
+
+                        @Override public void postVisit(final BS3Tab bs3Tab) {
+                            if(bs3Tab == thisBs3Tab) {
+                                visitingTheNode.set(false);
+                            }
+                        }
+
+                        @Override
+                        public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
+                            if(visitingTheNode.get()) {
+                                foundContent.set(true);
+                            }
+                        }
+
+                        @Override
+                        public void visit(final ActionLayoutData actionLayoutData) {
+                            if(visitingTheNode.get()) {
+                                foundContent.set(true);
+                            }
+                        }
+
+                        @Override
+                        public void visit(final PropertyLayoutData propertyLayoutData) {
+                            if(visitingTheNode.get()) {
+                                foundContent.set(true);
+                            }
+                        }
+
+                        @Override
+                        public void visit(final CollectionLayoutData collectionLayoutData) {
+                            if(visitingTheNode.get()) {
+                                foundContent.set(true);
+                            }
+                        }
+                    });
+                    return foundContent.get();
+                }
+            };
+        }
+    }
+
+    @Override
+    @XmlTransient
+    @Programmatic
+    public BS3Grid getGrid() {
+        return getOwner().getGrid();
+    }
+
+    @Override public String toString() {
+        return "BS3Tab{" +
+                "name='" + name + '\'' +
+                '}';
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
new file mode 100644
index 0000000..06e75a7
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
@@ -0,0 +1,123 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+/**
+ * Represents a tab group containing one or more {@link BS3Tab tab}s.
+ */
+@XmlType(
+        name = "tabGroup"
+        , propOrder = {
+            "tabs",
+            "metadataError"
+        }
+)
+public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    private Boolean unreferencedCollections;
+    /**
+     * Whether this tab group should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any layout must have precisely one tab group or {@link BS3Col col} that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedCollections() {
+        return unreferencedCollections;
+    }
+
+    public void setUnreferencedCollections(final Boolean unreferencedCollections) {
+        this.unreferencedCollections = unreferencedCollections;
+    }
+
+
+
+
+    private List<BS3Tab> tabs = Lists.newArrayList();
+
+    // no wrapper; required=false because may be auto-generated
+    @XmlElement(name = "tab", required = false)
+    public List<BS3Tab> getTabs() {
+        return tabs;
+    }
+
+    public void setTabs(final List<BS3Tab> tabs) {
+        this.tabs = tabs;
+    }
+
+
+    private BS3TabGroupOwner owner;
+
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public BS3TabGroupOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final BS3TabGroupOwner owner) {
+        this.owner = owner;
+    }
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+    @Override
+    @XmlTransient
+    @Programmatic
+    public BS3Grid getGrid() {
+        return getOwner().getGrid();
+    }
+
+}
+

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
new file mode 100644
index 0000000..280058f
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
@@ -0,0 +1,28 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import org.apache.isis.applib.layout.component.Owner;
+
+public interface BS3TabGroupOwner extends Owner, WithinGrid {
+
+    List<BS3TabGroup> getTabGroups();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
new file mode 100644
index 0000000..2a3620d
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
@@ -0,0 +1,28 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import java.util.List;
+
+import org.apache.isis.applib.layout.component.Owner;
+
+public interface BS3TabOwner extends Owner, WithinGrid {
+
+    List<BS3Tab> getTabs();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java
new file mode 100644
index 0000000..9b774da
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java
@@ -0,0 +1,28 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+public interface HasCssId {
+
+    /**
+     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
+     */
+    String getId();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
new file mode 100644
index 0000000..2f45a1f
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
@@ -0,0 +1,27 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.grid.bootstrap3;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface WithinGrid {
+
+    @Programmatic
+    BS3Grid getGrid();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java
new file mode 100644
index 0000000..3658ae9
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java
@@ -0,0 +1,34 @@
+/*
+ *  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.
+ */
+
+/**
+ * The classes in this package define how to layout the properties, collections and actions of a domain object - the
+ * building blocks - as defined in the <code>members.v1</code> package.
+ *
+ * <p>
+ *     The layout is modelled closely after <a href="http://getbootstrap.com/">Bootstrap</a>, and is intended to
+ *     support the grid layouts implemented by that CSS framework.  This flexibility comes at the cost of some
+ *     verbosity.
+ * </p>
+ */
+@javax.xml.bind.annotation.XmlSchema(
+        namespace = "http://isis.apache.org/applib/layout/grid/bootstrap3",
+        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
+)
+package org.apache.isis.applib.layout.grid.bootstrap3;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridNormalizerService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridNormalizerService.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridNormalizerService.java
index ced93eb..a967d95 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridNormalizerService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridNormalizerService.java
@@ -17,7 +17,7 @@
 package org.apache.isis.applib.services.layout;
 
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 
 /**
  * Provides implementation of {@link Grid}.

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
index 8a671a1..1606046 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/GridService.java
@@ -21,7 +21,7 @@ import java.util.List;
 import org.apache.isis.applib.annotation.MemberGroupLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 
 public interface GridService {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
index d3a5128..3679e0a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.value.Clob;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_viewLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_viewLayout.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_viewLayout.java
index 6d2e3a7..249b95a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_viewLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_viewLayout.java
@@ -25,7 +25,7 @@ import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 
 @Mixin
 public class Object_viewLayout {

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionXml.java
index 0997821..be7cdda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionXml.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.actions.layout;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
 import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionXml.java
index 73ddb4b..3e7e5e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionXml.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionXml.java
index 3435bf3..acef43b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionXml.java
index b26feb5..d6131b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionXml.java
index 644dd1d..39409ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutXml.java
index e2b66f1..b4114fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
index 96ad7d6..ff785dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionXml.java
index ed258d7..2840cc0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionXml.java
index 9fce33d..3141f64 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet;
 import org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionXml.java
index 818419b..fcaa63f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
index 3ef846b..a8466e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
index 8283f4e..11d10d0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionXml.java
index 78932b9..1ee6a7a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionXml.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.collections.layout;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionXml.java
index 9f5da94..b030736 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import java.util.Comparator;
 
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
index c3b0dae..75dbda9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacet.java
@@ -19,7 +19,7 @@
 package org.apache.isis.core.metamodel.facets.object.grid;
 
 
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
index fc9ee46..69ada55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.grid;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.applib.services.layout.GridService;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyXml.java
index 41e03e9..d072f2a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyXml.java
index f1bac93..a99c98d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
index 481f815..8e83321 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyXml.java
index 11fbe7f..494a7eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyXml.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyXml.java
index 1fca4d7..f55facc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyXml.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
index d93fe64..f4c45d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyXml.java
index 16ea651..cb4c346 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyXml.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyXml.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyXml.java
index e55d867..8e2fbf3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyXml.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacetAbstract;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
index 279086c..d8b1742 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridNormalizerServiceAbstract.java
@@ -36,21 +36,21 @@ import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.ActionLayoutDataOwner;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutDataOwner;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.Grid;
-import org.apache.isis.applib.layout.common.HasBookmarking;
-import org.apache.isis.applib.layout.common.HasCssClass;
-import org.apache.isis.applib.layout.common.HasCssClassFa;
-import org.apache.isis.applib.layout.common.HasDescribedAs;
-import org.apache.isis.applib.layout.common.HasHidden;
-import org.apache.isis.applib.layout.common.HasNamed;
-import org.apache.isis.applib.layout.common.MemberRegionOwner;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutDataOwner;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.layout.component.HasBookmarking;
+import org.apache.isis.applib.layout.component.HasCssClass;
+import org.apache.isis.applib.layout.component.HasCssClassFa;
+import org.apache.isis.applib.layout.component.HasDescribedAs;
+import org.apache.isis.applib.layout.component.HasHidden;
+import org.apache.isis.applib.layout.component.HasNamed;
+import org.apache.isis.applib.layout.component.MemberRegionOwner;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.layout.GridNormalizerService;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
index f99b84d..6da6da7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.layout.GridNormalizerService;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.layout.GridService;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@ -60,8 +60,8 @@ public class GridServiceDefault
 
     private static final Logger LOG = LoggerFactory.getLogger(GridServiceDefault.class);
 
-    public static final String COMMON_TNS = "http://isis.apache.org/schema/applib/layout/common";
-    public static final String COMMON_SCHEMA_LOCATION = "http://isis.apache.org/schema/applib/layout/common/common.xsd";
+    public static final String COMMON_TNS = "http://isis.apache.org/applib/layout/component";
+    public static final String COMMON_SCHEMA_LOCATION = "http://isis.apache.org/applib/layout/component/component.xsd";
 
     // for better logging messages (used only in prototyping mode)
     private final Map<Class<?>, String> badXmlByClass = Maps.newHashMap();

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
index c0e0fa9..7523e10 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
@@ -30,17 +30,17 @@ import com.google.common.collect.Maps;
 
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.bootstrap3.BS3RowContent;
-import org.apache.isis.applib.layout.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.bootstrap3.BS3TabGroup;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.Grid;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3RowContent;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.services.grid.GridNormalizerServiceAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -53,8 +53,8 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 )
 public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3Grid> {
 
-    public static final String TNS = "http://isis.apache.org/schema/applib/layout/bootstrap3";
-    public static final String SCHEMA_LOCATION = "http://isis.apache.org/schema/applib/layout/bootstrap3/bootstrap3.xsd";
+    public static final String TNS = "http://isis.apache.org/applib/layout/grid/bootstrap3";
+    public static final String SCHEMA_LOCATION = "http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd";
 
     public GridNormalizerServiceBS3() {
         super(BS3Grid.class, TNS, SCHEMA_LOCATION);

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/GridNormalizerServiceFC.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/GridNormalizerServiceFC.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/GridNormalizerServiceFC.java
index d48fddb..bf3b5a2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/GridNormalizerServiceFC.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/GridNormalizerServiceFC.java
@@ -25,11 +25,11 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.Grid;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCColumn;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCGrid;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCTab;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumn.java
index 157428a..f071117 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumn.java
@@ -29,12 +29,12 @@ import javax.xml.bind.annotation.XmlType;
 import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.MemberGroupLayout;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutDataOwner;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.FieldSetOwner;
-import org.apache.isis.applib.layout.common.Owned;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.FieldSetOwner;
+import org.apache.isis.applib.layout.component.Owned;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 
 /**
  * The column contains a mixture of {@link FieldSet}s (of {@link PropertyLayoutData properties}) and also

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumnOwner.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumnOwner.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumnOwner.java
index 9bc073c..e35621c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumnOwner.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCColumnOwner.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.core.metamodel.services.grid.fixedcols.applib;
 
-import org.apache.isis.applib.layout.common.Owner;
+import org.apache.isis.applib.layout.component.Owner;
 
 public interface FCColumnOwner extends Owner {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCGrid.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCGrid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCGrid.java
index b7625af..851e504 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCGrid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCGrid.java
@@ -26,14 +26,14 @@ import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.ActionLayoutDataOwner;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.Grid;
-import org.apache.isis.applib.layout.common.GridAbstract;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.Grid;
+import org.apache.isis.applib.layout.component.GridAbstract;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.services.dto.Dto;
 
 /**

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTab.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTab.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTab.java
index 3ce6df8..1dc41c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTab.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTab.java
@@ -30,10 +30,10 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.MemberRegion;
-import org.apache.isis.applib.layout.common.Owned;
-import org.apache.isis.applib.layout.common.FieldSet;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.MemberRegion;
+import org.apache.isis.applib.layout.component.Owned;
+import org.apache.isis.applib.layout.component.FieldSet;
 
 @XmlType(
         name="tab"

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroup.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroup.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroup.java
index d27eae8..771db47 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroup.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroup.java
@@ -29,7 +29,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
 
-import org.apache.isis.applib.layout.common.Owned;
+import org.apache.isis.applib.layout.component.Owned;
 
 @XmlType(
         propOrder = {

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroupOwner.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroupOwner.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroupOwner.java
index f6f59d5..165a32b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroupOwner.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/fixedcols/applib/FCTabGroupOwner.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.core.metamodel.services.grid.fixedcols.applib;
 
-import org.apache.isis.applib.layout.common.Owner;
+import org.apache.isis.applib.layout.component.Owner;
 
 public interface FCTabGroupOwner extends Owner {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
index 73a3fab..e5f469b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetadataMenu.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.layout.common.Grid;
+import org.apache.isis.applib.layout.component.Grid;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.layout.GridService;
 import org.apache.isis.applib.value.Blob;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/layoutxml/GridFacetDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/layoutxml/GridFacetDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/layoutxml/GridFacetDefaultTest.java
index aa8b224..50777b1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/layoutxml/GridFacetDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/layoutxml/GridFacetDefaultTest.java
@@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import org.junit.Test;
 
-import org.apache.isis.applib.layout.common.FieldSet;
+import org.apache.isis.applib.layout.component.FieldSet;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.nullValue;

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
index 7b90b82..8f2f0ba 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
@@ -31,16 +31,16 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.applib.services.layout.GridNormalizerService;
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.bootstrap3.BS3TabGroup;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.core.metamodel.services.grid.bootstrap3.GridNormalizerServiceBS3;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/FCGridTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/FCGridTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/FCGridTest.java
index d3fbd1a..6b67072 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/FCGridTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/FCGridTest.java
@@ -31,10 +31,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.applib.services.layout.GridNormalizerService;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCColumn;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCGrid;
 import org.apache.isis.core.metamodel.services.grid.fixedcols.applib.FCTab;
@@ -73,9 +73,10 @@ public class FCGridTest {
         fcPage.setTabGroups(Lists.<FCTabGroup>newArrayList());
         fcPage.getTabGroups().add(new FCTabGroup());
         FCTabGroup tabGroup = fcPage.getTabGroups().get(0);
-        FCTab FCTab = tabGroup.getTabs().get(0);
-        FCTab.setName("Common");
-        FCColumn left = FCTab.getLeft();
+        FCTab fcTab = new FCTab();
+        tabGroup.getTabs().add(fcTab);
+        fcTab.setName("Common");
+        FCColumn left = fcTab.getLeft();
 
         FieldSet leftPropGroup = new FieldSet();
         left.setFieldSets(Lists.<FieldSet>newArrayList());


[5/5] isis git commit: ISIS-993: moving around and renaming the applib schema files for layout

Posted by da...@apache.org.
ISIS-993: moving around and renaming the applib schema files for layout


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/67b6e05e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/67b6e05e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/67b6e05e

Branch: refs/heads/ISIS-993
Commit: 67b6e05e0536dc8df60a57e2e9f705dfd244c46a
Parents: 7894322
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Feb 10 16:12:21 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Feb 10 16:12:21 2016 +0000

----------------------------------------------------------------------
 .../applib/layout/component/component.xsd       | 136 +++++++++
 .../layout/grid/bootstrap3/bootstrap3.xsd       | 136 +++++++++
 .../applib/layout/bootstrap3/bootstrap3.xsd     | 136 ---------
 .../schema/applib/layout/common/common.xsd      | 136 ---------
 .../applib/layout/fixedcols/fixedcols.xsd       |  39 ---
 .../isis/applib/annotation/ActionLayout.java    |   4 +-
 .../isis/applib/annotation/BookmarkPolicy.java  |   2 +-
 .../isis/applib/annotation/Contributed.java     |   2 +-
 .../isis/applib/annotation/LabelPosition.java   |   2 +-
 .../isis/applib/annotation/RenderType.java      |   2 +-
 .../apache/isis/applib/annotation/Where.java    |   2 +-
 .../applib/layout/bootstrap3/BS3ClearFix.java   |  24 --
 .../layout/bootstrap3/BS3ClearFixHidden.java    |  39 ---
 .../layout/bootstrap3/BS3ClearFixVisible.java   |  59 ----
 .../isis/applib/layout/bootstrap3/BS3Col.java   | 257 ----------------
 .../applib/layout/bootstrap3/BS3Element.java    |  35 ---
 .../layout/bootstrap3/BS3ElementAbstract.java   |  46 ---
 .../isis/applib/layout/bootstrap3/BS3Grid.java  | 304 -------------------
 .../isis/applib/layout/bootstrap3/BS3Row.java   | 140 ---------
 .../applib/layout/bootstrap3/BS3RowContent.java |  95 ------
 .../layout/bootstrap3/BS3RowContentOwner.java   |  25 --
 .../applib/layout/bootstrap3/BS3RowOwner.java   |  28 --
 .../isis/applib/layout/bootstrap3/BS3Tab.java   | 177 -----------
 .../applib/layout/bootstrap3/BS3TabGroup.java   | 123 --------
 .../layout/bootstrap3/BS3TabGroupOwner.java     |  28 --
 .../applib/layout/bootstrap3/BS3TabOwner.java   |  28 --
 .../isis/applib/layout/bootstrap3/HasCssId.java |  28 --
 .../applib/layout/bootstrap3/WithinGrid.java    |  27 --
 .../applib/layout/bootstrap3/package-info.java  |  34 ---
 .../applib/layout/common/ActionLayoutData.java  | 253 ---------------
 .../layout/common/ActionLayoutDataOwner.java    |  25 --
 .../layout/common/CollectionLayoutData.java     | 268 ----------------
 .../common/CollectionLayoutDataOwner.java       |  26 --
 .../layout/common/DomainObjectLayoutData.java   | 208 -------------
 .../common/DomainObjectLayoutDataOwner.java     |  25 --
 .../isis/applib/layout/common/FieldSet.java     | 223 --------------
 .../applib/layout/common/FieldSetOwner.java     |  25 --
 .../apache/isis/applib/layout/common/Grid.java  |  84 -----
 .../isis/applib/layout/common/GridAbstract.java | 181 -----------
 .../applib/layout/common/HasBookmarking.java    |  14 -
 .../isis/applib/layout/common/HasCssClass.java  |  12 -
 .../applib/layout/common/HasCssClassFa.java     |  16 -
 .../applib/layout/common/HasDescribedAs.java    |  12 -
 .../isis/applib/layout/common/HasHidden.java    |  14 -
 .../isis/applib/layout/common/HasNamed.java     |  17 --
 .../isis/applib/layout/common/MemberRegion.java |  33 --
 .../applib/layout/common/MemberRegionOwner.java |  23 --
 .../apache/isis/applib/layout/common/Owned.java |  23 --
 .../apache/isis/applib/layout/common/Owner.java |  24 --
 .../layout/common/PropertyLayoutData.java       | 252 ---------------
 .../isis/applib/layout/common/package-info.java |  36 ---
 .../layout/component/ActionLayoutData.java      | 253 +++++++++++++++
 .../layout/component/ActionLayoutDataOwner.java |  25 ++
 .../layout/component/CollectionLayoutData.java  | 268 ++++++++++++++++
 .../component/CollectionLayoutDataOwner.java    |  26 ++
 .../component/DomainObjectLayoutData.java       | 208 +++++++++++++
 .../component/DomainObjectLayoutDataOwner.java  |  25 ++
 .../isis/applib/layout/component/FieldSet.java  | 223 ++++++++++++++
 .../applib/layout/component/FieldSetOwner.java  |  25 ++
 .../isis/applib/layout/component/Grid.java      |  84 +++++
 .../applib/layout/component/GridAbstract.java   | 181 +++++++++++
 .../applib/layout/component/HasBookmarking.java |  14 +
 .../applib/layout/component/HasCssClass.java    |  12 +
 .../applib/layout/component/HasCssClassFa.java  |  16 +
 .../applib/layout/component/HasDescribedAs.java |  12 +
 .../isis/applib/layout/component/HasHidden.java |  14 +
 .../isis/applib/layout/component/HasNamed.java  |  17 ++
 .../applib/layout/component/MemberRegion.java   |  33 ++
 .../layout/component/MemberRegionOwner.java     |  23 ++
 .../isis/applib/layout/component/Owned.java     |  23 ++
 .../isis/applib/layout/component/Owner.java     |  24 ++
 .../layout/component/PropertyLayoutData.java    | 252 +++++++++++++++
 .../applib/layout/component/package-info.java   |  36 +++
 .../layout/grid/bootstrap3/BS3ClearFix.java     |  24 ++
 .../grid/bootstrap3/BS3ClearFixHidden.java      |  39 +++
 .../grid/bootstrap3/BS3ClearFixVisible.java     |  59 ++++
 .../applib/layout/grid/bootstrap3/BS3Col.java   | 257 ++++++++++++++++
 .../layout/grid/bootstrap3/BS3Element.java      |  35 +++
 .../grid/bootstrap3/BS3ElementAbstract.java     |  46 +++
 .../applib/layout/grid/bootstrap3/BS3Grid.java  | 304 +++++++++++++++++++
 .../applib/layout/grid/bootstrap3/BS3Row.java   | 140 +++++++++
 .../layout/grid/bootstrap3/BS3RowContent.java   |  95 ++++++
 .../grid/bootstrap3/BS3RowContentOwner.java     |  25 ++
 .../layout/grid/bootstrap3/BS3RowOwner.java     |  28 ++
 .../applib/layout/grid/bootstrap3/BS3Tab.java   | 177 +++++++++++
 .../layout/grid/bootstrap3/BS3TabGroup.java     | 123 ++++++++
 .../grid/bootstrap3/BS3TabGroupOwner.java       |  28 ++
 .../layout/grid/bootstrap3/BS3TabOwner.java     |  28 ++
 .../applib/layout/grid/bootstrap3/HasCssId.java |  28 ++
 .../layout/grid/bootstrap3/WithinGrid.java      |  27 ++
 .../layout/grid/bootstrap3/package-info.java    |  34 +++
 .../services/layout/GridNormalizerService.java  |   2 +-
 .../applib/services/layout/GridService.java     |   2 +-
 .../layout/Object_downloadLayoutXml.java        |   2 +-
 .../services/layout/Object_viewLayout.java      |   2 +-
 .../layout/ActionPositionFacetForActionXml.java |   2 +-
 .../layout/BookmarkPolicyFacetForActionXml.java |   2 +-
 .../layout/CssClassFaFacetForActionXml.java     |   2 +-
 .../layout/CssClassFacetForActionXml.java       |   2 +-
 .../layout/DescribedAsFacetForActionXml.java    |   2 +-
 .../layout/HiddenFacetForActionLayoutXml.java   |   2 +-
 .../actions/layout/NamedFacetForActionXml.java  |   2 +-
 .../layout/CssClassFacetForCollectionXml.java   |   2 +-
 .../DefaultViewFacetForCollectionXml.java       |   2 +-
 .../DescribedAsFacetForCollectionXml.java       |   2 +-
 .../layout/HiddenFacetForCollectionXml.java     |   2 +-
 .../layout/NamedFacetForCollectionXml.java      |   2 +-
 .../layout/PagedFacetForCollectionXml.java      |   2 +-
 .../layout/SortedByFacetForCollectionXml.java   |   2 +-
 .../metamodel/facets/object/grid/GridFacet.java |   2 +-
 .../facets/object/grid/GridFacetDefault.java    |   2 +-
 .../CssClassFacetForPropertyXml.java            |   2 +-
 .../DescribedAsFacetForPropertyXml.java         |   2 +-
 .../HiddenFacetForPropertyXml.java              |   2 +-
 .../LabelAtFacetForPropertyXml.java             |   2 +-
 .../MultiLineFacetForPropertyXml.java           |   2 +-
 .../NamedFacetForPropertyXml.java               |   2 +-
 .../RenderedAdjustedFacetForPropertyXml.java    |   2 +-
 .../TypicalLengthFacetForPropertyXml.java       |   2 +-
 .../grid/GridNormalizerServiceAbstract.java     |  30 +-
 .../services/grid/GridServiceDefault.java       |   6 +-
 .../bootstrap3/GridNormalizerServiceBS3.java    |  26 +-
 .../grid/fixedcols/GridNormalizerServiceFC.java |  10 +-
 .../grid/fixedcols/applib/FCColumn.java         |  12 +-
 .../grid/fixedcols/applib/FCColumnOwner.java    |   2 +-
 .../services/grid/fixedcols/applib/FCGrid.java  |  16 +-
 .../services/grid/fixedcols/applib/FCTab.java   |   8 +-
 .../grid/fixedcols/applib/FCTabGroup.java       |   2 +-
 .../grid/fixedcols/applib/FCTabGroupOwner.java  |   2 +-
 .../services/metamodel/MetadataMenu.java        |   2 +-
 .../object/layoutxml/GridFacetDefaultTest.java  |   2 +-
 .../metamodel/services/grid/BS3GridTest.java    |  20 +-
 .../metamodel/services/grid/FCGridTest.java     |  15 +-
 .../model/models/EntityCollectionModel.java     |   2 +-
 .../entity/fieldset/PropertyGroup.java          |   4 +-
 .../links/EntityLinksSelectorPanelFactory.java  |   4 +-
 .../ui/components/layout/bs3/BS3GridPanel.java  |   4 +-
 .../wicket/ui/components/layout/bs3/Util.java   |   4 +-
 .../layout/bs3/clearfix/ClearFix.java           |   2 +-
 .../ui/components/layout/bs3/col/Col.java       |  16 +-
 .../ui/components/layout/bs3/row/Row.java       |   8 +-
 .../layout/bs3/tabs/TabGroupPanel.java          |   4 +-
 .../ui/components/layout/bs3/tabs/TabPanel.java |   4 +-
 .../components/layout/fixedcols/PropUtil.java   |   2 +-
 .../collections/EntityCollectionsPanel.java     |   2 +-
 .../layout/fixedcols/columns/EntityColumn.java  |   4 +-
 .../wicket/ui/pages/entity/EntityPage.java      |   2 +-
 .../dom/simple/SimpleObject.layout-FC.xml       |  41 ---
 .../dom/simple/SimpleObject.layout.json         |  71 -----
 .../dom/simple/SimpleObject.layout.xml          |  64 +---
 150 files changed, 3713 insertions(+), 3913 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
new file mode 100644
index 0000000..33dc6aa
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
@@ -0,0 +1,136 @@
+<?xml version="1.0" standalone="yes"?>
+<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://isis.apache.org/applib/layout/component" xmlns:tns="http://isis.apache.org/applib/layout/component" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+  <xs:element name="action" type="tns:action"/>
+
+  <xs:element name="collection" type="tns:collection"/>
+
+  <xs:element name="domainObject" type="tns:domainObject"/>
+
+  <xs:element name="fieldSet" type="tns:fieldSet"/>
+
+  <xs:element name="property" type="tns:property"/>
+
+  <xs:complexType name="domainObject">
+    <xs:sequence>
+      <xs:element name="named" type="xs:string" minOccurs="0"/>
+      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
+      <xs:element name="plural" type="xs:string" minOccurs="0"/>
+      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+    <xs:attribute name="cssClass" type="xs:string"/>
+    <xs:attribute name="cssClassFa" type="xs:string"/>
+    <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
+  </xs:complexType>
+
+  <xs:complexType name="action">
+    <xs:sequence>
+      <xs:element name="named" type="xs:string" minOccurs="0"/>
+      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
+      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+    <xs:attribute name="cssClass" type="xs:string"/>
+    <xs:attribute name="cssClassFa" type="xs:string"/>
+    <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
+    <xs:attribute name="hidden" type="tns:where"/>
+    <xs:attribute name="id" type="xs:string" use="required"/>
+    <xs:attribute name="namedEscaped" type="xs:boolean"/>
+    <xs:attribute name="position" type="tns:position"/>
+  </xs:complexType>
+
+  <xs:complexType name="fieldSet">
+    <xs:sequence>
+      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="tns:property" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:string" use="required"/>
+    <xs:attribute name="id" type="xs:string"/>
+    <xs:attribute name="unreferencedActions" type="xs:boolean"/>
+    <xs:attribute name="unreferencedProperties" type="xs:boolean"/>
+  </xs:complexType>
+
+  <xs:complexType name="property">
+    <xs:sequence>
+      <xs:element name="named" type="xs:string" minOccurs="0"/>
+      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
+      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="cssClass" type="xs:string"/>
+    <xs:attribute name="hidden" type="tns:where"/>
+    <xs:attribute name="id" type="xs:string" use="required"/>
+    <xs:attribute name="labelPosition" type="tns:labelPosition"/>
+    <xs:attribute name="multiLine" type="xs:int"/>
+    <xs:attribute name="namedEscaped" type="xs:boolean"/>
+    <xs:attribute name="renderedAsDayBefore" type="xs:boolean"/>
+    <xs:attribute name="typicalLength" type="xs:int"/>
+  </xs:complexType>
+
+  <xs:complexType name="collection">
+    <xs:sequence>
+      <xs:element name="named" type="xs:string" minOccurs="0"/>
+      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
+      <xs:element name="sortedBy" type="xs:string" minOccurs="0"/>
+      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="cssClass" type="xs:string"/>
+    <xs:attribute name="defaultView" type="xs:string"/>
+    <xs:attribute name="hidden" type="tns:where"/>
+    <xs:attribute name="id" type="xs:string" use="required"/>
+    <xs:attribute name="namedEscaped" type="xs:boolean"/>
+    <xs:attribute name="paged" type="xs:int"/>
+  </xs:complexType>
+
+  <xs:simpleType name="bookmarkPolicy">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="AS_ROOT"/>
+      <xs:enumeration value="AS_CHILD"/>
+      <xs:enumeration value="NEVER"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="cssClassFaPosition">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="LEFT"/>
+      <xs:enumeration value="RIGHT"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="where">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="EVERYWHERE"/>
+      <xs:enumeration value="ANYWHERE"/>
+      <xs:enumeration value="OBJECT_FORMS"/>
+      <xs:enumeration value="REFERENCES_PARENT"/>
+      <xs:enumeration value="PARENTED_TABLES"/>
+      <xs:enumeration value="STANDALONE_TABLES"/>
+      <xs:enumeration value="ALL_TABLES"/>
+      <xs:enumeration value="ALL_EXCEPT_STANDALONE_TABLES"/>
+      <xs:enumeration value="NOWHERE"/>
+      <xs:enumeration value="NOT_SPECIFIED"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="position">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="BELOW"/>
+      <xs:enumeration value="RIGHT"/>
+      <xs:enumeration value="PANEL"/>
+      <xs:enumeration value="PANEL_DROPDOWN"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="labelPosition">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="DEFAULT"/>
+      <xs:enumeration value="LEFT"/>
+      <xs:enumeration value="RIGHT"/>
+      <xs:enumeration value="TOP"/>
+      <xs:enumeration value="NONE"/>
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/adocs/documentation/src/main/asciidoc/applib/layout/grid/bootstrap3/bootstrap3.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/applib/layout/grid/bootstrap3/bootstrap3.xsd b/adocs/documentation/src/main/asciidoc/applib/layout/grid/bootstrap3/bootstrap3.xsd
new file mode 100644
index 0000000..65d2bd6
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/applib/layout/grid/bootstrap3/bootstrap3.xsd
@@ -0,0 +1,136 @@
+<?xml version="1.0" standalone="yes"?>
+<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:tns="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://isis.apache.org/applib/layout/component">
+
+    <xs:import namespace="http://isis.apache.org/applib/layout/component" schemaLocation="../../component"/>
+
+    <xs:element name="clearFixHidden" type="tns:clearFixHidden"/>
+
+    <xs:element name="clearFixVisible" type="tns:clearFixVisible"/>
+
+    <xs:element name="col" type="tns:col"/>
+
+    <xs:element name="grid" type="tns:grid"/>
+
+    <xs:complexType name="grid">
+        <xs:sequence>
+            <xs:element name="row" type="tns:row" maxOccurs="unbounded"/>
+            <xs:element name="metadataError" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="cssClass" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="row">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ElementAbstract">
+                <xs:sequence>
+                    <xs:choice minOccurs="0" maxOccurs="unbounded">
+                        <xs:element ref="tns:col"/>
+                        <xs:element ref="tns:clearFixVisible"/>
+                        <xs:element ref="tns:clearFixHidden"/>
+                    </xs:choice>
+                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="bs3ElementAbstract" abstract="true">
+        <xs:sequence/>
+        <xs:attribute name="cssClass" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="col">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3RowContent">
+                <xs:sequence>
+                    <xs:element ref="ns1:domainObject" minOccurs="0"/>
+                    <xs:element ref="ns1:action" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element name="row" type="tns:row" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element name="tabGroup" type="tns:tabGroup" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element ref="ns1:fieldSet" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element ref="ns1:collection" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string"/>
+                <xs:attribute name="span" type="xs:int" use="required"/>
+                <xs:attribute name="unreferencedActions" type="xs:boolean"/>
+                <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="bs3RowContent" abstract="true">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ElementAbstract">
+                <xs:sequence/>
+                <xs:attribute name="size" type="tns:size"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="tabGroup">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ElementAbstract">
+                <xs:sequence>
+                    <xs:element name="tab" type="tns:tab" minOccurs="0" maxOccurs="unbounded"/>
+                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="tab">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ElementAbstract">
+                <xs:sequence>
+                    <xs:element name="row" type="tns:row" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="name" type="xs:string" use="required"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="clearFixVisible">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ClearFix">
+                <xs:sequence/>
+                <xs:attribute name="cssDisplay" type="tns:cssDisplay" use="required"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="bs3ClearFix" abstract="true">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3RowContent">
+                <xs:sequence/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="clearFixHidden">
+        <xs:complexContent>
+            <xs:extension base="tns:bs3ClearFix">
+                <xs:sequence/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:simpleType name="size">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="XS"/>
+            <xs:enumeration value="SM"/>
+            <xs:enumeration value="MD"/>
+            <xs:enumeration value="LG"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="cssDisplay">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="BLOCK"/>
+            <xs:enumeration value="INLINE"/>
+            <xs:enumeration value="INLINE_BLOCK"/>
+        </xs:restriction>
+    </xs:simpleType>
+</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/adocs/documentation/src/main/asciidoc/schema/applib/layout/bootstrap3/bootstrap3.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/applib/layout/bootstrap3/bootstrap3.xsd b/adocs/documentation/src/main/asciidoc/schema/applib/layout/bootstrap3/bootstrap3.xsd
deleted file mode 100644
index 39ca5fa..0000000
--- a/adocs/documentation/src/main/asciidoc/schema/applib/layout/bootstrap3/bootstrap3.xsd
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://isis.apache.org/schema/applib/layout/bootstrap3" xmlns:tns="http://isis.apache.org/schema/applib/layout/bootstrap3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://isis.apache.org/schema/applib/layout/common">
-
-    <xs:import namespace="http://isis.apache.org/schema/applib/layout/common" schemaLocation="../common"/>
-
-    <xs:element name="clearFixHidden" type="tns:clearFixHidden"/>
-
-    <xs:element name="clearFixVisible" type="tns:clearFixVisible"/>
-
-    <xs:element name="col" type="tns:col"/>
-
-    <xs:element name="grid" type="tns:grid"/>
-
-    <xs:complexType name="grid">
-        <xs:sequence>
-            <xs:element name="row" type="tns:row" maxOccurs="unbounded"/>
-            <xs:element name="metadataError" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="cssClass" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="row">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ElementAbstract">
-                <xs:sequence>
-                    <xs:choice minOccurs="0" maxOccurs="unbounded">
-                        <xs:element ref="tns:col"/>
-                        <xs:element ref="tns:clearFixVisible"/>
-                        <xs:element ref="tns:clearFixHidden"/>
-                    </xs:choice>
-                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="bs3ElementAbstract" abstract="true">
-        <xs:sequence/>
-        <xs:attribute name="cssClass" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="col">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3RowContent">
-                <xs:sequence>
-                    <xs:element ref="ns1:domainObject" minOccurs="0"/>
-                    <xs:element ref="ns1:action" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element name="row" type="tns:row" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element name="tabGroup" type="tns:tabGroup" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element ref="ns1:fieldSet" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element ref="ns1:collection" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string"/>
-                <xs:attribute name="span" type="xs:int" use="required"/>
-                <xs:attribute name="unreferencedActions" type="xs:boolean"/>
-                <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="bs3RowContent" abstract="true">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ElementAbstract">
-                <xs:sequence/>
-                <xs:attribute name="size" type="tns:size"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="tabGroup">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ElementAbstract">
-                <xs:sequence>
-                    <xs:element name="tab" type="tns:tab" minOccurs="0" maxOccurs="unbounded"/>
-                    <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-                </xs:sequence>
-                <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="tab">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ElementAbstract">
-                <xs:sequence>
-                    <xs:element name="row" type="tns:row" maxOccurs="unbounded"/>
-                </xs:sequence>
-                <xs:attribute name="name" type="xs:string" use="required"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="clearFixVisible">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ClearFix">
-                <xs:sequence/>
-                <xs:attribute name="cssDisplay" type="tns:cssDisplay" use="required"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="bs3ClearFix" abstract="true">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3RowContent">
-                <xs:sequence/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="clearFixHidden">
-        <xs:complexContent>
-            <xs:extension base="tns:bs3ClearFix">
-                <xs:sequence/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:simpleType name="size">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="XS"/>
-            <xs:enumeration value="SM"/>
-            <xs:enumeration value="MD"/>
-            <xs:enumeration value="LG"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="cssDisplay">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="BLOCK"/>
-            <xs:enumeration value="INLINE"/>
-            <xs:enumeration value="INLINE_BLOCK"/>
-        </xs:restriction>
-    </xs:simpleType>
-</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/adocs/documentation/src/main/asciidoc/schema/applib/layout/common/common.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/applib/layout/common/common.xsd b/adocs/documentation/src/main/asciidoc/schema/applib/layout/common/common.xsd
deleted file mode 100644
index 5b614a9..0000000
--- a/adocs/documentation/src/main/asciidoc/schema/applib/layout/common/common.xsd
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://isis.apache.org/schema/applib/layout/common" xmlns:tns="http://isis.apache.org/schema/applib/layout/common" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-  <xs:element name="action" type="tns:action"/>
-
-  <xs:element name="collection" type="tns:collection"/>
-
-  <xs:element name="domainObject" type="tns:domainObject"/>
-
-  <xs:element name="fieldSet" type="tns:fieldSet"/>
-
-  <xs:element name="property" type="tns:property"/>
-
-  <xs:complexType name="domainObject">
-    <xs:sequence>
-      <xs:element name="named" type="xs:string" minOccurs="0"/>
-      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
-      <xs:element name="plural" type="xs:string" minOccurs="0"/>
-      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-    </xs:sequence>
-    <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
-    <xs:attribute name="cssClass" type="xs:string"/>
-    <xs:attribute name="cssClassFa" type="xs:string"/>
-    <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
-  </xs:complexType>
-
-  <xs:complexType name="action">
-    <xs:sequence>
-      <xs:element name="named" type="xs:string" minOccurs="0"/>
-      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
-      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-    </xs:sequence>
-    <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
-    <xs:attribute name="cssClass" type="xs:string"/>
-    <xs:attribute name="cssClassFa" type="xs:string"/>
-    <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
-    <xs:attribute name="hidden" type="tns:where"/>
-    <xs:attribute name="id" type="xs:string" use="required"/>
-    <xs:attribute name="namedEscaped" type="xs:boolean"/>
-    <xs:attribute name="position" type="tns:position"/>
-  </xs:complexType>
-
-  <xs:complexType name="fieldSet">
-    <xs:sequence>
-      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element ref="tns:property" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-    </xs:sequence>
-    <xs:attribute name="name" type="xs:string" use="required"/>
-    <xs:attribute name="id" type="xs:string"/>
-    <xs:attribute name="unreferencedActions" type="xs:boolean"/>
-    <xs:attribute name="unreferencedProperties" type="xs:boolean"/>
-  </xs:complexType>
-
-  <xs:complexType name="property">
-    <xs:sequence>
-      <xs:element name="named" type="xs:string" minOccurs="0"/>
-      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
-      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-    </xs:sequence>
-    <xs:attribute name="cssClass" type="xs:string"/>
-    <xs:attribute name="hidden" type="tns:where"/>
-    <xs:attribute name="id" type="xs:string" use="required"/>
-    <xs:attribute name="labelPosition" type="tns:labelPosition"/>
-    <xs:attribute name="multiLine" type="xs:int"/>
-    <xs:attribute name="namedEscaped" type="xs:boolean"/>
-    <xs:attribute name="renderedAsDayBefore" type="xs:boolean"/>
-    <xs:attribute name="typicalLength" type="xs:int"/>
-  </xs:complexType>
-
-  <xs:complexType name="collection">
-    <xs:sequence>
-      <xs:element name="named" type="xs:string" minOccurs="0"/>
-      <xs:element name="describedAs" type="xs:string" minOccurs="0"/>
-      <xs:element name="sortedBy" type="xs:string" minOccurs="0"/>
-      <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="metadataError" type="xs:string" minOccurs="0"/>
-    </xs:sequence>
-    <xs:attribute name="cssClass" type="xs:string"/>
-    <xs:attribute name="defaultView" type="xs:string"/>
-    <xs:attribute name="hidden" type="tns:where"/>
-    <xs:attribute name="id" type="xs:string" use="required"/>
-    <xs:attribute name="namedEscaped" type="xs:boolean"/>
-    <xs:attribute name="paged" type="xs:int"/>
-  </xs:complexType>
-
-  <xs:simpleType name="bookmarkPolicy">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="AS_ROOT"/>
-      <xs:enumeration value="AS_CHILD"/>
-      <xs:enumeration value="NEVER"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="cssClassFaPosition">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="LEFT"/>
-      <xs:enumeration value="RIGHT"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="where">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="EVERYWHERE"/>
-      <xs:enumeration value="ANYWHERE"/>
-      <xs:enumeration value="OBJECT_FORMS"/>
-      <xs:enumeration value="REFERENCES_PARENT"/>
-      <xs:enumeration value="PARENTED_TABLES"/>
-      <xs:enumeration value="STANDALONE_TABLES"/>
-      <xs:enumeration value="ALL_TABLES"/>
-      <xs:enumeration value="ALL_EXCEPT_STANDALONE_TABLES"/>
-      <xs:enumeration value="NOWHERE"/>
-      <xs:enumeration value="NOT_SPECIFIED"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="position">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="BELOW"/>
-      <xs:enumeration value="RIGHT"/>
-      <xs:enumeration value="PANEL"/>
-      <xs:enumeration value="PANEL_DROPDOWN"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="labelPosition">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="DEFAULT"/>
-      <xs:enumeration value="LEFT"/>
-      <xs:enumeration value="RIGHT"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="NONE"/>
-    </xs:restriction>
-  </xs:simpleType>
-</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/adocs/documentation/src/main/asciidoc/schema/applib/layout/fixedcols/fixedcols.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/applib/layout/fixedcols/fixedcols.xsd b/adocs/documentation/src/main/asciidoc/schema/applib/layout/fixedcols/fixedcols.xsd
deleted file mode 100644
index 7820a18..0000000
--- a/adocs/documentation/src/main/asciidoc/schema/applib/layout/fixedcols/fixedcols.xsd
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://isis.apache.org/schema/applib/layout/fixedcols" xmlns:tns="http://isis.apache.org/schema/applib/layout/fixedcols" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://isis.apache.org/schema/applib/layout/common">
-
-    <xs:import namespace="http://isis.apache.org/schema/applib/layout/common" schemaLocation="../common"/>
-
-    <xs:element name="grid" type="tns:grid"/>
-
-    <xs:complexType name="grid">
-        <xs:sequence>
-            <xs:element ref="ns1:action" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element name="left" type="tns:fcColumn" minOccurs="0"/>
-            <xs:element name="tabGroup" type="tns:fcTabGroup" maxOccurs="unbounded"/>
-            <xs:element name="right" type="tns:fcColumn" minOccurs="0"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="fcColumn">
-        <xs:sequence>
-            <xs:element ref="ns1:fieldSet" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="ns1:collection" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="span" type="xs:int" use="required"/>
-    </xs:complexType>
-
-    <xs:complexType name="fcTabGroup">
-        <xs:sequence>
-            <xs:element name="tab" type="tns:tab" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="tab">
-        <xs:sequence>
-            <xs:element name="left" type="tns:fcColumn"/>
-            <xs:element name="middle" type="tns:fcColumn" minOccurs="0"/>
-            <xs:element name="right" type="tns:fcColumn" minOccurs="0"/>
-        </xs:sequence>
-        <xs:attribute name="name" type="xs:string" use="required"/>
-    </xs:complexType>
-</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index 5aaf4ce..73982e9 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -75,7 +75,7 @@ public @interface ActionLayout {
     CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT;
 
     @XmlType(
-            namespace = "http://isis.apache.org/schema/applib/layout/common"
+            namespace = "http://isis.apache.org/applib/layout/component"
     )
     enum CssClassFaPosition {
         LEFT, RIGHT
@@ -115,7 +115,7 @@ public @interface ActionLayout {
     Position position() default Position.BELOW;
 
     @XmlType(
-            namespace = "http://isis.apache.org/schema/applib/layout/common"
+            namespace = "http://isis.apache.org/applib/layout/component"
     )
     enum Position {
         BELOW,

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
index 483e4f1..70e810e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
@@ -22,7 +22,7 @@ package org.apache.isis.applib.annotation;
 import javax.xml.bind.annotation.XmlType;
 
 @XmlType(
-        namespace = "http://isis.apache.org/schema/applib/layout/common"
+        namespace = "http://isis.apache.org/applib/layout/component"
 )
 public enum BookmarkPolicy {
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
index cabb920..f0f39b3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlType;
  * The means by which a domain service action will be contributed to a domain object.
  */
 @XmlType(
-        namespace = "http://isis.apache.org/schema/applib/layout/common"
+        namespace = "http://isis.apache.org/applib/layout/component"
 )
 public enum Contributed {
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
index e43dc31..102aa36 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
@@ -27,7 +27,7 @@ import javax.xml.bind.annotation.XmlType;
  * @see org.apache.isis.applib.annotation.ParameterLayout
  */
 @XmlType(
-        namespace = "http://isis.apache.org/schema/applib/layout/common"
+        namespace = "http://isis.apache.org/applib/layout/component"
 )
 public enum LabelPosition {
     DEFAULT,

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderType.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderType.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderType.java
index d1205fa..6dfaf9e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderType.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderType.java
@@ -21,7 +21,7 @@ package org.apache.isis.applib.annotation;
 import javax.xml.bind.annotation.XmlType;
 
 @XmlType(
-        namespace = "http://isis.apache.org/schema/applib/layout/common"
+        namespace = "http://isis.apache.org/applib/layout/component"
 )
 public enum RenderType {
     EAGERLY,

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Where.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
index ae072d2..3277649 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Where.java
@@ -41,7 +41,7 @@ import org.apache.isis.applib.util.Enums;
  * the framework developer should only use those values that represent concrete locations.  
  */
 @XmlType(
-        namespace = "http://isis.apache.org/schema/applib/layout/common"
+        namespace = "http://isis.apache.org/applib/layout/component"
 )
 public enum Where {
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFix.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFix.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFix.java
deleted file mode 100644
index 29bf036..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFix.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-public abstract class BS3ClearFix extends BS3RowContent {
-
-    public abstract String toCssClass();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixHidden.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixHidden.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixHidden.java
deleted file mode 100644
index 69e8367..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixHidden.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(
-        name = "clearFixHidden"
-)
-@XmlType(
-        name = "clearFixHidden"
-)
-public class BS3ClearFixHidden extends BS3ClearFix {
-
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public String toCssClass() {
-        return "clearfix hidden-" + getSize().toCssClassFragment();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixVisible.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixVisible.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixVisible.java
deleted file mode 100644
index 523e668..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ClearFixVisible.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(
-        name = "clearFixVisible"
-)
-@XmlType(
-        name = "clearFixVisible"
-)
-public class BS3ClearFixVisible extends BS3ClearFix {
-
-    private static final long serialVersionUID = 1L;
-
-    public enum CssDisplay {
-        BLOCK,
-        INLINE,
-        INLINE_BLOCK
-    }
-
-    private CssDisplay cssDisplay;
-
-
-    @XmlAttribute(required = true)
-    public CssDisplay getCssDisplay() {
-        return cssDisplay;
-    }
-
-    public void setCssDisplay(final CssDisplay cssDisplay) {
-        this.cssDisplay = cssDisplay;
-    }
-
-
-    @Override
-    public String toCssClass() {
-        return "clearfix visible-" + getSize().toCssClassFragment() + "-" + getCssClass().toLowerCase().replace('_', '-');
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Col.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Col.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Col.java
deleted file mode 100644
index d568f05..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Col.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.ActionLayoutDataOwner;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutDataOwner;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutDataOwner;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.FieldSetOwner;
-
-/**
- * A column within a row which, depending on its {@link #getSpan()}, could be as narrow as 1/12th of the page's width, all the way up to spanning the entire page.
- *
- * <p>
- *     Pretty much other content can be contained within a column, though most commonly it will be {@link FieldSet fieldset}s
- *     (a group of properties) or {@link CollectionLayoutData collection}s.  However, columns can also be used to
- *     contain further {@link BS3Row row}s (creating a nested grid of rows/cols/rows/cols) and {@link BS3TabGroup tabgroup}s.
- * </p>
- *
- * <p>
- *     It is rendered as a (eg) &lt;div class=&quot;col-md-4 ...&quot;&gt;
- * </p>
- */
-@XmlRootElement(
-        name = "col"
-)
-@XmlType(
-        name = "col"
-        , propOrder = {
-            "domainObject",
-            "actions",
-            "rows",
-            "tabGroups",
-            "fieldSets",
-            "collections",
-            "metadataError"
-        }
-)
-public class BS3Col extends BS3RowContent
-        implements ActionLayoutDataOwner, BS3TabGroupOwner, BS3RowOwner, FieldSetOwner, HasCssId,
-        CollectionLayoutDataOwner, DomainObjectLayoutDataOwner {
-
-    private static final long serialVersionUID = 1L;
-
-
-
-    private String id;
-
-    /**
-     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
-     */
-    @XmlAttribute(required = false)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(final String id) {
-        this.id = id;
-    }
-
-
-    private int span;
-
-    @XmlAttribute(required = true)
-    public int getSpan() {
-        return span;
-    }
-
-    public void setSpan(final int span) {
-        this.span = span;
-    }
-
-
-    private Boolean unreferencedActions;
-
-    /**
-     * Whether this column should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
-     *
-     * <p>
-     *     Any layout must have precisely one column or {@link FieldSet} that has this attribute set.
-     * </p>
-     */
-    @XmlAttribute(required = false)
-    public Boolean isUnreferencedActions() {
-        return unreferencedActions;
-    }
-
-    public void setUnreferencedActions(final Boolean unreferencedActions) {
-        this.unreferencedActions = unreferencedActions;
-    }
-
-
-    private Boolean unreferencedCollections;
-    /**
-     * Whether this column should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
-     *
-     * <p>
-     *     Any layout must have precisely one column or {@link BS3TabGroup tabgroup} that has this attribute set.
-     * </p>
-     */
-    @XmlAttribute(required = false)
-    public Boolean isUnreferencedCollections() {
-        return unreferencedCollections;
-    }
-
-    public void setUnreferencedCollections(final Boolean unreferencedCollections) {
-        this.unreferencedCollections = unreferencedCollections;
-    }
-
-
-
-
-
-    private DomainObjectLayoutData domainObject;
-
-    /**
-     * Whether to show the object's icon and title.
-     */
-    @XmlElementRef(type=DomainObjectLayoutData.class, name="domainObject", required = false)
-    public DomainObjectLayoutData getDomainObject() {
-        return domainObject;
-    }
-
-    public void setDomainObject(final DomainObjectLayoutData domainObjectLayoutData) {
-        this.domainObject = domainObjectLayoutData;
-    }
-
-
-
-    private List<ActionLayoutData> actions = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElementRef(type = ActionLayoutData.class, name = "action", required = false)
-    public List<ActionLayoutData> getActions() {
-        return actions;
-    }
-
-    public void setActions(final List<ActionLayoutData> actions) {
-        this.actions = actions;
-    }
-
-
-
-    private List<BS3Row> rows = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElement(name = "row", required = false)
-    public List<BS3Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(final List<BS3Row> rows) {
-        this.rows = rows;
-    }
-
-
-
-    private List<BS3TabGroup> tabGroups = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElement(name = "tabGroup", required = false)
-    public List<BS3TabGroup> getTabGroups() {
-        return tabGroups;
-    }
-
-    public void setTabGroups(final List<BS3TabGroup> tabGroups) {
-        this.tabGroups = tabGroups;
-    }
-
-
-
-    private List<FieldSet> fieldSets = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElementRef(type=FieldSet.class, name = "fieldSet", required = false)
-    public List<FieldSet> getFieldSets() {
-        return fieldSets;
-    }
-
-    public void setFieldSets(final List<FieldSet> fieldSets) {
-        this.fieldSets = fieldSets;
-    }
-
-
-
-    private List<CollectionLayoutData> collections = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElementRef(type=CollectionLayoutData.class, name = "collection", required = false)
-    public List<CollectionLayoutData> getCollections() {
-        return collections;
-    }
-
-    public void setCollections(final List<CollectionLayoutData> collections) {
-        this.collections = collections;
-    }
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-
-    public String toCssClass() {
-        final Size size = getSize() != null? getSize(): Size.MD;
-        return "col-" + size.toCssClassFragment() + "-" + getSpan();
-    }
-
-
-    @Override public String toString() {
-        return "BS3Col{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Element.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Element.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Element.java
deleted file mode 100644
index e407d10..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Element.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.io.Serializable;
-
-public interface BS3Element extends WithinGrid, Serializable {
-
-    /**
-     * Any additional CSS classes to render on the page element corresponding to this object,
-     * eg as per the <a href="http://getbootstrap.com/css/#grid-less">Bootstrap mixins</a> or just for
-     * custom styling.
-     */
-    String getCssClass();
-
-    void setCssClass(final String cssClass);
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ElementAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ElementAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ElementAbstract.java
deleted file mode 100644
index 0c39abc..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3ElementAbstract.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-/**
- * Superclass for all layout classes, factoring out the common {@link #getCssClass()} attribute.
- */
-public abstract class BS3ElementAbstract implements BS3Element {
-
-    private String cssClass;
-
-    /**
-     * Any additional CSS classes to render on the page element corresponding to this object,
-     * eg as per the <a href="http://getbootstrap.com/css/#grid-less">Bootstrap mixins</a> or just for
-     * custom styling.
-     */
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    public void setCssClass(final String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Grid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Grid.java
deleted file mode 100644
index 7ec9665..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Grid.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.FieldSet;
-import org.apache.isis.applib.layout.common.Grid;
-import org.apache.isis.applib.layout.common.GridAbstract;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
-import org.apache.isis.applib.services.dto.Dto;
-
-/**
- * This is the top-level for rendering the domain object's properties, collections and actions.  It simply consists
- * of a number of rows.
- *
- * <p>
- *     The element is rendered as a &lt;div class=&quot;...&quot;&gt;
- * </p>
- */
-@XmlRootElement(
-        name = "grid"
-)
-@XmlType(
-        name = "grid"
-        , propOrder = {
-            "rows",
-            "metadataErrors"
-        }
-)
-public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwner {
-
-    private static final long serialVersionUID = 1L;
-
-
-    private String cssClass;
-
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    public void setCssClass(final String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-
-
-
-    private List<BS3Row> rows = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElement(name = "row", required = true)
-    public List<BS3Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(final List<BS3Row> rows) {
-        this.rows = rows;
-    }
-
-
-
-    private List<String> metadataErrors = Lists.newArrayList();
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(name = "metadataError", required = false)
-    public List<String> getMetadataErrors() {
-        return metadataErrors;
-    }
-
-    public void setMetadataErrors(final List<String> metadataErrors) {
-        this.metadataErrors = metadataErrors;
-    }
-
-
-
-
-    private BS3RowOwner owner;
-
-
-
-    public interface Visitor extends Grid.Visitor {
-        void preVisit(final BS3Grid bs3Grid);
-        void visit(final BS3Grid bs3Grid);
-        void postVisit(final BS3Grid bs3Grid);
-        void preVisit(final BS3Row bs3Row);
-        void visit(final BS3Row bs3Row);
-        void postVisit(final BS3Row bs3Row);
-        void preVisit(final BS3Col bs3Col);
-        void visit(final BS3Col bs3Col);
-        void postVisit(final BS3Col bs3Col);
-        void visit(final BS3ClearFix bs3ClearFix);
-        void preVisit(final BS3TabGroup bs3TabGroup);
-        void visit(final BS3TabGroup bs3TabGroup);
-        void postVisit(final BS3TabGroup bs3TabGroup);
-        void preVisit(final BS3Tab bs3Tab);
-        void visit(final BS3Tab bs3Tab);
-        void postVisit(final BS3Tab bs3Tab);
-    }
-
-    public static class VisitorAdapter extends Grid.VisitorAdapter implements Visitor {
-        @Override public void preVisit(final BS3Grid bs3Grid) { }
-        @Override public void visit(final BS3Grid bs3Grid) { }
-        @Override public void postVisit(final BS3Grid bs3Grid) { }
-
-        @Override public void preVisit(final BS3Row bs3Row) { }
-        @Override public void visit(final BS3Row bs3Row) { }
-        @Override public void postVisit(final BS3Row bs3Row) { }
-
-        @Override public void preVisit(final BS3Col bs3Col) { }
-        @Override public void visit(final BS3Col bs3Col) { }
-        @Override public void postVisit(final BS3Col bs3Col) { }
-
-        @Override public void visit(final BS3ClearFix bs3ClearFix) { }
-
-        @Override public void preVisit(final BS3TabGroup bs3TabGroup) { }
-        @Override public void visit(final BS3TabGroup bs3TabGroup) { }
-        @Override public void postVisit(final BS3TabGroup bs3TabGroup) { }
-
-        @Override public void preVisit(final BS3Tab bs3Tab) { }
-        @Override public void visit(final BS3Tab bs3Tab) { }
-        @Override public void postVisit(final BS3Tab bs3Tab) { }
-    }
-
-    public void visit(final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        bs3Visitor.preVisit(this);
-        bs3Visitor.visit(this);
-        traverseRows(this, visitor);
-        bs3Visitor.postVisit(this);
-    }
-
-    protected void traverseRows(final BS3RowOwner rowOwner, final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3Row> rows = rowOwner.getRows();
-        for (BS3Row bs3Row : Lists.newArrayList(rows)) {
-            bs3Row.setOwner(this);
-            bs3Visitor.preVisit(bs3Row);
-            bs3Visitor.visit(bs3Row);
-            traverseCols(visitor, bs3Row);
-            bs3Visitor.postVisit(bs3Row);
-        }
-    }
-
-    private void traverseCols(final Grid.Visitor visitor, final BS3Row bs3Row) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3RowContent> cols = bs3Row.getCols();
-        for (BS3RowContent rowContent : Lists.newArrayList(cols)) {
-            rowContent.setOwner(bs3Row);
-            if(rowContent instanceof BS3Col) {
-                final BS3Col bs3Col = (BS3Col) rowContent;
-                bs3Visitor.preVisit(bs3Col);
-                bs3Visitor.visit(bs3Col);
-                traverseDomainObject(bs3Col, visitor);
-                traverseTabGroups(bs3Col, visitor);
-                traverseActions(bs3Col, visitor);
-                traverseFieldSets(bs3Col, visitor);
-                traverseCollections(bs3Col, visitor);
-                traverseRows(bs3Col, visitor);
-                bs3Visitor.postVisit(bs3Col);
-            } else if (rowContent instanceof BS3ClearFix) {
-                final BS3ClearFix bs3ClearFix = (BS3ClearFix) rowContent;
-                bs3Visitor.visit(bs3ClearFix);
-            } else {
-                throw new IllegalStateException(
-                        "Unrecognized implementation of BS3RowContent, " + rowContent);
-            }
-        }
-    }
-
-    private void traverseDomainObject(final BS3Col bs3Col, final Grid.Visitor visitor) {
-        final DomainObjectLayoutData domainObject = bs3Col.getDomainObject();
-        if(domainObject == null) {
-            return;
-        }
-        domainObject.setOwner(bs3Col);
-        visitor.visit(domainObject);
-    }
-
-    private void traverseTabGroups(
-            final BS3TabGroupOwner bs3TabGroupOwner,
-            final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3TabGroup> tabGroups = bs3TabGroupOwner.getTabGroups();
-        for (BS3TabGroup bs3TabGroup : Lists.newArrayList(tabGroups)) {
-            bs3TabGroup.setOwner(bs3TabGroupOwner);
-            bs3Visitor.preVisit(bs3TabGroup);
-            bs3Visitor.visit(bs3TabGroup);
-            traverseTabs(bs3TabGroup, visitor);
-            bs3Visitor.postVisit(bs3TabGroup);
-        }
-    }
-
-    private void traverseTabs(
-            final BS3TabOwner bs3TabOwner,
-            final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3Tab> tabs = bs3TabOwner.getTabs();
-        for (BS3Tab tab : Lists.newArrayList(tabs)) {
-            tab.setOwner(bs3TabOwner);
-            bs3Visitor.preVisit(tab);
-            bs3Visitor.visit(tab);
-            traverseRows(tab, visitor);
-            bs3Visitor.postVisit(tab);
-        }
-    }
-
-    private static Visitor asBs3Visitor(final Grid.Visitor visitor) {
-        return visitor instanceof Visitor? (Visitor) visitor : new BS3Grid.VisitorAdapter() {
-            @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
-                visitor.visit(domainObjectLayoutData);
-            }
-
-            @Override public void visit(final ActionLayoutData actionLayoutData) {
-                visitor.visit(actionLayoutData);
-            }
-
-            @Override public void visit(final PropertyLayoutData propertyLayoutData) {
-                visitor.visit(propertyLayoutData);
-            }
-
-            @Override public void visit(final CollectionLayoutData collectionLayoutData) {
-                visitor.visit(collectionLayoutData);
-            }
-
-            @Override public void visit(final FieldSet fieldSet) {
-                visitor.visit(fieldSet);
-            }
-        };
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, BS3Tab> getAllTabsByName() {
-        final LinkedHashMap<String, BS3Tab> tabsByName = Maps.newLinkedHashMap();
-
-        visit(new BS3Grid.VisitorAdapter() {
-            @Override
-            public void visit(final BS3Tab bS3Tab) {
-                tabsByName.put(bS3Tab.getName(), bS3Tab);
-            }
-        });
-        return tabsByName;
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, HasCssId> getAllCssId() {
-        final LinkedHashMap<String, HasCssId> divsByCssId = Maps.newLinkedHashMap();
-
-        visit(new BS3Grid.VisitorAdapter() {
-            @Override
-            public void visit(final BS3Row bs3Row) {
-                final String id = bs3Row.getId();
-                divsByCssId.put(id, bs3Row);
-            }
-        });
-        return divsByCssId;
-    }
-
-    @Override
-    @Programmatic
-    @XmlTransient
-    public BS3Grid getGrid() {
-        return this;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Row.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Row.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Row.java
deleted file mode 100644
index d34e3ec..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Row.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlElementRefs;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * Contains a row of content, either on the top-level {@link BS3Grid page} or at any other lower-level element that can
- * contain rows, eg {@link BS3Tab tabs}.
- *
- * <p>
- *     It is rendered as a &lt;div class=&quot;row ...&quot;&gt;
- * </p>
- */
-@XmlType(
-        name = "row"
-        , propOrder = {
-            "cols"
-            , "metadataError"
-        }
-)
-public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowContentOwner {
-
-    private static final long serialVersionUID = 1L;
-
-
-    private String id;
-
-    /**
-     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
-     */
-    @XmlAttribute(required = false)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(final String id) {
-        this.id = id;
-    }
-
-
-
-    private List<BS3RowContent> cols = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElementRefs({
-            @XmlElementRef(type = BS3Col.class, name="col", required = true),
-            @XmlElementRef(type = BS3ClearFixVisible.class,  name="clearFixVisible", required = false),
-            @XmlElementRef(type = BS3ClearFixHidden.class,  name="clearFixHidden", required = false)
-    })
-    public List<BS3RowContent> getCols() {
-        return cols;
-    }
-
-    public void setCols(final List<BS3RowContent> cols) {
-        this.cols = cols;
-    }
-
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-    private BS3RowOwner owner;
-
-
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public BS3RowOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final BS3RowOwner owner) {
-        this.owner = owner;
-    }
-
-
-
-    @Override
-    @XmlTransient
-    @Programmatic
-    public BS3Grid getGrid() {
-        return getOwner().getGrid();
-    }
-
-
-    @Override public String toString() {
-        return "BS3Row{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContent.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContent.java
deleted file mode 100644
index 096578b..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContent.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlTransient;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * Common superclass for any content of a row.
- *
- * <p>
- *     Most commonly the content of a row is {@link BS3Col col}umns, but it may be either of the
- *     {@link BS3ClearFix clearfix} classes.
- * </p>
- *
- */
-public abstract class BS3RowContent extends BS3ElementAbstract {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * As per <a href="http://getbootstrap.com/css/#grid-options">grid options</a>, also used in
-     * <a href="http://getbootstrap.com/css/#responsive-utilities">responsive utility</a> classes.
-     */
-    public enum Size {
-        XS,
-        SM,
-        MD,
-        LG;
-
-        public String toCssClassFragment() {
-            return name().toLowerCase();
-        }
-    }
-
-    private Size size;
-
-    /**
-     * Default if not specified is {@link Size#MD}.
-     */
-    @XmlAttribute(required = false)
-    public Size getSize() {
-        return size;
-    }
-
-    public void setSize(final Size size) {
-        this.size = size;
-    }
-
-
-    private BS3RowContentOwner owner;
-
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public BS3RowContentOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final BS3RowContentOwner owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    @XmlTransient
-    @Programmatic
-    public BS3Grid getGrid() {
-        return getOwner().getGrid();
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContentOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContentOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContentOwner.java
deleted file mode 100644
index ed82e9e..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowContentOwner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import org.apache.isis.applib.layout.common.Owner;
-
-public interface BS3RowContentOwner extends Owner, WithinGrid {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowOwner.java
deleted file mode 100644
index aad3d43..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3RowOwner.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import org.apache.isis.applib.layout.common.Owner;
-
-public interface BS3RowOwner extends Owner, WithinGrid {
-
-    List<BS3Row> getRows();
-}


[4/5] isis git commit: ISIS-993: moving around and renaming the applib schema files for layout

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Tab.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Tab.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Tab.java
deleted file mode 100644
index 100b8a3..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3Tab.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.common.ActionLayoutData;
-import org.apache.isis.applib.layout.common.CollectionLayoutData;
-import org.apache.isis.applib.layout.common.DomainObjectLayoutData;
-import org.apache.isis.applib.layout.common.PropertyLayoutData;
-
-/**
- * Represents a tab within a {@link BS3TabGroup tab group}.
- *
- * <p>
- *     They simply contain one or more {@link BS3Row row}s.
- * </p>
- */
-@XmlType(
-        name = "tab"
-        , propOrder = {
-            "name",
-            "rows"
-        }
-)
-public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
-
-    private static final long serialVersionUID = 1L;
-
-    private String name;
-    @XmlAttribute(required = true)
-    public String getName() {
-        return name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-
-    private List<BS3Row> rows = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElement(name = "row", required = true)
-    public List<BS3Row> getRows() {
-        return rows;
-    }
-
-    public void setRows(final List<BS3Row> rows) {
-        this.rows = rows;
-    }
-
-
-
-    private BS3TabOwner owner;
-
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public BS3TabOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final BS3TabOwner owner) {
-        this.owner = owner;
-    }
-
-
-    public static class Predicates {
-        public static Predicate<BS3Tab> notEmpty() {
-            final AtomicBoolean visitingTheNode = new AtomicBoolean(false);
-            final AtomicBoolean foundContent = new AtomicBoolean(false);
-
-            return new Predicate<BS3Tab>() {
-                @Override
-                public boolean apply(final BS3Tab thisBs3Tab) {
-                    final BS3Grid owningGrid = thisBs3Tab.getGrid();
-                    owningGrid.visit(new BS3Grid.VisitorAdapter() {
-
-                        /**
-                         * if found the tab, then reset 'foundContent' to false, and then use 'visitingTheNode' as
-                         * a marker to indicate that the visitor is now being passed to the nodes underneath the tab.
-                         * In those children, if visited (with the 'visitingTheNode' flag enabled), then simply set the
-                         * 'foundContent' flag.
-                         */
-                        @Override
-                        public void preVisit(final BS3Tab bs3Tab) {
-                            if(bs3Tab == thisBs3Tab) {
-                                foundContent.set(false);
-                                visitingTheNode.set(true);
-                            }
-                        }
-
-                        @Override public void postVisit(final BS3Tab bs3Tab) {
-                            if(bs3Tab == thisBs3Tab) {
-                                visitingTheNode.set(false);
-                            }
-                        }
-
-                        @Override
-                        public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
-                            if(visitingTheNode.get()) {
-                                foundContent.set(true);
-                            }
-                        }
-
-                        @Override
-                        public void visit(final ActionLayoutData actionLayoutData) {
-                            if(visitingTheNode.get()) {
-                                foundContent.set(true);
-                            }
-                        }
-
-                        @Override
-                        public void visit(final PropertyLayoutData propertyLayoutData) {
-                            if(visitingTheNode.get()) {
-                                foundContent.set(true);
-                            }
-                        }
-
-                        @Override
-                        public void visit(final CollectionLayoutData collectionLayoutData) {
-                            if(visitingTheNode.get()) {
-                                foundContent.set(true);
-                            }
-                        }
-                    });
-                    return foundContent.get();
-                }
-            };
-        }
-    }
-
-    @Override
-    @XmlTransient
-    @Programmatic
-    public BS3Grid getGrid() {
-        return getOwner().getGrid();
-    }
-
-    @Override public String toString() {
-        return "BS3Tab{" +
-                "name='" + name + '\'' +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroup.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroup.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroup.java
deleted file mode 100644
index e10fa63..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroup.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * Represents a tab group containing one or more {@link BS3Tab tab}s.
- */
-@XmlType(
-        name = "tabGroup"
-        , propOrder = {
-            "tabs",
-            "metadataError"
-        }
-)
-public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
-
-    private static final long serialVersionUID = 1L;
-
-
-
-    private Boolean unreferencedCollections;
-    /**
-     * Whether this tab group should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
-     *
-     * <p>
-     *     Any layout must have precisely one tab group or {@link BS3Col col} that has this attribute set.
-     * </p>
-     */
-    @XmlAttribute(required = false)
-    public Boolean isUnreferencedCollections() {
-        return unreferencedCollections;
-    }
-
-    public void setUnreferencedCollections(final Boolean unreferencedCollections) {
-        this.unreferencedCollections = unreferencedCollections;
-    }
-
-
-
-
-    private List<BS3Tab> tabs = Lists.newArrayList();
-
-    // no wrapper; required=false because may be auto-generated
-    @XmlElement(name = "tab", required = false)
-    public List<BS3Tab> getTabs() {
-        return tabs;
-    }
-
-    public void setTabs(final List<BS3Tab> tabs) {
-        this.tabs = tabs;
-    }
-
-
-    private BS3TabGroupOwner owner;
-
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public BS3TabGroupOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final BS3TabGroupOwner owner) {
-        this.owner = owner;
-    }
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-    @Override
-    @XmlTransient
-    @Programmatic
-    public BS3Grid getGrid() {
-        return getOwner().getGrid();
-    }
-
-}
-

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroupOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroupOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroupOwner.java
deleted file mode 100644
index 24b6b0e..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabGroupOwner.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import org.apache.isis.applib.layout.common.Owner;
-
-public interface BS3TabGroupOwner extends Owner, WithinGrid {
-
-    List<BS3TabGroup> getTabGroups();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabOwner.java
deleted file mode 100644
index ebcb4ae..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/BS3TabOwner.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import java.util.List;
-
-import org.apache.isis.applib.layout.common.Owner;
-
-public interface BS3TabOwner extends Owner, WithinGrid {
-
-    List<BS3Tab> getTabs();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/HasCssId.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/HasCssId.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/HasCssId.java
deleted file mode 100644
index e671d5b..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/HasCssId.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-public interface HasCssId {
-
-    /**
-     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
-     */
-    String getId();
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/WithinGrid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/WithinGrid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/WithinGrid.java
deleted file mode 100644
index ac3faa5..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/WithinGrid.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.bootstrap3;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-public interface WithinGrid {
-
-    @Programmatic
-    BS3Grid getGrid();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/package-info.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/package-info.java
deleted file mode 100644
index 751f620..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/bootstrap3/package-info.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  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.
- */
-
-/**
- * The classes in this package define how to layout the properties, collections and actions of a domain object - the
- * building blocks - as defined in the <code>members.v1</code> package.
- *
- * <p>
- *     The layout is modelled closely after <a href="http://getbootstrap.com/">Bootstrap</a>, and is intended to
- *     support the grid layouts implemented by that CSS framework.  This flexibility comes at the cost of some
- *     verbosity.
- * </p>
- */
-@javax.xml.bind.annotation.XmlSchema(
-        namespace = "http://isis.apache.org/schema/applib/layout/bootstrap3",
-        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
-)
-package org.apache.isis.applib.layout.bootstrap3;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutData.java
deleted file mode 100644
index 6bd4113..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutData.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.io.Serializable;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.Where;
-
-/**
- * Describes the layout of a single action, broadly corresponding to {@link org.apache.isis.applib.annotation.ActionLayout}.
- *
- * <p>
- *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
- *  to domain services.
- * </p>
- */
-@XmlRootElement(
-        name = "action"
-)
-@XmlType(
-    name = "action"
-    , propOrder = {
-        "named"
-        , "describedAs"
-        , "metadataError"
-    }
-)
-public class ActionLayoutData implements Serializable, Owned<ActionLayoutDataOwner>, HasCssClass, HasCssClassFa,
-        HasDescribedAs, HasHidden, HasNamed, HasBookmarking {
-
-    private static final long serialVersionUID = 1L;
-
-    public ActionLayoutData() {
-    }
-    public ActionLayoutData(final String id) {
-        setId(id);
-    }
-
-    private String id;
-    /**
-     * Method name.
-     *
-     * <p>
-     *     Overloaded methods are not supported.
-     * </p>
-     */
-    @XmlAttribute(name="id", required = true)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-
-
-    private BookmarkPolicy bookmarking;
-
-    @Override
-    @XmlAttribute(required = false)
-    public BookmarkPolicy getBookmarking() {
-        return bookmarking;
-    }
-
-    @Override
-    public void setBookmarking(BookmarkPolicy bookmarking) {
-        this.bookmarking = bookmarking;
-    }
-
-
-    private String cssClass;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    @Override
-    public void setCssClass(String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-    private String cssClassFa;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClassFa() {
-        return cssClassFa;
-    }
-
-    @Override
-    public void setCssClassFa(String cssClassFa) {
-        this.cssClassFa = cssClassFa;
-    }
-
-
-
-    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
-
-    @Override
-    @XmlAttribute(required = false)
-    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
-        return cssClassFaPosition;
-    }
-
-    @Override
-    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
-        this.cssClassFaPosition = cssClassFaPosition;
-    }
-
-
-    private String describedAs;
-
-    @Override
-    @XmlElement(required = false)
-    public String getDescribedAs() {
-        return describedAs;
-    }
-
-    @Override
-    public void setDescribedAs(String describedAs) {
-        this.describedAs = describedAs;
-    }
-
-
-
-    private Where hidden;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Where getHidden() {
-        return hidden;
-    }
-
-    @Override
-    public void setHidden(Where hidden) {
-        this.hidden = hidden;
-    }
-
-
-
-    private String named;
-
-    @Override
-    @XmlElement(required = false)
-    public String getNamed() {
-        return named;
-    }
-
-    @Override
-    public void setNamed(String named) {
-        this.named = named;
-    }
-
-
-
-    private Boolean namedEscaped;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Boolean getNamedEscaped() {
-        return namedEscaped;
-    }
-
-    @Override
-    public void setNamedEscaped(Boolean namedEscaped) {
-        this.namedEscaped = namedEscaped;
-    }
-
-
-
-    private org.apache.isis.applib.annotation.ActionLayout.Position position;
-
-    @XmlAttribute(required = false)
-    public org.apache.isis.applib.annotation.ActionLayout.Position getPosition() {
-        return position;
-    }
-
-    public void setPosition(org.apache.isis.applib.annotation.ActionLayout.Position position) {
-        this.position = position;
-    }
-
-
-
-
-    private ActionLayoutDataOwner owner;
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public ActionLayoutDataOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final ActionLayoutDataOwner owner) {
-        this.owner = owner;
-    }
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-
-    @Override public String toString() {
-        return "ActionLayoutData{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutDataOwner.java
deleted file mode 100644
index bf2c9ca..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/ActionLayoutDataOwner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.util.List;
-
-public interface ActionLayoutDataOwner extends Owner {
-    List<ActionLayoutData> getActions();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutData.java
deleted file mode 100644
index 05a331f..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutData.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.io.Serializable;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.base.Function;
-
-import org.apache.isis.applib.annotation.Where;
-
-/**
- * Describes the layout of a single collection, broadly corresponds to the {@link org.apache.isis.applib.annotation.CollectionLayout} annotation.
- *
- * <p>
- *     Note that {@link org.apache.isis.applib.annotation.CollectionLayout#render()} is omitted because
- *     {@link #defaultView} is its replacement.
- * </p>
- */
-@XmlRootElement(
-        name = "collection"
-)
-@XmlType(
-        name = "collection"
-        , propOrder = {
-                "named"
-                ,"describedAs"
-                ,"sortedBy"
-                , "actions"
-                , "metadataError"
-        }
-)
-public class CollectionLayoutData
-        implements MemberRegion<CollectionLayoutDataOwner>,
-                   ActionLayoutDataOwner,
-                   Serializable,
-                   HasCssClass, HasDescribedAs, HasHidden, HasNamed {
-
-    private static final long serialVersionUID = 1L;
-
-    public CollectionLayoutData() {
-    }
-    public CollectionLayoutData(final String id) {
-        setId(id);
-    }
-
-
-    private String id;
-
-    /**
-     * Collection identifier, being the getter method without "get" prefix, first letter lower cased.
-     */
-    @XmlAttribute(required = true)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-
-
-    private String cssClass;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    @Override
-    public void setCssClass(String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-
-    private String describedAs;
-
-    @Override
-    @XmlElement(required = false)
-    public String getDescribedAs() {
-        return describedAs;
-    }
-
-    @Override
-    public void setDescribedAs(String describedAs) {
-        this.describedAs = describedAs;
-    }
-
-
-
-    private String defaultView;
-
-    /**
-     * Typically <code>table</code> or <code>hidden</code>, but could be any other named view that is configured and
-     * appropriate, eg <code>gmap3</code> or <code>fullcalendar2</code>.
-     */
-    @XmlAttribute(required = false)
-    public String getDefaultView() {
-        return defaultView;
-    }
-
-    public void setDefaultView(String defaultView) {
-        this.defaultView = defaultView;
-    }
-
-
-    private Where hidden;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Where getHidden() {
-        return hidden;
-    }
-
-    @Override
-    public void setHidden(Where hidden) {
-        this.hidden = hidden;
-    }
-
-
-    private String named;
-
-    @Override
-    @XmlElement(required = false)
-    public String getNamed() {
-        return named;
-    }
-
-    @Override
-    public void setNamed(String named) {
-        this.named = named;
-    }
-
-
-    private Boolean namedEscaped;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Boolean getNamedEscaped() {
-        return namedEscaped;
-    }
-
-    @Override
-    public void setNamedEscaped(Boolean namedEscaped) {
-        this.namedEscaped = namedEscaped;
-    }
-
-
-    private Integer paged;
-
-    @XmlAttribute(required = false)
-    public Integer getPaged() {
-        return paged;
-    }
-
-    public void setPaged(Integer paged) {
-        this.paged = paged;
-    }
-
-
-
-    private String sortedBy;
-
-    @XmlElement(required = false)
-    public String getSortedBy() {
-        return sortedBy;
-    }
-
-    public void setSortedBy(String sortedBy) {
-        this.sortedBy = sortedBy;
-    }
-
-
-
-    private List<ActionLayoutData> actions;
-
-    // no wrapper
-    @XmlElement(name = "action", required = false)
-    public List<ActionLayoutData> getActions() {
-        return actions;
-    }
-
-    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
-        this.actions = actionLayoutDatas;
-    }
-
-
-
-    private CollectionLayoutDataOwner owner;
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public CollectionLayoutDataOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final CollectionLayoutDataOwner owner) {
-        this.owner = owner;
-    }
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-
-
-
-    public static class Functions {
-        private Functions(){}
-
-        public static Function<CollectionLayoutData, String> id() {
-            return new Function<CollectionLayoutData, String>() {
-                @Override
-                public String apply(final CollectionLayoutData metadata) {
-                    return metadata.getId();
-                }
-            };
-        }
-    }
-
-    @Override public String toString() {
-        return "CollectionLayoutData{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutDataOwner.java
deleted file mode 100644
index 0eae2c7..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/CollectionLayoutDataOwner.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.util.List;
-
-public interface CollectionLayoutDataOwner extends MemberRegionOwner {
-
-    List<CollectionLayoutData> getCollections();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
deleted file mode 100644
index a0502e3..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutData.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.io.Serializable;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-
-/**
- * Describes the layout of the title and icon of a domain object, broadly corresponding to {@link org.apache.isis.applib.annotation.DomainObjectLayout}.
- */
-@XmlRootElement(
-        name = "domainObject"
-)
-@XmlType(
-        name = "domainObject"
-        , propOrder = {
-            "named"
-            , "describedAs"
-            , "plural"
-            , "metadataError"
-        }
-)
-public class DomainObjectLayoutData implements Serializable, Owned<DomainObjectLayoutDataOwner>,
-        HasBookmarking, HasCssClass, HasCssClassFa, HasDescribedAs, HasNamed {
-
-    private static final long serialVersionUID = 1L;
-
-    public DomainObjectLayoutData() {
-    }
-
-
-    private BookmarkPolicy bookmarking;
-
-    @Override
-    @XmlAttribute(required = false)
-    public BookmarkPolicy getBookmarking() {
-        return bookmarking;
-    }
-
-    @Override
-    public void setBookmarking(BookmarkPolicy bookmarking) {
-        this.bookmarking = bookmarking;
-    }
-
-
-
-    private String cssClass;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    @Override
-    public void setCssClass(String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-    private String cssClassFa;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClassFa() {
-        return cssClassFa;
-    }
-
-    @Override
-    public void setCssClassFa(String cssClassFa) {
-        this.cssClassFa = cssClassFa;
-    }
-
-
-
-    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
-
-    @Override
-    @XmlAttribute(required = false)
-    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
-        return cssClassFaPosition;
-    }
-
-    @Override
-    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
-        this.cssClassFaPosition = cssClassFaPosition;
-    }
-
-
-    private String describedAs;
-
-    @Override
-    @XmlElement(required = false)
-    public String getDescribedAs() {
-        return describedAs;
-    }
-
-    @Override
-    public void setDescribedAs(String describedAs) {
-        this.describedAs = describedAs;
-    }
-
-
-
-    private String named;
-
-    @Override
-    @XmlElement(required = false)
-    public String getNamed() {
-        return named;
-    }
-
-    @Override
-    public void setNamed(String named) {
-        this.named = named;
-    }
-
-
-    private Boolean namedEscaped;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Boolean getNamedEscaped() {
-        return namedEscaped;
-    }
-
-    @Override
-    public void setNamedEscaped(Boolean namedEscaped) {
-        this.namedEscaped = namedEscaped;
-    }
-
-
-
-    private String plural;
-
-    @XmlElement(required = false)
-    public String getPlural() {
-        return plural;
-    }
-
-    public void setPlural(String plural) {
-        this.plural = plural;
-    }
-
-
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-
-    private DomainObjectLayoutDataOwner owner;
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public DomainObjectLayoutDataOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final DomainObjectLayoutDataOwner owner) {
-        this.owner = owner;
-    }
-
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutDataOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutDataOwner.java
deleted file mode 100644
index 77e9e8c..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/DomainObjectLayoutDataOwner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-public interface DomainObjectLayoutDataOwner extends Owner {
-
-    DomainObjectLayoutData getDomainObject();
-    void setDomainObject(DomainObjectLayoutData domainObjectLayoutData);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSet.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSet.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSet.java
deleted file mode 100644
index 7037135..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSet.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.io.Serializable;
-import java.util.List;
-
-import javax.annotation.Nullable;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.layout.bootstrap3.BS3Col;
-
-/**
- * A {@link MemberRegion region} of the page containing a set of
- * related {@link PropertyLayoutData properties} and associated
- * {@link ActionLayoutData actions}.
- */
-@XmlRootElement(
-        name = "fieldSet"
-)
-@XmlType(
-        name = "fieldSet"
-        , propOrder = {
-                "name"
-                , "actions"
-                , "properties"
-                , "metadataError"
-        }
-)
-public class FieldSet
-        implements MemberRegion<FieldSetOwner>,
-                   ActionLayoutDataOwner,
-                   Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    public FieldSet() {
-    }
-
-    public FieldSet(final String name) {
-        setName(name);
-    }
-
-
-
-    private String id;
-
-    /**
-     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
-     */
-    @XmlAttribute(required = false)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(final String id) {
-        this.id = id;
-    }
-
-
-
-    private Boolean unreferencedActions;
-
-    /**
-     * Whether this fieldset should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
-     *
-     * <p>
-     *     Any layout must have precisely one fieldset or {@link BS3Col col} that has this attribute set.
-     * </p>
-     */
-    @XmlAttribute(required = false)
-    public Boolean isUnreferencedActions() {
-        return unreferencedActions;
-    }
-
-    public void setUnreferencedActions(final Boolean unreferencedActions) {
-        this.unreferencedActions = unreferencedActions;
-    }
-
-
-    private Boolean unreferencedProperties;
-    /**
-     * Whether this fieldset should be used to hold any unreferenced properties (contributed or &quot;native&quot;).
-     *
-     * <p>
-     *     Any grid layout must have precisely one fieldset that has this attribute set.
-     * </p>
-     */
-    @XmlAttribute(required = false)
-    public Boolean isUnreferencedProperties() {
-        return unreferencedProperties;
-    }
-
-    public void setUnreferencedProperties(final Boolean unreferencedProperties) {
-        this.unreferencedProperties = unreferencedProperties;
-    }
-
-
-
-
-    private String name;
-
-    /**
-     * Corresponds to the {@link MemberOrder#name()} (when applied to properties).
-     */
-    @XmlAttribute(required = true)
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-
-    private List<ActionLayoutData> actions = Lists.newArrayList();
-
-    // no wrapper
-    @XmlElement(name = "action", required = false)
-    public List<ActionLayoutData> getActions() {
-        return actions;
-    }
-
-    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
-        this.actions = actionLayoutDatas;
-    }
-
-
-
-    private List<PropertyLayoutData> properties = Lists.newArrayList();
-
-    // no wrapper; required=false because may be auto-generated
-    @XmlElement(name = "property", required = false)
-    public List<PropertyLayoutData> getProperties() {
-        return properties;
-    }
-
-    public void setProperties(List<PropertyLayoutData> properties) {
-        this.properties = properties;
-    }
-
-
-    private FieldSetOwner owner;
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public FieldSetOwner getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final FieldSetOwner owner) {
-        this.owner = owner;
-    }
-
-
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-
-    public static class Util {
-        private Util(){}
-        public static Function<? super FieldSet, String> nameOf() {
-            return new Function<FieldSet, String>() {
-                @Nullable @Override
-                public String apply(@Nullable final FieldSet fieldSet) {
-                    return fieldSet.getName();
-                }
-            };
-        }
-    }
-
-    @Override public String toString() {
-        return "FieldSet{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSetOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSetOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSetOwner.java
deleted file mode 100644
index f3e5fd0..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/FieldSetOwner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.util.List;
-
-public interface FieldSetOwner extends MemberRegionOwner {
-    List<FieldSet> getFieldSets();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
deleted file mode 100644
index fd7b067..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Grid.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.util.LinkedHashMap;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.layout.GridService;
-
-/**
- * All top-level page layout classes should implement this interface.
- *
- * <p>
- *     It is used by the {@link GridService} as a common based type for any layouts read in from XML.
- * </p>
- */
-public interface Grid {
-
-    @Programmatic
-    Class<?> getDomainClass();
-
-    @Programmatic
-    void setDomainClass(final Class<?> domainClass);
-
-    @Programmatic
-    boolean isNormalized();
-
-    @Programmatic
-    void setNormalized(final boolean normalized);
-
-    @Programmatic
-    LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById();
-
-    @Programmatic
-    LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById();
-
-    @Programmatic
-    LinkedHashMap<String, ActionLayoutData> getAllActionsById();
-
-    interface Visitor {
-        void visit(final DomainObjectLayoutData domainObjectLayoutData);
-
-        void visit(final ActionLayoutData actionLayoutData);
-
-        void visit(final PropertyLayoutData propertyLayoutData);
-
-        void visit(final CollectionLayoutData collectionLayoutData);
-
-        void visit(final FieldSet fieldSet);
-    }
-
-    class VisitorAdapter implements Visitor {
-        @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
-        }
-        @Override public void visit(final ActionLayoutData actionLayoutData) {
-        }
-        @Override public void visit(final PropertyLayoutData propertyLayoutData) {
-        }
-        @Override public void visit(final CollectionLayoutData collectionLayoutData) {
-        }
-        @Override public void visit(final FieldSet fieldSet) {
-        }
-    }
-
-    @Programmatic
-    void visit(final Grid.Visitor visitor);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
deleted file mode 100644
index eac1588..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/GridAbstract.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlTransient;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.layout.bootstrap3.BS3Grid;
-import org.apache.isis.applib.services.layout.GridService;
-
-/**
- * All top-level page layout classes should implement this interface.
- *
- * <p>
- *     It is used by the {@link GridService} as a common based type for any layouts read in from XML.
- * </p>
- */
-@XmlTransient // ignore this class
-public abstract class GridAbstract implements Grid {
-
-
-    private Class<?> domainClass;
-
-    @Programmatic
-    @XmlTransient
-    public Class<?> getDomainClass() {
-        return domainClass;
-    }
-
-    @Programmatic
-    public void setDomainClass(final Class<?> domainClass) {
-        this.domainClass = domainClass;
-    }
-
-
-
-    private boolean normalized;
-
-    @Programmatic
-    @XmlTransient
-    public boolean isNormalized() {
-        return normalized;
-    }
-
-    @Programmatic
-    public void setNormalized(final boolean normalized) {
-        this.normalized = normalized;
-    }
-
-
-    /**
-     * Convenience for subclasses.
-     */
-    protected void traverseActions(
-            final ActionLayoutDataOwner actionLayoutDataOwner,
-            final GridAbstract.Visitor visitor) {
-        final List<ActionLayoutData> actionLayoutDatas = actionLayoutDataOwner.getActions();
-        if(actionLayoutDatas == null) {
-            return;
-        }
-        for (final ActionLayoutData actionLayoutData : Lists.newArrayList(actionLayoutDatas)) {
-            actionLayoutData.setOwner(actionLayoutDataOwner);
-            visitor.visit(actionLayoutData);
-        }
-    }
-
-
-    /**
-     * Convenience for subclasses.
-     */
-    protected void traverseFieldSets(final FieldSetOwner fieldSetOwner, final GridAbstract.Visitor visitor) {
-        final List<FieldSet> fieldSets = fieldSetOwner.getFieldSets();
-        for (FieldSet fieldSet : Lists.newArrayList(fieldSets)) {
-            fieldSet.setOwner(fieldSetOwner);
-            visitor.visit(fieldSet);
-            traverseActions(fieldSet, visitor);
-            final List<PropertyLayoutData> properties = fieldSet.getProperties();
-            for (final PropertyLayoutData property : Lists.newArrayList(properties)) {
-                property.setOwner(fieldSet);
-                visitor.visit(property);
-                traverseActions(property, visitor);
-            }
-        }
-    }
-
-
-    /**
-     * Convenience for subclasses.
-     */
-    protected void traverseCollections(
-            final CollectionLayoutDataOwner owner, final GridAbstract.Visitor visitor) {
-        final List<CollectionLayoutData> collections = owner.getCollections();
-        for (CollectionLayoutData collection : Lists.newArrayList(collections)) {
-            collection.setOwner(owner);
-            visitor.visit(collection);
-            traverseActions(collection, visitor);
-        }
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById() {
-        final LinkedHashMap<String, PropertyLayoutData> propertiesById = Maps.newLinkedHashMap();
-        visit(new BS3Grid.VisitorAdapter() {
-            public void visit(final PropertyLayoutData propertyLayoutData) {
-                propertiesById.put(propertyLayoutData.getId(), propertyLayoutData);
-            }
-        });
-        return propertiesById;
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById() {
-        final LinkedHashMap<String, CollectionLayoutData> collectionsById = Maps.newLinkedHashMap();
-
-        visit(new BS3Grid.VisitorAdapter() {
-            @Override
-            public void visit(final CollectionLayoutData collectionLayoutData) {
-                collectionsById.put(collectionLayoutData.getId(), collectionLayoutData);
-            }
-        });
-        return collectionsById;
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, ActionLayoutData> getAllActionsById() {
-        final LinkedHashMap<String, ActionLayoutData> actionsById = Maps.newLinkedHashMap();
-
-        visit(new BS3Grid.VisitorAdapter() {
-            @Override
-            public void visit(final ActionLayoutData actionLayoutData) {
-                actionsById.put(actionLayoutData.getId(), actionLayoutData);
-            }
-        });
-        return actionsById;
-    }
-
-
-    @Programmatic
-    @XmlTransient
-    public LinkedHashMap<String, FieldSet> getAllFieldSetsByName() {
-        final LinkedHashMap<String, FieldSet> fieldSetsByName = Maps.newLinkedHashMap();
-
-        visit(new BS3Grid.VisitorAdapter() {
-            @Override
-            public void visit(final FieldSet fieldSet) {
-                fieldSetsByName.put(fieldSet.getName(), fieldSet);
-            }
-        });
-        return fieldSetsByName;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasBookmarking.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasBookmarking.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasBookmarking.java
deleted file mode 100644
index ad841a2..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasBookmarking.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasBookmarking {
-    @XmlAttribute(required = false) BookmarkPolicy getBookmarking();
-
-    void setBookmarking(BookmarkPolicy bookmarking);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClass.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClass.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClass.java
deleted file mode 100644
index e42dc09..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClass.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasCssClass {
-    @XmlAttribute(required = false) String getCssClass();
-
-    void setCssClass(String cssClass);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClassFa.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClassFa.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClassFa.java
deleted file mode 100644
index 763b8dd..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasCssClassFa.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasCssClassFa {
-    @XmlAttribute(required = false) String getCssClassFa();
-
-    void setCssClassFa(String cssClassFa);
-
-    @XmlAttribute(required = false) org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition();
-
-    void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasDescribedAs.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasDescribedAs.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasDescribedAs.java
deleted file mode 100644
index f19c95a..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasDescribedAs.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasDescribedAs {
-    @XmlElement(required = false) String getDescribedAs();
-
-    void setDescribedAs(String describedAs);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasHidden.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasHidden.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasHidden.java
deleted file mode 100644
index 7953141..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasHidden.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import org.apache.isis.applib.annotation.Where;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasHidden {
-    @XmlAttribute(required = false) Where getHidden();
-
-    void setHidden(Where hidden);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasNamed.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasNamed.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasNamed.java
deleted file mode 100644
index 4a29ee9..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/HasNamed.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.isis.applib.layout.common;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * Created by Dan on 10/02/2016.
- */
-public interface HasNamed {
-    @XmlElement(required = false) String getNamed();
-
-    void setNamed(String named);
-
-    @XmlAttribute(required = false) Boolean getNamedEscaped();
-
-    void setNamedEscaped(Boolean namedEscaped);
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegion.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegion.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegion.java
deleted file mode 100644
index f335cde..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegion.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-/**
- * Represents an area on the page containing one or several related members.
- *
- * <p>
- *     Implementations include a <code>FieldSet</code> (containing a number
- *     of properties and their actions), and a <code>CollectionLayoutData</code>
- *     (containing a single collection and associated actions)
- * </p>
- */
-public interface MemberRegion<T extends MemberRegionOwner> extends Owned<T> {
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegionOwner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegionOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegionOwner.java
deleted file mode 100644
index 7bab3ef..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/MemberRegionOwner.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-public interface MemberRegionOwner extends Owner {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owned.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owned.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owned.java
deleted file mode 100644
index c00d795..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owned.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-public interface Owned<T extends Owner> {
-    T getOwner();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owner.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owner.java
deleted file mode 100644
index 239aa32..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/Owner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-public interface Owner {
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
deleted file mode 100644
index 923833a..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/PropertyLayoutData.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.applib.layout.common;
-
-import java.io.Serializable;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.Where;
-
-/**
- * Describes the layout of a single property, broadly corresponds to the {@link org.apache.isis.applib.annotation.PropertyLayout} annotation.
- */
-@XmlRootElement(
-        name = "property"
-)
-@XmlType(
-        name = "property"
-        , propOrder = {
-                "named"
-                , "describedAs"
-                , "actions"
-                , "metadataError"
-        }
-)
-public class PropertyLayoutData
-        implements ActionLayoutDataOwner,
-                   Serializable,
-                   Owned<FieldSet>,
-                   HasCssClass, HasDescribedAs, HasHidden, HasNamed {
-
-    private static final long serialVersionUID = 1L;
-
-    public PropertyLayoutData() {
-    }
-
-    public PropertyLayoutData(final String id) {
-        this.id = id;
-    }
-
-    private String id;
-
-    /**
-     * Property identifier, being the getter method without "get" or "is" prefix, first letter lower cased.
-     */
-    @XmlAttribute(required = true)
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-
-
-    private String cssClass;
-
-    @Override
-    @XmlAttribute(required = false)
-    public String getCssClass() {
-        return cssClass;
-    }
-
-    @Override
-    public void setCssClass(String cssClass) {
-        this.cssClass = cssClass;
-    }
-
-
-    private String describedAs;
-
-    @Override
-    @XmlElement(required = false)
-    public String getDescribedAs() {
-        return describedAs;
-    }
-
-    @Override
-    public void setDescribedAs(String describedAs) {
-        this.describedAs = describedAs;
-    }
-
-
-    private Where hidden;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Where getHidden() {
-        return hidden;
-    }
-
-    @Override
-    public void setHidden(Where hidden) {
-        this.hidden = hidden;
-    }
-
-
-    private LabelPosition labelPosition;
-
-    @XmlAttribute(required = false)
-    public LabelPosition getLabelPosition() {
-        return labelPosition;
-    }
-
-    public void setLabelPosition(LabelPosition labelPosition) {
-        this.labelPosition = labelPosition;
-    }
-
-
-    private Integer multiLine;
-
-    @XmlAttribute(required = false)
-    public Integer getMultiLine() {
-        return multiLine;
-    }
-
-    public void setMultiLine(Integer multiLine) {
-        this.multiLine = multiLine;
-    }
-
-
-    private String named;
-
-    @Override
-    @XmlElement(required = false)
-    public String getNamed() {
-        return named;
-    }
-
-    @Override
-    public void setNamed(String named) {
-        this.named = named;
-    }
-
-
-    private Boolean namedEscaped;
-
-    @Override
-    @XmlAttribute(required = false)
-    public Boolean getNamedEscaped() {
-        return namedEscaped;
-    }
-
-    @Override
-    public void setNamedEscaped(Boolean namedEscaped) {
-        this.namedEscaped = namedEscaped;
-    }
-
-
-    private Boolean renderedAsDayBefore;
-
-    @XmlAttribute(required = false)
-    public Boolean getRenderedAsDayBefore() {
-        return renderedAsDayBefore;
-    }
-
-    public void setRenderedAsDayBefore(Boolean renderedAsDayBefore) {
-        this.renderedAsDayBefore = renderedAsDayBefore;
-    }
-
-
-    private Integer typicalLength;
-
-    @XmlAttribute(required = false)
-    public Integer getTypicalLength() {
-        return typicalLength;
-    }
-
-    public void setTypicalLength(Integer typicalLength) {
-        this.typicalLength = typicalLength;
-    }
-
-
-
-    private List<ActionLayoutData> actions;
-
-    // no wrapper
-    @XmlElement(name = "action", required = false)
-    public List<ActionLayoutData> getActions() {
-        return actions;
-    }
-
-    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
-        this.actions = actionLayoutDatas;
-    }
-
-
-    private FieldSet owner;
-    /**
-     * Owner.
-     *
-     * <p>
-     *     Set programmatically by framework after reading in from XML.
-     * </p>
-     */
-    @XmlTransient
-    public FieldSet getOwner() {
-        return owner;
-    }
-
-    public void setOwner(final FieldSet owner) {
-        this.owner = owner;
-    }
-
-
-
-    private String metadataError;
-
-    /**
-     * For diagnostics; populated by the framework if and only if a metadata error.
-     */
-    @XmlElement(required = false)
-    public String getMetadataError() {
-        return metadataError;
-    }
-
-    public void setMetadataError(final String metadataError) {
-        this.metadataError = metadataError;
-    }
-
-
-    @Override
-    public String toString() {
-        return "PropertyLayoutData{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/common/package-info.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/common/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/layout/common/package-info.java
deleted file mode 100644
index e5e02d9..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/common/package-info.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  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.
- */
-
-/**
- * The classes in this package provide layout metadata for a domain object's properties, collections and actions - the
- * &quot;building blocks&quot; which then must be arranged into some sort of layout.
- *
- * <p>
- *     The <code>bootstrap3</code> and <code>fixedcols</code> packages both provide different ways of doing the layout,
- *     and both reference the classes in this package.
- * </p>
- *
- */
-@javax.xml.bind.annotation.XmlSchema(
-        namespace = "http://isis.apache.org/schema/applib/layout/common",
-        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
-        // specifying the location seems to cause JaxbService#toXsd() to not generate the schema; not sure why...
-        //, location = ..."http://isis.apache.org/schema/metamodel/layout/common/common.xsd"
-)
-package org.apache.isis.applib.layout.common;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/67b6e05e/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
new file mode 100644
index 0000000..a88229a
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
@@ -0,0 +1,253 @@
+/*
+ *  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.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.annotation.Where;
+
+/**
+ * Describes the layout of a single action, broadly corresponding to {@link org.apache.isis.applib.annotation.ActionLayout}.
+ *
+ * <p>
+ *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
+ *  to domain services.
+ * </p>
+ */
+@XmlRootElement(
+        name = "action"
+)
+@XmlType(
+    name = "action"
+    , propOrder = {
+        "named"
+        , "describedAs"
+        , "metadataError"
+    }
+)
+public class ActionLayoutData implements Serializable, Owned<ActionLayoutDataOwner>, HasCssClass, HasCssClassFa,
+        HasDescribedAs, HasHidden, HasNamed, HasBookmarking {
+
+    private static final long serialVersionUID = 1L;
+
+    public ActionLayoutData() {
+    }
+    public ActionLayoutData(final String id) {
+        setId(id);
+    }
+
+    private String id;
+    /**
+     * Method name.
+     *
+     * <p>
+     *     Overloaded methods are not supported.
+     * </p>
+     */
+    @XmlAttribute(name="id", required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private BookmarkPolicy bookmarking;
+
+    @Override
+    @XmlAttribute(required = false)
+    public BookmarkPolicy getBookmarking() {
+        return bookmarking;
+    }
+
+    @Override
+    public void setBookmarking(BookmarkPolicy bookmarking) {
+        this.bookmarking = bookmarking;
+    }
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String cssClassFa;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClassFa() {
+        return cssClassFa;
+    }
+
+    @Override
+    public void setCssClassFa(String cssClassFa) {
+        this.cssClassFa = cssClassFa;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
+
+    @Override
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+        return cssClassFaPosition;
+    }
+
+    @Override
+    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
+        this.cssClassFaPosition = cssClassFaPosition;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.Position position;
+
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.Position getPosition() {
+        return position;
+    }
+
+    public void setPosition(org.apache.isis.applib.annotation.ActionLayout.Position position) {
+        this.position = position;
+    }
+
+
+
+
+    private ActionLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public ActionLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final ActionLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    @Override public String toString() {
+        return "ActionLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+
+}