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/01/09 10:10:47 UTC

[1/5] isis git commit: ISIS-993: started working on adding a fixed column to right hand side

Repository: isis
Updated Branches:
  refs/heads/ISIS-993 70397aadf -> 873cc2e2e


ISIS-993: started working on adding a fixed column to right hand side


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

Branch: refs/heads/ISIS-993
Commit: 3bfcae8c355af10e0a7dec037a17750ecdffe05f
Parents: 70397aa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jan 8 18:48:16 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jan 8 18:49:56 2016 +0000

----------------------------------------------------------------------
 .../apache/isis/applib/layout/v1_0/Column.java  |  6 ++---
 .../isis/applib/layout/v1_0/ColumnHolder.java   | 23 ++++++++++++++++++++
 .../org/apache/isis/applib/layout/v1_0/Tab.java |  2 +-
 .../isis/applib/layout/v1_0/TabGroup.java       | 13 ++++++++++-
 .../ObjectLayoutMetadataServiceDefault.java     | 12 ++++++----
 .../metamodel/spec/ObjectSpecifications.java    |  6 ++---
 .../viewer/wicket/model/models/EntityModel.java |  1 -
 .../collections/EntityCollectionsPanel.java     |  4 +++-
 .../entity/properties/EntityPropertiesForm.java | 17 ++++++---------
 .../EntityTabGroupsPanel$EntityTabPanel.html    |  1 -
 .../entity/tabgroups/EntityTabGroupsPanel.html  |  7 ++++--
 .../entity/tabgroups/EntityTabGroupsPanel.java  |  2 ++
 12 files changed, 67 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
index 1f5ca23..f208a7f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
@@ -84,7 +84,7 @@ public class Column implements Serializable {
     }
 
 
-    private Tab owner;
+    private ColumnHolder owner;
     /**
      * Owner.
      *
@@ -93,11 +93,11 @@ public class Column implements Serializable {
      * </p>
      */
     @XmlTransient
-    public Tab getOwner() {
+    public ColumnHolder getOwner() {
         return owner;
     }
 
-    public void setOwner(final Tab owner) {
+    public void setOwner(final ColumnHolder owner) {
         this.owner = owner;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/ColumnHolder.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/ColumnHolder.java b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/ColumnHolder.java
new file mode 100644
index 0000000..8211750
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/ColumnHolder.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.v1_0;
+
+public interface ColumnHolder {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Tab.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Tab.java b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Tab.java
index 04d2542..4f0a5c3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Tab.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Tab.java
@@ -40,7 +40,7 @@ import org.apache.isis.applib.annotation.Programmatic;
                 , "right"
         }
 )
-public class Tab implements Serializable {
+public class Tab implements ColumnHolder, Serializable {
 
     private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/TabGroup.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/TabGroup.java b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/TabGroup.java
index 7547d5e..6fb93ee 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/TabGroup.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/TabGroup.java
@@ -30,7 +30,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 
 @XmlType()
-public class TabGroup implements Serializable {
+public class TabGroup implements ColumnHolder, Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -53,6 +53,17 @@ public class TabGroup implements Serializable {
 
 
 
+    private Column fixed;
+
+    @XmlElement(required = false)
+    public Column getFixed() {
+        return fixed;
+    }
+
+    public void setFixed(final Column fixed) {
+        this.fixed = fixed;
+    }
+
     private ObjectLayoutMetadata owner;
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
index 972999d..e2a2e1d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
@@ -42,6 +42,7 @@ import org.apache.isis.applib.layout.v1_0.ActionHolder;
 import org.apache.isis.applib.layout.v1_0.ActionLayoutMetadata;
 import org.apache.isis.applib.layout.v1_0.CollectionLayoutMetadata;
 import org.apache.isis.applib.layout.v1_0.Column;
+import org.apache.isis.applib.layout.v1_0.ColumnHolder;
 import org.apache.isis.applib.layout.v1_0.ObjectLayoutMetadata;
 import org.apache.isis.applib.layout.v1_0.PropertyGroup;
 import org.apache.isis.applib.layout.v1_0.PropertyLayoutMetadata;
@@ -407,10 +408,13 @@ public class ObjectLayoutMetadataServiceDefault
 
                 // if there is only a single column and no other contents, then copy the collection Id onto the tab'
                 final Column column = collectionLayoutMetadata.getOwner();
-                final Tab tab = column.getOwner();
-                if(tab.getContents().size() == 1) {
-                    final String collectionName = oneToManyAssociation.getName();
-                    tab.setName(collectionName);
+                final ColumnHolder holder = column.getOwner();
+                if(holder instanceof Tab) {
+                    final Tab tab = (Tab) holder;
+                    if(tab.getContents().size() == 1) {
+                        final String collectionName = oneToManyAssociation.getName();
+                        tab.setName(collectionName);
+                    }
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
index 7fee60b..2c24f0d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
@@ -59,7 +59,7 @@ public final class ObjectSpecifications {
     public static List<String> orderByMemberGroups(
             final ObjectSpecification objSpec,
             final Set<String> groupNamesToOrder,
-            final MemberGroupLayoutHint memberGroupLayoutHint) {
+            final MemberGroupLayoutHint hint) {
 
         final MemberGroupLayoutFacet facet = objSpec.getFacet(MemberGroupLayoutFacet.class);
         final List<String> leftColumnGroupNames = Lists.newArrayList(groupNamesToOrder);
@@ -69,10 +69,10 @@ public final class ObjectSpecifications {
             return leftColumnGroupNames;
         }
         
-        if(memberGroupLayoutHint == MemberGroupLayoutHint.MIDDLE) {
+        if(hint == MemberGroupLayoutHint.MIDDLE) {
             return facet.getColumnSpans().getMiddle()>0? facet.getMiddle(): Collections.<String>emptyList();
         }
-        if(memberGroupLayoutHint == MemberGroupLayoutHint.RIGHT) {
+        if(hint == MemberGroupLayoutHint.RIGHT) {
             return facet.getColumnSpans().getRight()>0? facet.getRight(): Collections.<String>emptyList();
         }
         

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 9838163..53b6bd1 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -652,7 +652,6 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
 
     public EntityModel withColumnMetadata(final Column columnMetadata) {
         this.columnMetadata = columnMetadata;
-        this.tabMetadata = columnMetadata.getOwner();
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index 81b83c4..cf6f1d9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -123,7 +123,9 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
             public int compare(final ObjectAssociation o1, final ObjectAssociation o2) {
                 final MemberOrderFacet o1Facet = o1.getFacet(MemberOrderFacet.class);
                 final MemberOrderFacet o2Facet = o2.getFacet(MemberOrderFacet.class);
-                return deweyOrderComparator.compare(o1Facet.sequence(), o2Facet.sequence());
+                return o1Facet == null? +1:
+                        o2Facet == null? -1:
+                        deweyOrderComparator.compare(o1Facet.sequence(), o2Facet.sequence());
             }
         });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index adc9262..3f2771d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -242,9 +242,10 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
             final MarkupContainer col,
             final MemberGroupLayoutHint hint,
             final EntityModel entityModel,
-            final Tab tabMetaDataIfAny, final ColumnSpans columnSpans) {
-        final boolean addedProperties;
-        addedProperties = addPropertiesInColumn(col, hint, entityModel, tabMetaDataIfAny, columnSpans);
+            final Tab tabMetaDataIfAny,
+            final ColumnSpans columnSpans) {
+        final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? hint.from(tabMetaDataIfAny) : null;
+        final boolean addedProperties = addPropertiesInColumn(col, hint, entityModel, columnSpans, columnMetaDataIfAny);
         addCollectionsIfRequired(col, hint, entityModel, tabMetaDataIfAny);
         return addedProperties;
     }
@@ -253,15 +254,11 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
             final MarkupContainer markupContainer,
             final MemberGroupLayoutHint hint,
             final EntityModel entityModel,
-            final Tab tabMetaDataIfAny,
-            final ColumnSpans columnSpans) {
+            final ColumnSpans columnSpans, final Column columnMetaDataIfAny) {
         final int span = hint.from(columnSpans);
-
         final ObjectAdapter adapter = entityModel.getObject();
         final ObjectSpecification objSpec = adapter.getSpecification();
 
-        final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? hint.from(tabMetaDataIfAny) : null;
-
         final List<ObjectAssociation> properties = visibleProperties(adapter);
 
         final RepeatingView memberGroupRv = new RepeatingView(ID_MEMBER_GROUP);
@@ -269,7 +266,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
 
         final Map<String, List<ObjectAssociation>> associationsByGroup = ObjectAssociation.Util.groupByMemberOrderName(properties);
 
-        final List<String> groupNames = tabMetaDataIfAny != null
+        final List<String> groupNames = columnMetaDataIfAny != null
                 ? FluentIterable
                     .from(columnMetaDataIfAny.getPropertyGroups())
                     .transform(PropertyGroup.Util.nameOf())
@@ -312,7 +309,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
                     actionsPanelDropDown,
                     AdditionalLinksPanel.Style.DROPDOWN);
         }
-        
+
         addClassForSpan(markupContainer, span);
 
         return !groupNames.isEmpty();

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel$EntityTabPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel$EntityTabPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel$EntityTabPanel.html
index 94582b1..025253b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel$EntityTabPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel$EntityTabPanel.html
@@ -22,7 +22,6 @@
 <wicket:panel>
 	<div class="tabPanel">
         <div wicket:id="entityPropertiesAndCollections"></div>
-
 	</div>
 </wicket:panel>
 </body>

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
index ebe6c63..fded796 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
@@ -24,9 +24,12 @@
 		<div wicket:id="entitySummary"></div>
 
         <div wicket:id="tabGroups">
-            <div wicket:id="tabGroup">[tabbed panel will be here]</div>
+            <div class="row">
+                <div wicket:id="tabGroup" class="col-xs-8">[tabbed panel will be here]</div>
+                <div XXXXwicket:id="collections" class = "fixedColumn col-xs-4">
+                </div>
+            </div>
         </div>
-
 	</div>
 </wicket:panel>
 </body>

http://git-wip-us.apache.org/repos/asf/isis/blob/3bfcae8c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.java
index fec95d0..2667d05 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.java
@@ -112,6 +112,8 @@ public class EntityTabGroupsPanel extends PanelAbstract<EntityModel> {
             }
         };
         add(tabGroupsList);
+
+        
     }
 
     private static class EntityTabPanel extends PanelAbstract {


[3/5] isis git commit: ISIS-993: refactoring EntityPropertiesForm so can factor out a new component.

Posted by da...@apache.org.
ISIS-993: refactoring EntityPropertiesForm so can factor out a new component.


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

Branch: refs/heads/ISIS-993
Commit: cd82ef82afcb98bcb26d39ce227d8fe7c605f6f4
Parents: 9597245
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jan 9 08:15:10 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Jan 9 08:15:10 2016 +0000

----------------------------------------------------------------------
 .../entity/properties/EntityColumnMembers.html  | 46 +++++++++
 .../entity/properties/EntityPropertiesForm.java | 98 +++++++++-----------
 .../properties/EntityPropertiesPanel.html       | 96 ++++++++++---------
 .../components/entity/properties/PropUtil.java  | 68 ++++++++++++++
 .../entity/tabgroups/EntityTabGroupsPanel.html  |  4 +-
 5 files changed, 211 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/cd82ef82/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.html
new file mode 100644
index 0000000..07ca0f3
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+    <body>
+        <wicket:panel>
+            <div wicket:id="columnMembers" class="columnMembers">
+                <div class="inputFormTable properties">
+                    <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
+                        <div class="panel panel-default">
+                            <div class="panel-heading">
+                                <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
+                                <div class="pull-right additionalLinks">
+                                    <div wicket:id="associatedActionLinksPanel"></div>
+                                    <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                                </div>
+                            </div>
+                            <div class="properties panel-body">
+                                <div wicket:id="properties">
+                                    <div wicket:id="property" class="property">[property]</div>
+                                </div>
+                            </div>
+                        </div>
+                    </fieldset>
+                </div>
+                <div wicket:id="collections"></div>
+            </div>
+        </wicket:panel>
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/cd82ef82/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 3f2771d..f0ba38d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -176,8 +176,29 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         
         boolean addedProperties;
         if(columnSpans.getLeft() > 0) {
-            addedProperties = addPropertiesAndCollections(
-                    leftColumn, MemberGroupLayoutHint.LEFT, entityModel, tabMetaDataIfAny, columnSpans);
+            final MemberGroupLayoutHint hint = MemberGroupLayoutHint.LEFT;
+
+            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? hint
+                    .from(tabMetaDataIfAny) : null;
+            addPropertiesAndCollections(leftColumn, hint, entityModel,
+                    columnSpans, columnMetaDataIfAny);
+
+            final ObjectAdapter adapter = entityModel.getObject();
+            final ObjectSpecification objSpec = adapter.getSpecification();
+
+            final Map<String, List<ObjectAssociation>> associationsByGroup =
+                    PropUtil
+                    .propertiesByMemberOrder(adapter);
+
+            final List<String> groupNames = columnMetaDataIfAny != null
+                    ? FluentIterable
+                    .from(columnMetaDataIfAny.getPropertyGroups())
+                    .transform(PropertyGroup.Util.nameOf())
+                    .toList()
+                    : ObjectSpecifications.orderByMemberGroups(objSpec, associationsByGroup.keySet(),
+                    hint);
+
+            addedProperties = !groupNames.isEmpty();
             addButtons(leftColumn);
             addFeedbackGui(leftColumn);
         } else {
@@ -195,8 +216,9 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         if(columnSpans.getMiddle() > 0) {
             MarkupContainer middleColumn = new WebMarkupContainer(ID_MIDDLE_COLUMN);
             add(middleColumn);
-            addPropertiesAndCollections(
-                    middleColumn, MemberGroupLayoutHint.MIDDLE, entityModel, tabMetaDataIfAny, columnSpans);
+            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? MemberGroupLayoutHint.MIDDLE
+                    .from(tabMetaDataIfAny) : null;
+            addPropertiesAndCollections(middleColumn, MemberGroupLayoutHint.MIDDLE, entityModel, columnSpans, columnMetaDataIfAny);
         } else {
             Components.permanentlyHide(this, ID_MIDDLE_COLUMN);
         }
@@ -205,8 +227,9 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         if(columnSpans.getRight() > 0) {
             MarkupContainer rightColumn = new WebMarkupContainer(ID_RIGHT_COLUMN);
             add(rightColumn);
-            addPropertiesAndCollections(
-                    rightColumn, MemberGroupLayoutHint.RIGHT, entityModel, tabMetaDataIfAny, columnSpans);
+            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? MemberGroupLayoutHint.RIGHT
+                    .from(tabMetaDataIfAny) : null;
+            addPropertiesAndCollections(rightColumn, MemberGroupLayoutHint.RIGHT, entityModel, columnSpans, columnMetaDataIfAny);
         } else {
             Components.permanentlyHide(this, ID_RIGHT_COLUMN);
         }
@@ -238,19 +261,16 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         }
     }
 
-    private boolean addPropertiesAndCollections(
+    private void addPropertiesAndCollections(
             final MarkupContainer col,
             final MemberGroupLayoutHint hint,
             final EntityModel entityModel,
-            final Tab tabMetaDataIfAny,
-            final ColumnSpans columnSpans) {
-        final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? hint.from(tabMetaDataIfAny) : null;
-        final boolean addedProperties = addPropertiesInColumn(col, hint, entityModel, columnSpans, columnMetaDataIfAny);
-        addCollectionsIfRequired(col, hint, entityModel, tabMetaDataIfAny);
-        return addedProperties;
+            final ColumnSpans columnSpans, final Column columnMetaDataIfAny) {
+        addPropertiesInColumn(col, hint, entityModel, columnSpans, columnMetaDataIfAny);
+        addCollectionsIfRequired(col, entityModel, columnMetaDataIfAny);
     }
 
-    private boolean addPropertiesInColumn(
+    private void addPropertiesInColumn(
             final MarkupContainer markupContainer,
             final MemberGroupLayoutHint hint,
             final EntityModel entityModel,
@@ -259,13 +279,8 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         final ObjectAdapter adapter = entityModel.getObject();
         final ObjectSpecification objSpec = adapter.getSpecification();
 
-        final List<ObjectAssociation> properties = visibleProperties(adapter);
-
-        final RepeatingView memberGroupRv = new RepeatingView(ID_MEMBER_GROUP);
-        markupContainer.add(memberGroupRv);
-
-        final Map<String, List<ObjectAssociation>> associationsByGroup = ObjectAssociation.Util.groupByMemberOrderName(properties);
-
+        final Map<String, List<ObjectAssociation>> associationsByGroup = PropUtil
+                .propertiesByMemberOrder(adapter);
         final List<String> groupNames = columnMetaDataIfAny != null
                 ? FluentIterable
                     .from(columnMetaDataIfAny.getPropertyGroups())
@@ -273,6 +288,9 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
                     .toList()
                 : ObjectSpecifications.orderByMemberGroups(objSpec, associationsByGroup.keySet(), hint);
 
+        final RepeatingView memberGroupRv = new RepeatingView(ID_MEMBER_GROUP);
+        markupContainer.add(memberGroupRv);
+
         for(final String groupName: groupNames) {
             final List<ObjectAssociation> associationsInGroup = associationsByGroup.get(groupName);
             if(associationsInGroup==null) {
@@ -311,19 +329,15 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         }
 
         addClassForSpan(markupContainer, span);
-
-        return !groupNames.isEmpty();
     }
 
     private void addCollectionsIfRequired(
             final MarkupContainer column,
-            final MemberGroupLayoutHint hint,
             final EntityModel entityModel,
-            final Tab tabMetaDataIfAny) {
-
-        if(tabMetaDataIfAny != null) {
-            final Column columnMetadata = hint.from(tabMetaDataIfAny);
-            final EntityModel modelWithMetadata = new EntityModel(entityModel.getPageParameters()).withColumnMetadata(columnMetadata);
+            final Column columnMetaDataIfAny) {
+        if(columnMetaDataIfAny != null) {
+            final EntityModel modelWithMetadata = new EntityModel(entityModel.getPageParameters()).withColumnMetadata(
+                    columnMetaDataIfAny);
             getComponentFactoryRegistry()
                     .addOrReplaceComponent(column, "collections", ComponentType.ENTITY_COLLECTIONS, modelWithMetadata);
         } else {
@@ -352,30 +366,6 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         }
     }
 
-    private List<ObjectAssociation> visibleProperties(final ObjectAdapter adapter) {
-        return visibleProperties(adapter, Filters.<ObjectAssociation>any());
-    }
-
-    private List<ObjectAssociation> visibleProperties(
-            final ObjectAdapter adapter,
-            final Filter<ObjectAssociation> filter) {
-        final ObjectSpecification objSpec = adapter.getSpecification();
-
-        return objSpec.getAssociations(
-                Contributed.INCLUDED, visiblePropertiesFilter(adapter, filter));
-    }
-
-    @SuppressWarnings("unchecked")
-    private static Filter<ObjectAssociation> visiblePropertiesFilter(
-            final ObjectAdapter adapter,
-            final Filter<ObjectAssociation> filter) {
-        return Filters.and(
-                ObjectAssociation.Filters.PROPERTIES,
-                ObjectAssociation.Filters.dynamicallyVisible(
-                        adapter, InteractionInitiatedBy.USER, Where.OBJECT_FORMS),
-                filter);
-    }
-
     @Override
     protected void onComponentTag(ComponentTag tag) {
         super.onComponentTag(tag);
@@ -815,7 +805,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
     }
 
     
-    private static void addClassForSpan(final Component component, final int numGridCols) {
+    static void addClassForSpan(final Component component, final int numGridCols) {
         component.add(new CssClassAppender("col-xs-"+numGridCols));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/cd82ef82/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
index ad8872a..9b8a582 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
@@ -24,25 +24,27 @@
                 <form wicket:id="entityProperties" class="inputForm" role="form">
                     <div class="row" style="padding-bottom: 20px">
                         <div wicket:id="leftColumn">
-                            <div class="inputFormTable properties">
-                                <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
-                                    <div class="panel panel-default">
-                                        <div class="panel-heading">
-                                            <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
-                                            <div class="pull-right additionalLinks">
-                                                <div wicket:id="associatedActionLinksPanel"></div>
-                                                <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                            <div class="columnMembers">
+                                <div class="inputFormTable properties">
+                                    <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
+                                        <div class="panel panel-default">
+                                            <div class="panel-heading">
+                                                <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
+                                                <div class="pull-right additionalLinks">
+                                                    <div wicket:id="associatedActionLinksPanel"></div>
+                                                    <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                                                </div>
                                             </div>
-                                        </div>
-                                        <div class="properties panel-body">
-                                            <div wicket:id="properties">
-                                                <div wicket:id="property" class="property">[property]</div>
+                                            <div class="properties panel-body">
+                                                <div wicket:id="properties">
+                                                    <div wicket:id="property" class="property">[property]</div>
+                                                </div>
                                             </div>
                                         </div>
-                                    </div>
-                                </fieldset>
+                                    </fieldset>
+                                </div>
+                                <div wicket:id="collections"></div>
                             </div>
-                            <div wicket:id="collections"></div>
                             <div class="feedbackPanel">
                                 <span wicket:id="feedback"></span>
                             </div>
@@ -53,46 +55,50 @@
                             </div>
                         </div>
                         <div wicket:id="middleColumn">
-                            <div class="inputFormTable properties">
-                                <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
-                                    <div class="panel panel-default">
-                                        <div class="panel-heading">
-                                            <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
-                                            <div class="pull-right additionalLinks">
-                                                <div wicket:id="associatedActionLinksPanel"></div>
-                                                <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                            <div class="columnMembers">
+                                <div class="inputFormTable properties">
+                                    <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
+                                        <div class="panel panel-default">
+                                            <div class="panel-heading">
+                                                <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
+                                                <div class="pull-right additionalLinks">
+                                                    <div wicket:id="associatedActionLinksPanel"></div>
+                                                    <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                                                </div>
                                             </div>
-                                        </div>
-                                        <div class="properties panel-body">
-                                            <div wicket:id="properties">
-                                                <div wicket:id="property" class="property">[property]</div>
+                                            <div class="properties panel-body">
+                                                <div wicket:id="properties">
+                                                    <div wicket:id="property" class="property">[property]</div>
+                                                </div>
                                             </div>
                                         </div>
-                                    </div>
-                                </fieldset>
+                                    </fieldset>
+                                </div>
+                                <div wicket:id="collections"></div>
                             </div>
-                            <div wicket:id="collections"></div>
                         </div>
                         <div wicket:id="rightColumn">
-                            <div class="inputFormTable properties">
-                                <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
-                                    <div class="panel panel-default">
-                                        <div class="panel-heading">
-                                            <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
-                                            <div class="pull-right additionalLinks">
-                                                <div wicket:id="associatedActionLinksPanel"></div>
-                                                <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                            <div class="columnMembers">
+                                <div class="inputFormTable properties">
+                                    <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer">
+                                        <div class="panel panel-default">
+                                            <div class="panel-heading">
+                                                <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
+                                                <div class="pull-right additionalLinks">
+                                                    <div wicket:id="associatedActionLinksPanel"></div>
+                                                    <div wicket:id="associatedActionLinksPanelDropDown"></div>
+                                                </div>
                                             </div>
-                                        </div>
-                                        <div class="properties panel-body">
-                                            <div wicket:id="properties">
-                                                <div wicket:id="property" class="property">[property]</div>
+                                            <div class="properties panel-body">
+                                                <div wicket:id="properties">
+                                                    <div wicket:id="property" class="property">[property]</div>
+                                                </div>
                                             </div>
                                         </div>
-                                    </div>
-                                </fieldset>
+                                    </fieldset>
+                                </div>
+                                <div wicket:id="collections"></div>
                             </div>
-                            <div wicket:id="collections"></div>
                         </div>
                         <div wicket:id="entityCollections"></div>
                     </div>

http://git-wip-us.apache.org/repos/asf/isis/blob/cd82ef82/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
new file mode 100644
index 0000000..23a9a8d
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
@@ -0,0 +1,68 @@
+/*
+ *  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.viewer.wicket.ui.components.entity.properties;
+
+import java.util.List;
+import java.util.Map;
+
+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.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+
+public final class PropUtil {
+
+    private PropUtil() {
+    }
+
+    static Map<String, List<ObjectAssociation>> propertiesByMemberOrder(final ObjectAdapter adapter) {
+        final List<ObjectAssociation> properties = visibleProperties(adapter);
+        return ObjectAssociation.Util.groupByMemberOrderName(properties);
+    }
+
+    private static List<ObjectAssociation> visibleProperties(final ObjectAdapter adapter) {
+        return visibleProperties(adapter, Filters.<ObjectAssociation>any());
+    }
+
+    private static List<ObjectAssociation> visibleProperties(
+            final ObjectAdapter adapter,
+            final Filter<ObjectAssociation> filter) {
+        final ObjectSpecification objSpec = adapter.getSpecification();
+
+        return objSpec.getAssociations(
+                Contributed.INCLUDED, visiblePropertiesFilter(adapter, filter));
+    }
+
+    @SuppressWarnings("unchecked")
+    private static Filter<ObjectAssociation> visiblePropertiesFilter(
+            final ObjectAdapter adapter,
+            final Filter<ObjectAssociation> filter) {
+        return Filters.and(
+                ObjectAssociation.Filters.PROPERTIES,
+                ObjectAssociation.Filters.dynamicallyVisible(
+                        adapter, InteractionInitiatedBy.USER, Where.OBJECT_FORMS),
+                filter);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/cd82ef82/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
index fded796..4e45e96 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/tabgroups/EntityTabGroupsPanel.html
@@ -25,8 +25,8 @@
 
         <div wicket:id="tabGroups">
             <div class="row">
-                <div wicket:id="tabGroup" class="col-xs-8">[tabbed panel will be here]</div>
-                <div XXXXwicket:id="collections" class = "fixedColumn col-xs-4">
+                <div wicket:id="tabGroup" class="col-xs-12">[tabbed panel will be here]</div>
+                <div XXXXwicket:id="entityColumnMembers" class = "fixedColumn col-xs-4">
                 </div>
             </div>
         </div>


[2/5] isis git commit: ISIS-993: add the ObjectLayoutMetadata#actions collection if null

Posted by da...@apache.org.
ISIS-993: add the ObjectLayoutMetadata#actions collection if null


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

Branch: refs/heads/ISIS-993
Commit: 9597245f8d27db5320031ca7db465fa5da92f1b0
Parents: 3bfcae8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jan 9 07:46:49 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Jan 9 07:47:09 2016 +0000

----------------------------------------------------------------------
 .../services/layout/ObjectLayoutMetadataServiceDefault.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9597245f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
index e2a2e1d..3080769 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/ObjectLayoutMetadataServiceDefault.java
@@ -272,7 +272,12 @@ public class ObjectLayoutMetadataServiceDefault
 
         if(!missingActionIds.isEmpty()) {
             for (String actionId : missingActionIds) {
-                metadata.getActions().add(new ActionLayoutMetadata(actionId));
+                List<ActionLayoutMetadata> actions = metadata.getActions();
+                if(actions == null) {
+                    actions = Lists.newArrayList();
+                    metadata.setActions(actions);
+                }
+                actions.add(new ActionLayoutMetadata(actionId));
             }
         }
     }


[4/5] isis git commit: ISIS-993: further refactoring, working towards factoring out EntityColumnMembers. However getting an exception when there are two tab groups (with the id/feedback... not sure why yet).

Posted by da...@apache.org.
ISIS-993: further refactoring, working towards factoring out EntityColumnMembers.  However getting an exception when there are two tab groups (with the id/feedback... not sure why yet).


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

Branch: refs/heads/ISIS-993
Commit: 9ff3c29d8d5c03a9bb4c6d1d605222cca83731e6
Parents: cd82ef8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jan 9 09:07:21 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Jan 9 09:07:21 2016 +0000

----------------------------------------------------------------------
 .../apache/isis/applib/layout/v1_0/Column.java  |  24 ++++
 .../json/LayoutMetadataReaderFromJson.java      |  10 +-
 .../metamodel/spec/ObjectSpecifications.java    |  28 +---
 .../viewer/wicket/model/models/EntityModel.java |  19 ++-
 .../entity/properties/EntityColumnMembers.java  |  50 ++++++++
 .../entity/properties/EntityPropertiesForm.java | 128 ++++++++++---------
 .../components/entity/properties/PropUtil.java  |  25 +++-
 .../dom/simple/SimpleObject.layout.xml          |  10 +-
 8 files changed, 194 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
index f208a7f..fc8ec6d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/v1_0/Column.java
@@ -28,6 +28,8 @@ import javax.xml.bind.annotation.XmlType;
 
 import com.google.common.collect.Lists;
 
+import org.apache.isis.applib.annotation.MemberGroupLayout;
+
 @XmlType(
         propOrder = {
                 "propertyGroups"
@@ -101,5 +103,27 @@ public class Column implements Serializable {
         this.owner = owner;
     }
 
+    public enum Hint {
+        LEFT,
+        MIDDLE,
+        RIGHT;
+
+        public int from(MemberGroupLayout.ColumnSpans columnSpans) {
+            if(this == LEFT) return columnSpans.getLeft();
+            if(this == MIDDLE) return columnSpans.getMiddle();
+            if(this == RIGHT) return columnSpans.getRight();
+            throw new IllegalStateException();
+        }
+
+        public Column from(final Tab tab) {
+            if(tab == null) {
+                return null;
+            }
+            if(this == LEFT) return tab.getLeft();
+            if(this == MIDDLE) return tab.getMiddle();
+            if(this == RIGHT) return tab.getRight();
+            throw new IllegalStateException();
+        }
 
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 215c202..0a29c6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -81,7 +81,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.TypicalLengthFacetRepr;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
-import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
+import org.apache.isis.applib.layout.v1_0.Column.Hint;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -462,13 +462,13 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader2 {
         ColumnRepr columnRepr;
         
         columnRepr = addColumnWithSpan(metadata, columnSpans.getLeft());
-        updateColumnMemberGroups(objectSpec, MemberGroupLayoutHint.LEFT, columnRepr, actionIdsForAssociations);
+        updateColumnMemberGroups(objectSpec, Hint.LEFT, columnRepr, actionIdsForAssociations);
         
         columnRepr = addColumnWithSpan(metadata, columnSpans.getMiddle());
-        updateColumnMemberGroups(objectSpec, MemberGroupLayoutHint.MIDDLE, columnRepr, actionIdsForAssociations);
+        updateColumnMemberGroups(objectSpec, Hint.MIDDLE, columnRepr, actionIdsForAssociations);
         
         columnRepr = addColumnWithSpan(metadata, columnSpans.getRight());
-        updateColumnMemberGroups(objectSpec, MemberGroupLayoutHint.RIGHT, columnRepr, actionIdsForAssociations);
+        updateColumnMemberGroups(objectSpec, Hint.RIGHT, columnRepr, actionIdsForAssociations);
         
         columnRepr = addColumnWithSpan(metadata, columnSpans.getCollections());
         updateCollectionColumnRepr(objectSpec, columnRepr, actionIdsForAssociations);
@@ -479,7 +479,7 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader2 {
         return gson.toJson(metadata);
     }
 
-    private static void updateColumnMemberGroups(final ObjectSpecification objectSpec, final MemberGroupLayoutHint hint, final ColumnRepr columnRepr, final Set<String> actionIdsForAssociations) {
+    private static void updateColumnMemberGroups(final ObjectSpecification objectSpec, final Hint hint, final ColumnRepr columnRepr, final Set<String> actionIdsForAssociations) {
         final List<ObjectAssociation> objectAssociations = propertiesOf(objectSpec);
         final Map<String, List<ObjectAssociation>> associationsByGroup = ObjectAssociation.Util.groupByMemberOrderName(objectAssociations
         );

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
index 2c24f0d..b184d35 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecifications.java
@@ -25,9 +25,7 @@ import java.util.Set;
 
 import com.google.common.collect.Lists;
 
-import org.apache.isis.applib.annotation.MemberGroupLayout.ColumnSpans;
 import org.apache.isis.applib.layout.v1_0.Column;
-import org.apache.isis.applib.layout.v1_0.Tab;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
 
 
@@ -36,30 +34,10 @@ public final class ObjectSpecifications {
     private ObjectSpecifications() {
     }
 
-    public enum MemberGroupLayoutHint {
-        LEFT,
-        MIDDLE,
-        RIGHT;
-
-        public int from(ColumnSpans columnSpans) {
-            if(this == LEFT) return columnSpans.getLeft();
-            if(this == MIDDLE) return columnSpans.getMiddle();
-            if(this == RIGHT) return columnSpans.getRight();
-            throw new IllegalStateException();
-        }
-
-        public Column from(final Tab tab) {
-            if(this == LEFT) {return tab.getLeft();}
-            if(this == MIDDLE) return tab.getMiddle();
-            if(this == RIGHT) return tab.getRight();
-            throw new IllegalStateException();
-        }
-    }
-
     public static List<String> orderByMemberGroups(
             final ObjectSpecification objSpec,
             final Set<String> groupNamesToOrder,
-            final MemberGroupLayoutHint hint) {
+            final Column.Hint hint) {
 
         final MemberGroupLayoutFacet facet = objSpec.getFacet(MemberGroupLayoutFacet.class);
         final List<String> leftColumnGroupNames = Lists.newArrayList(groupNamesToOrder);
@@ -69,10 +47,10 @@ public final class ObjectSpecifications {
             return leftColumnGroupNames;
         }
         
-        if(hint == MemberGroupLayoutHint.MIDDLE) {
+        if(hint == Column.Hint.MIDDLE) {
             return facet.getColumnSpans().getMiddle()>0? facet.getMiddle(): Collections.<String>emptyList();
         }
-        if(hint == MemberGroupLayoutHint.RIGHT) {
+        if(hint == Column.Hint.RIGHT) {
             return facet.getColumnSpans().getRight()>0? facet.getRight(): Collections.<String>emptyList();
         }
         

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 53b6bd1..bebb67c 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolic
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
+import org.apache.isis.applib.layout.v1_0.Column.Hint;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
@@ -130,7 +130,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
     private Mode mode = Mode.VIEW;
     private RenderingHint renderingHint = RenderingHint.REGULAR;
     private final Map<PropertyMemento, ScalarModel> propertyScalarModels = Maps.newHashMap();
-    private MemberGroupLayoutHint memberGroupLayoutHint;
+    private Hint hint;
 
     /**
      * Toggled by 'entityDetailsButton'.
@@ -451,11 +451,11 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
         entityDetailsVisible = !entityDetailsVisible;
     }
 
-    public MemberGroupLayoutHint getMemberGroupLayoutHint() {
-        return memberGroupLayoutHint;
+    public Hint getHint() {
+        return hint;
     }
-    public void setMemberGroupLayoutHint(MemberGroupLayoutHint memberGroupLayoutHint) {
-        this.memberGroupLayoutHint = memberGroupLayoutHint;
+    public void setHint(Hint hint) {
+        this.hint = hint;
     }
 
     
@@ -649,15 +649,20 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
 
 
     private Column columnMetadata;
+    private Column.Hint columnHint;
 
-    public EntityModel withColumnMetadata(final Column columnMetadata) {
+    public EntityModel withColumnMetadata(final Column columnMetadata, final Column.Hint columnHint) {
         this.columnMetadata = columnMetadata;
+        this.columnHint = columnHint;
         return this;
     }
 
     public Column getColumnMetadata() {
         return columnMetadata;
     }
+    public Column.Hint getColumnHint() {
+        return columnHint;
+    }
 
 
     // //////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.java
new file mode 100644
index 0000000..805a904
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityColumnMembers.java
@@ -0,0 +1,50 @@
+/*
+ *  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.viewer.wicket.ui.components.entity.properties;
+
+import org.apache.wicket.Component;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.panels.FormAbstract;
+
+public class EntityColumnMembers extends FormAbstract<ObjectAdapter> {
+
+    private static final long serialVersionUID = 1L;
+
+
+    private final Component owningPanel;
+
+    public EntityColumnMembers(
+            final String id,
+            final EntityModel entityModel,
+            final Component owningPanel) {
+
+        super(id, entityModel);
+        this.owningPanel = owningPanel; // for repainting
+
+        buildGui();
+    }
+
+    private void buildGui() {
+
+        final EntityModel entityModel = (EntityModel) getModel();
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index f0ba38d..1f8792a 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -64,7 +64,7 @@ import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayo
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
-import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
+import org.apache.isis.applib.layout.v1_0.Column.Hint;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -151,7 +151,6 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
     private void buildGui() {
 
         final EntityModel entityModel = (EntityModel) getModel();
-
         final Tab tabMetaDataIfAny = entityModel.getTabMetadata();
 
         final ColumnSpans columnSpans;
@@ -169,71 +168,71 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
         }
 
         renderedFirstField = false;
-        
+
         // left column
+        // (unlike middle and right columns, the left column is always added to hold the edit buttons and feedback)
         MarkupContainer leftColumn = new WebMarkupContainer(ID_LEFT_COLUMN);
         add(leftColumn);
-        
-        boolean addedProperties;
-        if(columnSpans.getLeft() > 0) {
-            final MemberGroupLayoutHint hint = MemberGroupLayoutHint.LEFT;
-
-            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? hint
-                    .from(tabMetaDataIfAny) : null;
-            addPropertiesAndCollections(leftColumn, hint, entityModel,
-                    columnSpans, columnMetaDataIfAny);
-
-            final ObjectAdapter adapter = entityModel.getObject();
-            final ObjectSpecification objSpec = adapter.getSpecification();
 
-            final Map<String, List<ObjectAssociation>> associationsByGroup =
-                    PropUtil
-                    .propertiesByMemberOrder(adapter);
+        if(columnSpans.getLeft() > 0) {
 
-            final List<String> groupNames = columnMetaDataIfAny != null
-                    ? FluentIterable
-                    .from(columnMetaDataIfAny.getPropertyGroups())
-                    .transform(PropertyGroup.Util.nameOf())
-                    .toList()
-                    : ObjectSpecifications.orderByMemberGroups(objSpec, associationsByGroup.keySet(),
-                    hint);
+            addPropertiesAndCollections(leftColumn, entityModel, tabMetaDataIfAny, Hint.LEFT);
 
-            addedProperties = !groupNames.isEmpty();
-            addButtons(leftColumn);
-            addFeedbackGui(leftColumn);
         } else {
             Components.permanentlyHide(this, ID_LEFT_COLUMN);
-            addedProperties = false;
         }
-        if(!addedProperties) {
-            // a bit hacky...
-            Components.permanentlyHide(this,
-                    ID_EDIT_BUTTON, ID_OK_BUTTON, ID_CANCEL_BUTTON,
-                    ID_FEEDBACK);
-        }
-        
+
         // middle column
+        MarkupContainer middleColumn;
         if(columnSpans.getMiddle() > 0) {
-            MarkupContainer middleColumn = new WebMarkupContainer(ID_MIDDLE_COLUMN);
+            middleColumn = new WebMarkupContainer(ID_MIDDLE_COLUMN);
             add(middleColumn);
-            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? MemberGroupLayoutHint.MIDDLE
-                    .from(tabMetaDataIfAny) : null;
-            addPropertiesAndCollections(middleColumn, MemberGroupLayoutHint.MIDDLE, entityModel, columnSpans, columnMetaDataIfAny);
+
+            addPropertiesAndCollections(middleColumn, entityModel, tabMetaDataIfAny, Hint.MIDDLE);
         } else {
+            middleColumn = null;
             Components.permanentlyHide(this, ID_MIDDLE_COLUMN);
         }
 
         // right column
+        MarkupContainer rightColumn;
         if(columnSpans.getRight() > 0) {
-            MarkupContainer rightColumn = new WebMarkupContainer(ID_RIGHT_COLUMN);
+            rightColumn = new WebMarkupContainer(ID_RIGHT_COLUMN);
             add(rightColumn);
-            final Column columnMetaDataIfAny = tabMetaDataIfAny != null ? MemberGroupLayoutHint.RIGHT
-                    .from(tabMetaDataIfAny) : null;
-            addPropertiesAndCollections(rightColumn, MemberGroupLayoutHint.RIGHT, entityModel, columnSpans, columnMetaDataIfAny);
+
+            addPropertiesAndCollections(rightColumn, entityModel, tabMetaDataIfAny, Hint.RIGHT);
         } else {
+            rightColumn = null;
             Components.permanentlyHide(this, ID_RIGHT_COLUMN);
         }
 
+        // column spans
+        if(columnSpans.getLeft() > 0) {
+            addClassForSpan(leftColumn, Hint.LEFT.from(columnSpans));
+        }
+        if(columnSpans.getMiddle() > 0) {
+            addClassForSpan(middleColumn, Hint.MIDDLE.from(columnSpans));
+        }
+        if(columnSpans.getRight() > 0) {
+            addClassForSpan(rightColumn, Hint.RIGHT.from(columnSpans));
+        }
+
+        // edit buttons and feedback
+        final Hint leftHint = Hint.LEFT;
+        final Column leftColumnMetaDataIfAny = leftHint.from(tabMetaDataIfAny);
+        final List<String> groupNames = PropUtil.propertyGroupNames(entityModel, leftHint, leftColumnMetaDataIfAny);
+        final boolean hasProperties = !groupNames.isEmpty();
+        if (hasProperties) {
+            addButtons(leftColumn);
+            addFeedbackGui(leftColumn);
+
+        } else {
+            Components.permanentlyHide(this,
+                    ID_EDIT_BUTTON, ID_OK_BUTTON, ID_CANCEL_BUTTON,
+                    ID_FEEDBACK);
+        }
+
+
         // collections (only if not being added to a tab)
         if(tabMetaDataIfAny == null && columnSpans.getCollections() > 0) {
             final String idCollectionsToShow;
@@ -262,20 +261,31 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
     }
 
     private void addPropertiesAndCollections(
-            final MarkupContainer col,
-            final MemberGroupLayoutHint hint,
+            final MarkupContainer middleColumn,
             final EntityModel entityModel,
-            final ColumnSpans columnSpans, final Column columnMetaDataIfAny) {
-        addPropertiesInColumn(col, hint, entityModel, columnSpans, columnMetaDataIfAny);
-        addCollectionsIfRequired(col, entityModel, columnMetaDataIfAny);
+            final Tab tabMetaDataIfAny, final Hint hint) {
+        final Column columnMetaDataIfAny = hint.from(tabMetaDataIfAny);
+
+        final EntityModel entityModelWithHints =
+                new EntityModel(entityModel.getPageParameters())
+                        .withColumnMetadata(columnMetaDataIfAny, hint);
+
+        addPropertiesAndCollections(middleColumn, entityModelWithHints);
+    }
+
+    private void addPropertiesAndCollections(
+            final MarkupContainer col,
+            final EntityModel entityModel) {
+        addPropertiesInColumn(col, entityModel);
+        addCollectionsIfRequired(col, entityModel);
     }
 
     private void addPropertiesInColumn(
             final MarkupContainer markupContainer,
-            final MemberGroupLayoutHint hint,
-            final EntityModel entityModel,
-            final ColumnSpans columnSpans, final Column columnMetaDataIfAny) {
-        final int span = hint.from(columnSpans);
+            final EntityModel entityModel) {
+
+        final Column columnMetaDataIfAny = entityModel.getColumnMetadata();
+        final Hint hint = entityModel.getColumnHint();
         final ObjectAdapter adapter = entityModel.getObject();
         final ObjectSpecification objSpec = adapter.getSpecification();
 
@@ -327,19 +337,17 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
                     actionsPanelDropDown,
                     AdditionalLinksPanel.Style.DROPDOWN);
         }
-
-        addClassForSpan(markupContainer, span);
     }
 
     private void addCollectionsIfRequired(
             final MarkupContainer column,
-            final EntityModel entityModel,
-            final Column columnMetaDataIfAny) {
+            final EntityModel entityModel) {
+
+        final Column columnMetaDataIfAny = entityModel.getColumnMetadata();
+
         if(columnMetaDataIfAny != null) {
-            final EntityModel modelWithMetadata = new EntityModel(entityModel.getPageParameters()).withColumnMetadata(
-                    columnMetaDataIfAny);
             getComponentFactoryRegistry()
-                    .addOrReplaceComponent(column, "collections", ComponentType.ENTITY_COLLECTIONS, modelWithMetadata);
+                    .addOrReplaceComponent(column, "collections", ComponentType.ENTITY_COLLECTIONS, entityModel);
         } else {
             Components.permanentlyHide(column, "collections");
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
index 23a9a8d..ff0d5b8 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/PropUtil.java
@@ -21,20 +21,44 @@ package org.apache.isis.viewer.wicket.ui.components.entity.properties;
 import java.util.List;
 import java.util.Map;
 
+import com.google.common.collect.FluentIterable;
+
 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.v1_0.Column;
+import org.apache.isis.applib.layout.v1_0.PropertyGroup;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
 
 public final class PropUtil {
 
     private PropUtil() {
     }
 
+    static List<String> propertyGroupNames(
+            final EntityModel entityModel,
+            final Column.Hint hint, final Column columnMetaDataIfAny) {
+        final ObjectAdapter adapter = entityModel.getObject();
+        final ObjectSpecification objSpec = adapter.getSpecification();
+
+        final Map<String, List<ObjectAssociation>> associationsByGroup =
+                propertiesByMemberOrder(adapter);
+
+        return columnMetaDataIfAny != null
+                ? FluentIterable
+                .from(columnMetaDataIfAny.getPropertyGroups())
+                .transform(PropertyGroup.Util.nameOf())
+                .toList()
+                : ObjectSpecifications.orderByMemberGroups(objSpec, associationsByGroup.keySet(),
+                hint);
+    }
+
     static Map<String, List<ObjectAssociation>> propertiesByMemberOrder(final ObjectAdapter adapter) {
         final List<ObjectAssociation> properties = visibleProperties(adapter);
         return ObjectAssociation.Util.groupByMemberOrderName(properties);
@@ -64,5 +88,4 @@ public final class PropUtil {
                 filter);
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/9ff3c29d/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 c9e7ac8..7d4f0e4 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
@@ -15,8 +15,6 @@
                 </propertyGroup>
             </left>
             <right span="6">
-                <collection id="similarTo" defaultView="table"/>
-                <collection id="others" defaultView="hide"/>
             </right>
         </tab>
         <tab name="Metadata">
@@ -31,4 +29,12 @@
             </left>
         </tab>
     </tabGroup>
+    <tabGroup>
+        <tab name="Collections">
+            <left span="6">
+                <collection id="similarTo" defaultView="table"/>
+                <collection id="others" defaultView="hide"/>
+            </left>
+        </tab>
+    </tabGroup>
 </objectLayout>
\ No newline at end of file


[5/5] isis git commit: ISIS-993: fixed the OK/edit issue.

Posted by da...@apache.org.
ISIS-993: fixed the OK/edit issue.


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

Branch: refs/heads/ISIS-993
Commit: 873cc2e2e86df4f3e43d691ef9313d03c5313745
Parents: 9ff3c29
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jan 9 09:10:30 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Jan 9 09:10:30 2016 +0000

----------------------------------------------------------------------
 .../ui/components/entity/properties/EntityPropertiesForm.java  | 2 +-
 .../src/main/java/domainapp/dom/simple/SimpleObject.layout.xml | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/873cc2e2/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 1f8792a..ea35848 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -227,7 +227,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
             addFeedbackGui(leftColumn);
 
         } else {
-            Components.permanentlyHide(this,
+            Components.permanentlyHide(leftColumn,
                     ID_EDIT_BUTTON, ID_OK_BUTTON, ID_CANCEL_BUTTON,
                     ID_FEEDBACK);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/873cc2e2/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 7d4f0e4..e49e937 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
@@ -13,8 +13,10 @@
                         </actions>
                     </property>
                 </propertyGroup>
+                <collection id="similarTo" defaultView="table"/>
             </left>
             <right span="6">
+                <collection id="others" defaultView="hide"/>
             </right>
         </tab>
         <tab name="Metadata">
@@ -29,12 +31,12 @@
             </left>
         </tab>
     </tabGroup>
+<!--
     <tabGroup>
         <tab name="Collections">
             <left span="6">
-                <collection id="similarTo" defaultView="table"/>
-                <collection id="others" defaultView="hide"/>
             </left>
         </tab>
     </tabGroup>
+-->
 </objectLayout>
\ No newline at end of file