ISIS-993: factored out EntityColumnMembers
Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/aacec3b4 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/aacec3b4 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/aacec3b4 Branch: refs/heads/ISIS-993 Commit: aacec3b49a2a918a14d2136c0e447118ee24d4f4 Parents: f9f43c2 Author: Dan Haywood <d...@haywood-associates.co.uk> Authored: Sun Jan 10 14:35:34 2016 +0000 Committer: Dan Haywood <d...@haywood-associates.co.uk> Committed: Mon Jan 25 14:38:24 2016 +0000 ---------------------------------------------------------------------- .../entity/properties/EntityColumnMembers.html | 2 +- .../entity/properties/EntityColumnMembers.java | 148 ++++++++++++++++++- .../entity/properties/EntityPropertiesForm.java | 132 +---------------- .../properties/EntityPropertiesPanel.html | 66 +-------- 4 files changed, 154 insertions(+), 194 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/aacec3b4/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 index 07ca0f3..43c76da 100644 --- 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 @@ -20,7 +20,7 @@ <html xmlns:wicket="http://wicket.apache.org"> <body> <wicket:panel> - <div wicket:id="columnMembers" class="columnMembers"> + <div class="columnMembers"> <div class="inputFormTable properties"> <fieldset wicket:id="memberGroup" class="memberGroup myBlockContainer"> <div class="panel panel-default"> http://git-wip-us.apache.org/repos/asf/isis/blob/aacec3b4/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 index 805a904..3e0cd3f 100644 --- 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 @@ -18,16 +18,52 @@ */ 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 com.google.common.collect.Lists; + import org.apache.wicket.Component; +import org.apache.wicket.MarkupContainer; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.isis.applib.annotation.ActionLayout; +import org.apache.isis.applib.layout.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.spec.ObjectSpecification; +import org.apache.isis.core.metamodel.spec.ObjectSpecifications; +import org.apache.isis.core.metamodel.spec.feature.ObjectAction; +import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation; +import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation; +import org.apache.isis.core.runtime.system.DeploymentType; +import org.apache.isis.core.runtime.system.context.IsisContext; +import org.apache.isis.viewer.wicket.model.links.LinkAndLabel; +import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento; import org.apache.isis.viewer.wicket.model.models.EntityModel; -import org.apache.isis.viewer.wicket.ui.panels.FormAbstract; +import org.apache.isis.viewer.wicket.model.models.ScalarModel; +import org.apache.isis.viewer.wicket.ui.ComponentType; +import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.AdditionalLinksPanel; +import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil; +import org.apache.isis.viewer.wicket.ui.components.widgets.containers.UiHintPathSignificantWebMarkupContainer; +import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract; +import org.apache.isis.viewer.wicket.ui.util.Components; -public class EntityColumnMembers extends FormAbstract<ObjectAdapter> { +public class EntityColumnMembers extends PanelAbstract<EntityModel> { private static final long serialVersionUID = 1L; + private static final String ID_MEMBER_GROUP = "memberGroup"; + private static final String ID_MEMBER_GROUP_NAME = "memberGroupName"; + + private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL = "associatedActionLinksPanel"; + private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN = "associatedActionLinksPanelDropDown"; + + private static final String ID_PROPERTIES = "properties"; + private static final String ID_PROPERTY = "property"; private final Component owningPanel; @@ -43,8 +79,114 @@ public class EntityColumnMembers extends FormAbstract<ObjectAdapter> { } private void buildGui() { - final EntityModel entityModel = (EntityModel) getModel(); + addPropertiesAndCollections(this, entityModel); + } + private void addPropertiesAndCollections( + final MarkupContainer col, + final EntityModel entityModel) { + addPropertiesInColumn(col, entityModel); + addCollectionsIfRequired(col, entityModel); } + + private void addPropertiesInColumn( + final MarkupContainer markupContainer, + final EntityModel entityModel) { + + final Column columnMetaDataIfAny = entityModel.getColumnMetadata(); + final Column.Hint hint = entityModel.getColumnHint(); + 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); + + 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) { + continue; + } + + final WebMarkupContainer memberGroupRvContainer = new WebMarkupContainer(memberGroupRv.newChildId()); + memberGroupRv.add(memberGroupRvContainer); + memberGroupRvContainer.add(new Label(ID_MEMBER_GROUP_NAME, groupName)); + + final List<LinkAndLabel> memberGroupActions = Lists.newArrayList(); + + final RepeatingView propertyRv = new RepeatingView(ID_PROPERTIES); + memberGroupRvContainer.add(propertyRv); + + @SuppressWarnings("unused") + Component component; + for (final ObjectAssociation association : associationsInGroup) { + final WebMarkupContainer propertyRvContainer = new UiHintPathSignificantWebMarkupContainer(propertyRv.newChildId()); + propertyRv.add(propertyRvContainer); + + addPropertyToForm(entityModel, (OneToOneAssociation) association, propertyRvContainer, memberGroupActions); + } + + final List<LinkAndLabel> actionsPanel = LinkAndLabel.positioned(memberGroupActions, ActionLayout.Position.PANEL); + final List<LinkAndLabel> actionsPanelDropDown = LinkAndLabel.positioned(memberGroupActions, ActionLayout.Position.PANEL_DROPDOWN); + + AdditionalLinksPanel.addAdditionalLinks( + memberGroupRvContainer, ID_ASSOCIATED_ACTION_LINKS_PANEL, + actionsPanel, + AdditionalLinksPanel.Style.INLINE_LIST); + AdditionalLinksPanel.addAdditionalLinks( + memberGroupRvContainer, ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN, + actionsPanelDropDown, + AdditionalLinksPanel.Style.DROPDOWN); + } + } + + private void addCollectionsIfRequired( + final MarkupContainer column, + final EntityModel entityModel) { + + final Column columnMetaDataIfAny = entityModel.getColumnMetadata(); + + if(columnMetaDataIfAny != null) { + getComponentFactoryRegistry() + .addOrReplaceComponent(column, "collections", ComponentType.ENTITY_COLLECTIONS, entityModel); + } else { + Components.permanentlyHide(column, "collections"); + } + } + + private void addPropertyToForm( + final EntityModel entityModel, + final OneToOneAssociation otoa, + final WebMarkupContainer container, + final List<LinkAndLabel> entityActions) { + final PropertyMemento pm = new PropertyMemento(otoa); + + final ScalarModel scalarModel = entityModel.getPropertyModel(pm); + final Component component = getComponentFactoryRegistry().addOrReplaceComponent(container, ID_PROPERTY, ComponentType.SCALAR_NAME_AND_VALUE, scalarModel); + + final List<ObjectAction> associatedActions = EntityActionUtil.getObjectActionsForAssociation(entityModel, + otoa, getDeploymentType()); + + entityActions.addAll(EntityActionUtil.asLinkAndLabelsForAdditionalLinksPanel(entityModel, associatedActions)); + } + + + + /////////////////////////////////////////////////////// + // Dependencies (from context) + /////////////////////////////////////////////////////// + + protected DeploymentType getDeploymentType() { + return IsisContext.getDeploymentType(); + } + } http://git-wip-us.apache.org/repos/asf/isis/blob/aacec3b4/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 02230e9..24837b6 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 @@ -19,10 +19,6 @@ 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 com.google.common.collect.Lists; import org.apache.wicket.Component; import org.apache.wicket.MarkupContainer; @@ -37,7 +33,6 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; -import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.request.Response; @@ -45,13 +40,12 @@ import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.visit.IVisit; import org.apache.wicket.util.visit.IVisitor; -import org.apache.isis.applib.annotation.ActionLayout; import org.apache.isis.applib.annotation.MemberGroupLayout.ColumnSpans; 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.applib.layout.v1_0.Column.Hint; import org.apache.isis.applib.layout.v1_0.Tab; import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer; import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite; @@ -63,26 +57,15 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy; import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet; 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.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; -import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation; import org.apache.isis.core.runtime.memento.Memento; -import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.context.IsisContext; import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager; -import org.apache.isis.viewer.wicket.model.links.LinkAndLabel; -import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento; import org.apache.isis.viewer.wicket.model.models.ActionPrompt; import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider; import org.apache.isis.viewer.wicket.model.models.EntityModel; -import org.apache.isis.viewer.wicket.model.models.ScalarModel; import org.apache.isis.viewer.wicket.ui.ComponentType; -import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.AdditionalLinksPanel; -import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil; -import org.apache.isis.viewer.wicket.ui.components.widgets.containers.UiHintPathSignificantWebMarkupContainer; import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired; import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour; import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage; @@ -98,21 +81,12 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements private static final long serialVersionUID = 1L; - private static final String ID_MEMBER_GROUP = "memberGroup"; - private static final String ID_MEMBER_GROUP_NAME = "memberGroupName"; - - private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL = "associatedActionLinksPanel"; - private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN = "associatedActionLinksPanelDropDown"; - private static final String ID_LEFT_COLUMN = "leftColumn"; private static final String ID_MIDDLE_COLUMN = "middleColumn"; private static final String ID_RIGHT_COLUMN = "rightColumn"; private static final String ID_ENTITY_COLLECTIONS = "entityCollections"; private static final String ID_ENTITY_COLLECTIONS_OVERFLOW = "entityCollectionsOverflow"; - - private static final String ID_PROPERTIES = "properties"; - private static final String ID_PROPERTY = "property"; private static final String ID_EDIT_BUTTON = "edit"; private static final String ID_OK_BUTTON = "ok"; @@ -258,7 +232,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements } private void addPropertiesAndCollections( - final MarkupContainer middleColumn, + final MarkupContainer markupContainer, final EntityModel entityModel, final Tab tabMetaDataIfAny, final Hint hint) { @@ -268,104 +242,11 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements 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 EntityModel entityModel) { - - final Column columnMetaDataIfAny = entityModel.getColumnMetadata(); - final Hint hint = entityModel.getColumnHint(); - 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); - - 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) { - continue; - } - - final WebMarkupContainer memberGroupRvContainer = new WebMarkupContainer(memberGroupRv.newChildId()); - memberGroupRv.add(memberGroupRvContainer); - memberGroupRvContainer.add(new Label(ID_MEMBER_GROUP_NAME, groupName)); - - final List<LinkAndLabel> memberGroupActions = Lists.newArrayList(); - - final RepeatingView propertyRv = new RepeatingView(ID_PROPERTIES); - memberGroupRvContainer.add(propertyRv); - - @SuppressWarnings("unused") - Component component; - for (final ObjectAssociation association : associationsInGroup) { - final WebMarkupContainer propertyRvContainer = new UiHintPathSignificantWebMarkupContainer(propertyRv.newChildId()); - propertyRv.add(propertyRvContainer); - - addPropertyToForm(entityModel, (OneToOneAssociation) association, propertyRvContainer, memberGroupActions); - } - - final List<LinkAndLabel> actionsPanel = LinkAndLabel.positioned(memberGroupActions, ActionLayout.Position.PANEL); - final List<LinkAndLabel> actionsPanelDropDown = LinkAndLabel.positioned(memberGroupActions, ActionLayout.Position.PANEL_DROPDOWN); - - AdditionalLinksPanel.addAdditionalLinks( - memberGroupRvContainer, ID_ASSOCIATED_ACTION_LINKS_PANEL, - actionsPanel, - AdditionalLinksPanel.Style.INLINE_LIST); - AdditionalLinksPanel.addAdditionalLinks( - memberGroupRvContainer, ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN, - actionsPanelDropDown, - AdditionalLinksPanel.Style.DROPDOWN); - } - } - - private void addCollectionsIfRequired( - final MarkupContainer column, - final EntityModel entityModel) { - - final Column columnMetaDataIfAny = entityModel.getColumnMetadata(); - - if(columnMetaDataIfAny != null) { - getComponentFactoryRegistry() - .addOrReplaceComponent(column, "collections", ComponentType.ENTITY_COLLECTIONS, entityModel); - } else { - Components.permanentlyHide(column, "collections"); - } + final EntityColumnMembers columnMembers = + new EntityColumnMembers("entityMembers", entityModelWithHints, markupContainer); + markupContainer.add(columnMembers); } - private void addPropertyToForm( - final EntityModel entityModel, - final OneToOneAssociation otoa, - final WebMarkupContainer container, - final List<LinkAndLabel> entityActions) { - final PropertyMemento pm = new PropertyMemento(otoa); - - final ScalarModel scalarModel = entityModel.getPropertyModel(pm); - final Component component = getComponentFactoryRegistry().addOrReplaceComponent(container, ID_PROPERTY, ComponentType.SCALAR_NAME_AND_VALUE, scalarModel); - - final List<ObjectAction> associatedActions = EntityActionUtil.getObjectActionsForAssociation(entityModel, - otoa, getDeploymentType()); - - entityActions.addAll(EntityActionUtil.asLinkAndLabelsForAdditionalLinksPanel(entityModel, associatedActions)); - } @Override protected void onComponentTag(ComponentTag tag) { @@ -828,8 +709,5 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements return getAuthenticationSession().getMessageBroker(); } - protected DeploymentType getDeploymentType() { - return IsisContext.getDeploymentType(); - } } http://git-wip-us.apache.org/repos/asf/isis/blob/aacec3b4/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 9b8a582..8fbcfb4 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,27 +24,7 @@ <form wicket:id="entityProperties" class="inputForm" role="form"> <div class="row" style="padding-bottom: 20px"> <div wicket:id="leftColumn"> - <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 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> + <div wicket:id="entityMembers"/> <div class="feedbackPanel"> <span wicket:id="feedback"></span> </div> @@ -55,50 +35,10 @@ </div> </div> <div wicket:id="middleColumn"> - <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 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> + <div wicket:id="entityMembers"/> </div> <div wicket:id="rightColumn"> - <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 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> + <div wicket:id="entityMembers"/> </div> <div wicket:id="entityCollections"></div> </div>