You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/02/15 09:54:18 UTC
[1/2] isis git commit: ISIS-993: suppress properties from fieldsets
that should be invisible.
Repository: isis
Updated Branches:
refs/heads/ISIS-993 d2340ebd5 -> 697bcdbc5
ISIS-993: suppress properties from fieldsets that should be invisible.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2bde2a1e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2bde2a1e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2bde2a1e
Branch: refs/heads/ISIS-993
Commit: 2bde2a1e50b025d1a052829b99376da77a8a66b2
Parents: d2340eb
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Feb 14 15:21:13 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun Feb 14 15:21:13 2016 +0000
----------------------------------------------------------------------
.../wicket/ui/components/entity/fieldset/PropertyGroup.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/2bde2a1e/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index 3c12319..7cb2052 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -27,10 +27,13 @@ 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.annotation.Where;
import org.apache.isis.applib.layout.component.FieldSet;
import org.apache.isis.applib.layout.component.PropertyLayoutData;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
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;
@@ -81,6 +84,10 @@ public class PropertyGroup extends PanelAbstract<EntityModel> {
final List<PropertyLayoutData> properties = fieldSet.getProperties();
for (PropertyLayoutData property : properties) {
final ObjectAssociation association = adapter.getSpecification().getAssociation(property.getId());
+ final Consent visibility = association.isVisible(adapter, InteractionInitiatedBy.USER, Where.OBJECT_FORMS);
+ if(visibility.isVetoed()) {
+ continue;
+ }
final WebMarkupContainer propertyRvContainer = new WebMarkupContainer(propertyRv.newChildId());
propertyRv.add(propertyRvContainer);
[2/2] isis git commit: ISIS-993: better derivation of default grid
from existing metadata when none is available.
Posted by da...@apache.org.
ISIS-993: better derivation of default grid from existing metadata when none is available.
Also:
- allow actions to be associated in @MemberOrder#name with fieldset ids; wire up to first property within that fieldset
- associate the (framework-provided downloadLayoutXml and downloadJdoMetadata actions with "metadata" fieldset.
- some fixes for CSS for dropdowns
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/697bcdbc
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/697bcdbc
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/697bcdbc
Branch: refs/heads/ISIS-993
Commit: 697bcdbc59341a10f4bb6f645bb3c856ab6226fc
Parents: 2bde2a1
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Feb 15 08:54:05 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Feb 15 08:54:05 2016 +0000
----------------------------------------------------------------------
.../layout/Object_downloadLayoutXml.java | 5 +-
.../facets/object/grid/GridFacetDefault.java | 3 +-
.../bootstrap3/GridNormalizerServiceBS3.java | 73 +++++++++++++++-----
.../Persistable_downloadJdoMetadata.java | 5 +-
.../wicket/ui/pages/bootstrap-overrides.css | 9 +++
5 files changed, 72 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/697bcdbc/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
index 3679e0a..eee95b0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_downloadLayoutXml.java
@@ -49,9 +49,10 @@ public class Object_downloadLayoutXml {
restrictTo = RestrictTo.PROTOTYPING
)
@ActionLayout(
- cssClassFa = "fa-download"
+ cssClassFa = "fa-download",
+ position = ActionLayout.Position.PANEL_DROPDOWN
)
- @MemberOrder(sequence = "550.1")
+ @MemberOrder(name = "Metadata", sequence = "550.1")
public Object $$(
@ParameterLayout(named = "File name")
final String fileName,
http://git-wip-us.apache.org/repos/asf/isis/blob/697bcdbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
index 9cdabb5..e02efde 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/grid/GridFacetDefault.java
@@ -150,8 +150,9 @@ public class GridFacetDefault
final List<String> leftMemberGroups = memberGroupNames;
for (String memberGroup : leftMemberGroups) {
final FieldSet fieldSet = new FieldSet();
- fieldSet.setId(memberGroup); // to bind to later via @MemberOrder#name()
fieldSet.setName(memberGroup);
+ // fieldSet's id will be derived from the name later
+ // during normalization phase.
if(unreferencedProperties && col.getFieldSets().isEmpty()) {
fieldSet.setUnreferencedProperties(true);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/697bcdbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
index 1cb65c9..d5aed0c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
@@ -26,11 +26,13 @@ import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.layout.component.ActionLayoutData;
@@ -71,7 +73,8 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
final Grid grid,
final Map<String, OneToOneAssociation> oneToOneAssociationById,
final Map<String, OneToManyAssociation> oneToManyAssociationById,
- final Map<String, ObjectAction> objectActionById, final ObjectSpecification objectSpec) {
+ final Map<String, ObjectAction> objectActionById,
+ final ObjectSpecification objectSpec) {
final BS3Grid bs3Grid = (BS3Grid) grid;
@@ -83,6 +86,7 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
// find all row and col ids
// ensure that all Ids are different
+ final List<String> gridIds = Lists.newArrayList();
final LinkedHashMap<String, BS3Row> rowIds = Maps.newLinkedHashMap();
final LinkedHashMap<String, BS3Col> colIds = Maps.newLinkedHashMap();
final LinkedHashMap<String, FieldSet> fieldSetIds = Maps.newLinkedHashMap();
@@ -96,12 +100,13 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
if(id == null) {
return;
}
- if(rowIds.containsKey(id) || colIds.containsKey(id)) {
- bs3Row.setMetadataError("There is another col with this id");
+ if(gridIds.contains(id)) {
+ bs3Row.setMetadataError("There is another element in the grid with this id");
duplicateIdDetected.set(true);
return;
}
rowIds.put(id, bs3Row);
+ gridIds.add(id);
}
@Override
@@ -110,26 +115,29 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
if(id == null) {
return;
}
- if(rowIds.containsKey(id) || colIds.containsKey(id)) {
- bs3Col.setMetadataError("There is another col with this id");
+ if(gridIds.contains(id)) {
+ bs3Col.setMetadataError("There is another element in the grid with this id");
duplicateIdDetected.set(true);
return;
}
colIds.put(id, bs3Col);
+ gridIds.add(id);
}
@Override
public void visit(final FieldSet fieldSet) {
- final String id = fieldSet.getId();
+ String id = fieldSet.getId();
if(id == null) {
- return;
+ final String name = fieldSet.getName();
+ fieldSet.setId(id = asId(name));
}
- if(rowIds.containsKey(id) || fieldSetIds.containsKey(id)) {
- fieldSet.setMetadataError("There is another fieldset with this id");
+ if(gridIds.contains(id)) {
+ fieldSet.setMetadataError("There is another element in the grid with this id");
duplicateIdDetected.set(true);
return;
}
fieldSetIds.put(id, fieldSet);
+ gridIds.add(id);
}
});
@@ -231,20 +239,19 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
propertyIds.get(surplusPropertyId).setMetadataError("No such property");
}
+ final Map<String, List<OneToOneAssociation>> boundAssociationsByFieldSetId = Maps.newHashMap();
if(!missingPropertyIds.isEmpty()) {
- final Map<String, List<OneToOneAssociation>> boundAssociationsByFieldSetId = Maps.newHashMap();
final List<String> unboundPropertyIds = Lists.newArrayList(missingPropertyIds);
for (String missingPropertyId : missingPropertyIds) {
final OneToOneAssociation otoa = oneToOneAssociationById.get(missingPropertyId);
final MemberOrderFacet memberOrderFacet = otoa.getFacet(MemberOrderFacet.class);
if(memberOrderFacet != null) {
- final String name = memberOrderFacet.name();
- if(fieldSetIds.containsKey(name)) {
- List<OneToOneAssociation> boundAssociations =
- boundAssociationsByFieldSetId.get(name);
+ final String id = asId(memberOrderFacet.name());
+ if(fieldSetIds.containsKey(id)) {
+ List<OneToOneAssociation> boundAssociations = boundAssociationsByFieldSetId.get(id);
if(boundAssociations == null) {
boundAssociations = Lists.newArrayList();
- boundAssociationsByFieldSetId.put(name, boundAssociations);
+ boundAssociationsByFieldSetId.put(id, boundAssociations);
}
boundAssociations.add(otoa);
unboundPropertyIds.remove(missingPropertyId);
@@ -316,7 +323,8 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
final List<String> missingActionIds =
FluentIterable.from(actionIdTuple.second)
.filter(new Predicate<String>() {
- @Override public boolean apply(@Nullable final String actionId) {
+ @Override
+ public boolean apply(final String actionId) {
final ObjectAction oa = objectActionById.get(actionId);
final MemberOrderFacet memberOrderFacet = oa.getFacet(MemberOrderFacet.class);
if(memberOrderFacet == null) {
@@ -326,8 +334,29 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
if (memberOrderName == null) {
return true;
}
- return !oneToOneAssociationById.containsKey(memberOrderName) &&
- !oneToManyAssociationById.containsKey(memberOrderName);
+ final String id = asId(memberOrderName);
+ if (oneToOneAssociationById.containsKey(id)) {
+ return false;
+ }
+ if (oneToManyAssociationById.containsKey(id)) {
+ return false;
+ }
+ // if the @MemberOrder references a field set, then don't mark it as missing, but
+ // instead explicitly add it to the list of actions of that fieldset.
+ // (note we only do this provided we already know that
+ // there is at least one property for said fieldset)
+ if(boundAssociationsByFieldSetId.containsKey(id)) {
+ final List<OneToOneAssociation> oneToOneAssociations =
+ boundAssociationsByFieldSetId.get(id);
+ if(!oneToOneAssociations.isEmpty()) {
+ final ActionLayoutData actionLayoutData = new ActionLayoutData(actionId);
+ actionLayoutData.setPosition(ActionLayout.Position.PANEL_DROPDOWN);
+ fieldSetIds.get(id).getActions().add(actionLayoutData);
+ }
+ return false;
+ }
+ // is missing after all.
+ return true;
}
})
.toList();
@@ -351,6 +380,14 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
return true;
}
+ static String asId(final String str) {
+ if(Strings.isNullOrEmpty(str)) {
+ return str;
+ }
+ final char c = str.charAt(0);
+ return Character.toLowerCase(c) + str.substring(1).replaceAll("\\s+", "");
+ }
+
private static Comparator<ObjectAssociation> byMemberOrderSequence() {
return new Comparator<ObjectAssociation>() {
private final DeweyOrderComparator deweyOrderComparator = new DeweyOrderComparator();
http://git-wip-us.apache.org/repos/asf/isis/blob/697bcdbc/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
index ffa1368..d0b136f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
@@ -52,9 +52,10 @@ public class Persistable_downloadJdoMetadata {
restrictTo = RestrictTo.PROTOTYPING
)
@ActionLayout(
- cssClassFa = "fa-download"
+ cssClassFa = "fa-download",
+ position = ActionLayout.Position.PANEL_DROPDOWN
)
- @MemberOrder(sequence = "800.1")
+ @MemberOrder(name = "Metadata", sequence = "800.1")
public Clob $$(
@ParameterLayout(named = ".jdo file name")
final String fileName) throws JAXBException, IOException {
http://git-wip-us.apache.org/repos/asf/isis/blob/697bcdbc/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 5df7fcb..83954d7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -365,6 +365,7 @@ div.entityHeaderPanel .iconAndTitle{
div.entityHeaderPanel .iconAndTitleLabel {
float: left;
+ margin-bottom: 10px;
}
div.entityHeaderPanel .entityActions .cssMenuPanel .cssMenuItems:first-child {
@@ -756,4 +757,12 @@ tr.headers th form input {
.tabbable {
padding-bottom: 10px;
+}
+
+.additionalLinkListDropDown ul.dropdown-menu li.additionalLinkItem {
+ width: 100%;
+}
+.additionalLinkListDropDown ul.dropdown-menu {
+ padding-top: 0%;
+ padding-bottom: 0%;
}
\ No newline at end of file