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/25 16:07:47 UTC
[26/50] [abbrv] isis git commit: ISIS-993: refactoring
EntityPropertiesForm so can factor out a new component.
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/084ab6d8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/084ab6d8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/084ab6d8
Branch: refs/heads/ISIS-993
Commit: 084ab6d84027d0740f2961fdbe400dfa2841c97c
Parents: 78f9d8e
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: Mon Jan 25 15:06:07 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/084ab6d8/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/084ab6d8/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/084ab6d8/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/084ab6d8/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/084ab6d8/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>