ISIS-537: can now select different views for standalone collections.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c1f5281d Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c1f5281d Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c1f5281d Branch: refs/heads/ISIS-939 Commit: c1f5281d97ba77fa9055f99ec650654f977cf641 Parents: cb2bea9 Author: Dan Haywood <[email protected]> Authored: Mon Nov 10 20:37:13 2014 +0000 Committer: Dan Haywood <[email protected]> Committed: Mon Nov 10 20:37:13 2014 +0000 ---------------------------------------------------------------------- .../model/models/EntityCollectionModel.java | 2 - .../viewer/wicket/model/models/EntityModel.java | 72 +------------------ .../wicket/model/models/ModelAbstract.java | 76 +++++++++++++++++++- 3 files changed, 78 insertions(+), 72 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/c1f5281d/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java ---------------------------------------------------------------------- diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java index 41c831b..6afdecd 100644 --- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java +++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java @@ -23,11 +23,9 @@ import java.io.Serializable; import java.util.Collections; import java.util.Comparator; import java.util.List; - import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; - import org.apache.isis.core.commons.factory.InstanceUtil; import org.apache.isis.core.commons.lang.ClassUtil; import org.apache.isis.core.commons.lang.Closure; http://git-wip-us.apache.org/repos/asf/isis/blob/c1f5281d/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java ---------------------------------------------------------------------- diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java index 6c66859..e293e9b 100644 --- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java +++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java @@ -23,11 +23,8 @@ import java.io.Serializable; import java.util.Map; import java.util.Set; import com.google.common.collect.Maps; -import org.apache.wicket.Component; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.util.string.PrependingStringBuffer; -import org.apache.wicket.util.string.Strings; import org.apache.isis.applib.annotation.BookmarkPolicy; import org.apache.isis.applib.services.memento.MementoService.Memento; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; @@ -46,8 +43,6 @@ 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; import org.apache.isis.core.runtime.system.context.IsisContext; -import org.apache.isis.viewer.wicket.model.hints.UiHintContainer; -import org.apache.isis.viewer.wicket.model.hints.UiHintPathSignificant; import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento; import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames; import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento; @@ -59,7 +54,7 @@ import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento; * So that the model is {@link Serializable}, the {@link ObjectAdapter} is * stored as a {@link ObjectAdapterMemento}. */ -public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiHintContainer { +public class EntityModel extends BookmarkableModel<ObjectAdapter> { private static final long serialVersionUID = 1L; @@ -154,7 +149,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH public EntityModel(final PageParameters pageParameters) { this(ObjectAdapterMemento.createPersistent(rootOidFrom(pageParameters))); - hintPageParameterSerializer.pageParametersToHints(pageParameters, this.hints); + hintPageParameterSerializer.pageParametersToHints(pageParameters, getHints()); } public EntityModel(final ObjectAdapter adapter) { this(ObjectAdapterMemento.createOrNull(adapter)); @@ -183,7 +178,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH @Override public PageParameters getPageParameters() { PageParameters pageParameters = createPageParameters(getObject()); - hintPageParameterSerializer.hintsToPageParameters(hints, pageParameters); + hintPageParameterSerializer.hintsToPageParameters(getHints(), pageParameters); return pageParameters; } @@ -466,67 +461,6 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH - // ////////////////////////////////////////////////////////// - // Hint support - // ////////////////////////////////////////////////////////// - - private final Map<String, String> hints = Maps.newTreeMap(); - - public String getHint(final Component component, final String key) { - if(component == null) { - return null; - } - String hintKey = hintKey(component, key); - return hints.get(hintKey); - } - - @Override - public void setHint(Component component, String key, String value) { - if(component == null) { - return; - } - String hintKey = hintKey(component, key); - if(value != null) { - hints.put(hintKey, value); - } else { - clearHint(component, hintKey); - } - } - - @Override - public void clearHint(Component component, String key) { - if(component == null) { - return; - } - String hintKey = hintKey(component, key); - hints.remove(hintKey); - } - - - private static String hintKey(Component component, String key) { - return hintPathFor(component) + "-" + key; - } - - private static String hintPathFor(Component component) - { - return Strings.afterFirstPathComponent(fullHintPathFor(component), Component.PATH_SEPARATOR); - } - - private static String fullHintPathFor(Component component) - { - final PrependingStringBuffer buffer = new PrependingStringBuffer(32); - for (Component c = component; c != null; c = c.getParent()) - { - if(c instanceof UiHintPathSignificant) { - if (buffer.length() > 0) - { - buffer.prepend(Component.PATH_SEPARATOR); - } - buffer.prepend(c.getId()); - } - } - return buffer.toString(); - } // ////////////////////////////////////////////////////////// http://git-wip-us.apache.org/repos/asf/isis/blob/c1f5281d/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java ---------------------------------------------------------------------- diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java index 4556cd2..8e65177 100644 --- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java +++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java @@ -20,18 +20,25 @@ package org.apache.isis.viewer.wicket.model.models; import java.util.List; +import java.util.Map; +import com.google.common.collect.Maps; +import org.apache.wicket.Component; import org.apache.wicket.model.LoadableDetachableModel; +import org.apache.wicket.util.string.PrependingStringBuffer; +import org.apache.wicket.util.string.Strings; import org.apache.isis.core.commons.authentication.AuthenticationSession; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; import org.apache.isis.core.runtime.system.context.IsisContext; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; +import org.apache.isis.viewer.wicket.model.hints.UiHintContainer; +import org.apache.isis.viewer.wicket.model.hints.UiHintPathSignificant; /** * Adapter for {@link LoadableDetachableModel}s, providing access to some of the * Isis' dependencies. */ -public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> { +public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> implements UiHintContainer { private static final long serialVersionUID = 1L; @@ -42,6 +49,73 @@ public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> { super(t); } + + // ////////////////////////////////////////////////////////// + // Hint support + // ////////////////////////////////////////////////////////// + + private final Map<String, String> hints = Maps.newTreeMap(); + + public String getHint(final Component component, final String key) { + if(component == null) { + return null; + } + String hintKey = hintKey(component, key); + return hints.get(hintKey); + } + + @Override + public void setHint(Component component, String key, String value) { + if(component == null) { + return; + } + String hintKey = hintKey(component, key); + if(value != null) { + hints.put(hintKey, value); + } else { + clearHint(component, hintKey); + } + } + + @Override + public void clearHint(Component component, String key) { + if(component == null) { + return; + } + String hintKey = hintKey(component, key); + hints.remove(hintKey); + } + + + private static String hintKey(Component component, String key) { + return hintPathFor(component) + "-" + key; + } + + private static String hintPathFor(Component component) + { + return Strings.afterFirstPathComponent(fullHintPathFor(component), Component.PATH_SEPARATOR); + } + + private static String fullHintPathFor(Component component) + { + final PrependingStringBuffer buffer = new PrependingStringBuffer(32); + for (Component c = component; c != null; c = c.getParent()) + { + if(c instanceof UiHintPathSignificant) { + if (buffer.length() > 0) + { + buffer.prepend(Component.PATH_SEPARATOR); + } + buffer.prepend(c.getId()); + } + } + return buffer.toString(); + } + + protected Map<String, String> getHints() { + return hints; + } + // ////////////////////////////////////////////////////////////// // Dependencies // //////////////////////////////////////////////////////////////
