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:50 UTC
[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).
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