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/06/17 09:22:42 UTC

[1/2] isis git commit: ISIS-1448: reinstates the ability to switch component factory for entity collection.

Repository: isis
Updated Branches:
  refs/heads/master 38291d7da -> 3cb546e57


ISIS-1448: reinstates the ability to switch component factory for entity collection.

Prior to 1.12.0 the ComponentFactory SPI was used to lookup the component to render an entity collection, using ComponentType.ENTITY_COLLECTION and passing in an EntityModel with appropriate hints to indicate which collection of the entity to render.  The default implementation was EntityCollectionsPanelFactory returning an EntityCollectionsPanel (the plural here is because there many representations of a single collection, with a drop-down selector to choose which).

In the 1.12.0 (layout XML stuff), this capability was lost: the new Col class simply instantiates EntityCollectionPanel (renamed from EntityCollectionsPanel).

This commit reinstates the ability by having Col use the ComponentFactoryRegistrar to look up the component to render the entity collection.

The commit also deletes the CollectionPanelFactory; this code was unused.  CollectionPanel is the default table representation of the collection; EntityCollectionPanel simply instantiates it and then keeps track of all the "other" implementations to render the collection.  To make this easier to switch in, the code to instantiate a CollectionPanel within EntityCollectionPanel has been moved to a (potentially overridable) factory method.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/53626608
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/53626608
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/53626608

Branch: refs/heads/master
Commit: 53626608c130bea75a471db3f94f750575a0d2f1
Parents: 38291d7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jun 17 10:07:35 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jun 17 10:19:56 2016 +0100

----------------------------------------------------------------------
 .../ComponentFactoryRegistrarDefault.java       | 32 +++--------
 .../isis/viewer/wicket/ui/ComponentType.java    | 20 ++++---
 .../collection/CollectionPanelFactory.java      | 56 --------------------
 .../collection/EntityCollectionPanel.java       | 19 ++++---
 .../EntityCollectionPanelFactory.java           | 45 ++++++++++++++++
 .../ui/components/layout/bs3/col/Col.java       | 20 +++----
 6 files changed, 85 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index da417fc..469d275 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -19,10 +19,7 @@
 
 package org.apache.isis.viewer.wicket.viewer.registries.components;
 
-import java.util.ServiceLoader;
-
 import com.google.inject.Singleton;
-
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
 import org.apache.isis.viewer.wicket.ui.components.about.AboutPanelFactory;
@@ -33,12 +30,12 @@ import org.apache.isis.viewer.wicket.ui.components.actions.ActionInfoPanelFactor
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersFormPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.bookmarkedpages.BookmarkedPagesPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple.CollectionContentsMultipleViewsPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.summary.CollectionContentsAsSummaryFactory;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsHiddenPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.empty.EmptyCollectionPanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.entity.collection.EntityCollectionPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.entity.header.EntityHeaderPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconAndTitlePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconTitleAndCopyLinkPanelFactory;
@@ -47,16 +44,7 @@ import org.apache.isis.viewer.wicket.ui.components.footer.FooterPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.header.HeaderPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditFormPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisClobPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisColorPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisMoneyPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisPasswordPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisPercentagePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimeStampPanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.*;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlDatePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimestampPanelFactory;
@@ -66,14 +54,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigIn
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaDateTimePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDatePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BooleanPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BytePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.CharacterPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.DoublePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.FloatPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.IntegerPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.LongPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.ShortPanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.*;
 import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.string.StringPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.value.ValuePanelFactory;
@@ -85,6 +66,8 @@ import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoicesSelect2PanelFactory;
 
+import java.util.ServiceLoader;
+
 /**
  * Default implementation of {@link ComponentFactoryRegistrar} that registers a
  * hardcoded set of built-in {@link ComponentFactory}s, along with any
@@ -135,7 +118,6 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         addComponentFactoriesForAction(componentFactories);
         addComponentFactoriesForActionLink(componentFactories);
         addComponentFactoriesForPropertyEdit(componentFactories);
-        addComponentFactoriesForEntityCollection(componentFactories);
         addComponentFactoriesForEntityCollectionContents(componentFactories);
         addComponentFactoriesForEmptyCollection(componentFactories);
         addComponentFactoriesForScalar(componentFactories);
@@ -169,6 +151,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         componentFactories.add(new EntityIconAndTitlePanelFactory());
         componentFactories.add(new EntityIconTitleAndCopyLinkPanelFactory());
         componentFactories.add(new EntityHeaderPanelFactory());
+        componentFactories.add(new EntityCollectionPanelFactory());
     }
 
     protected void addComponentFactoriesForEntityCollectionContents(final ComponentFactoryList componentFactories) {
@@ -180,9 +163,6 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         componentFactories.add(new CollectionContentsAsSummaryFactory());
     }
 
-    protected void addComponentFactoriesForEntityCollection(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new CollectionPanelFactory());
-    }
 
     protected void addComponentFactoriesForEmptyCollection(final ComponentFactoryList componentFactories) {
         componentFactories.add(new EmptyCollectionPanelFactory());

http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
index 7040bd9..d2d1112 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
@@ -69,6 +69,18 @@ public enum ComponentType {
      */
     ENTITY_SUMMARY,
     /**
+     * A single &quot;parented&quot; collection of an entity.
+     *
+     * <p>
+     *     Note that the default implementation is actually a wrapper that provides a selector over all available
+     *     individual representations of the entity by way of {@link #COLLECTION_CONTENTS} component type.  The
+     *     framework provides a number of implementations of this lower-level component: as a table, as
+     *     collapsed/hidden, as a summary.  Any additional representations that are found that can render the
+     *     collection (eg map, calendar) are added to the selector.
+     * </p>
+     */
+    ENTITY_COLLECTION,
+    /**
      * A single standalone value, as might be returned from an action.
      */
     VALUE,
@@ -77,12 +89,6 @@ public enum ComponentType {
      */
     SCALAR_NAME_AND_VALUE,
     /**
-     * The name and contents of a single collection of an entity;
-     * {@link Component}s are expected to use {@link #COLLECTION_CONTENTS} to
-     * actually render the contents.
-     */
-    COLLECTION_NAME_AND_CONTENTS,
-    /**
      * The parameter form (dialog box) of an action.
      */
     PARAMETERS,
@@ -129,7 +135,7 @@ public enum ComponentType {
      */
     VOID_RETURN,
     /**
-     * A list of {@link IsisModel}s, rendered as a list of links.
+     * A list of models, rendered as a list of links.
      */
     BOOKMARKED_PAGES, 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanelFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanelFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanelFactory.java
deleted file mode 100644
index 9a9f6e2..0000000
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanelFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  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.collection;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
-import org.apache.isis.viewer.wicket.ui.ComponentType;
-
-/**
- * {@link ComponentFactory} for {@link CollectionPanel}.
- */
-public class CollectionPanelFactory extends ComponentFactoryAbstract {
-
-    private static final long serialVersionUID = 1L;
-
-    private static final String NAME = "labelled";
-
-    public CollectionPanelFactory() {
-        super(ComponentType.COLLECTION_NAME_AND_CONTENTS, NAME, CollectionPanel.class);
-    }
-
-    @Override
-    public ApplicationAdvice appliesTo(final IModel<?> model) {
-        if (!(model instanceof EntityCollectionModel)) {
-            return ApplicationAdvice.DOES_NOT_APPLY;
-        }
-        return ApplicationAdvice.APPLIES;
-    }
-
-    @Override
-    public Component createComponent(final String id, final IModel<?> model) {
-        final EntityCollectionModel collectionModel = (EntityCollectionModel) model;
-        return new CollectionPanel(id, collectionModel);
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
index 20eb1d9..86d295c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
@@ -19,13 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.entity.collection;
 
-import java.util.List;
-
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.model.Model;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -46,6 +39,12 @@ import org.apache.isis.viewer.wicket.ui.panels.HasDynamicallyVisibleContent;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.Model;
+
+import java.util.List;
 
 /**
  * {@link PanelAbstract Panel} representing the properties of an entity, as per
@@ -111,7 +110,7 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
                 CssClassAppender.appendCssClassTo(div, cssClass);
             }
 
-            final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityCollectionModel);
+            final CollectionPanel collectionPanel = newCollectionModel(ID_COLLECTION, entityCollectionModel);
             div.addOrReplace(collectionPanel);
 
 
@@ -157,6 +156,10 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
         return div;
     }
 
+    protected CollectionPanel newCollectionModel(String id, EntityCollectionModel entityCollectionModel) {
+        return new CollectionPanel(id, entityCollectionModel);
+    }
+
 
     private boolean visible = false;
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanelFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanelFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanelFactory.java
new file mode 100644
index 0000000..6deb49f
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanelFactory.java
@@ -0,0 +1,45 @@
+/*
+ *  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.collection;
+
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.ComponentFactory;
+import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.isis.viewer.wicket.ui.components.entity.EntityComponentFactoryAbstract;
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
+
+/**
+ * {@link ComponentFactory} for {@link EntityCollectionPanel}.
+ */
+public class EntityCollectionPanelFactory extends EntityComponentFactoryAbstract {
+
+    private static final long serialVersionUID = 1L;
+
+    public EntityCollectionPanelFactory() {
+        super(ComponentType.ENTITY_COLLECTION, EntityCollectionPanel.class);
+    }
+
+    @Override
+    public Component createComponent(final String id, final IModel<?> model) {
+        final EntityModel entityModel = (EntityModel) model;
+        return new EntityCollectionPanel(id, entityModel);
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/53626608/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
index 96b796d..282fab7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
@@ -18,19 +18,11 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.layout.bs3.col;
 
-import java.util.List;
-
-import javax.annotation.Nullable;
-
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
@@ -49,7 +41,6 @@ import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 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.entity.collection.EntityCollectionPanel;
 import org.apache.isis.viewer.wicket.ui.components.entity.fieldset.PropertyGroup;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs3.Util;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row;
@@ -58,6 +49,11 @@ import org.apache.isis.viewer.wicket.ui.panels.HasDynamicallyVisibleContent;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+import javax.annotation.Nullable;
+import java.util.List;
 
 public class Col extends PanelAbstract<EntityModel> implements HasDynamicallyVisibleContent {
 
@@ -272,7 +268,11 @@ public class Col extends PanelAbstract<EntityModel> implements HasDynamicallyVis
                 final String id = collectionRv.newChildId();
                 final EntityModel entityModelWithHints = getModel().cloneWithLayoutMetadata(collection);
 
-                final EntityCollectionPanel collectionPanel = new EntityCollectionPanel(id, entityModelWithHints);
+                // the entityModel's getLayoutData() provides the hint as to which collection of the entity to render.
+                final ComponentFactory componentFactory =
+                        getComponentFactoryRegistry().findComponentFactory(
+                                ComponentType.ENTITY_COLLECTION, entityModelWithHints);
+                final Component collectionPanel = componentFactory.createComponent(id, entityModelWithHints);
                 collectionRv.add(collectionPanel);
             }
             div.add(collectionRv);


[2/2] isis git commit: ISIS-1436: fixes showAll behaviour for non-standalone collections.

Posted by da...@apache.org.
ISIS-1436: fixes showAll behaviour for non-standalone collections.

The earlier work sorted out showAll for standalone, but unfortunately broke regular entity (parented) collections with an NPE - there is no toggled list for these.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3cb546e5
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3cb546e5
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3cb546e5

Branch: refs/heads/master
Commit: 3cb546e57e908bf0387336f774b495d8ac5b708a
Parents: 5362660
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jun 17 10:20:51 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jun 17 10:20:51 2016 +0100

----------------------------------------------------------------------
 .../model/models/EntityCollectionModel.java     | 22 ++++++++++++--------
 .../ajaxtable/IsisAjaxNavigationToolbar.java    |  7 +++++--
 2 files changed, 18 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3cb546e5/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 2342b40..5d51862 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -19,18 +19,10 @@
 
 package org.apache.isis.viewer.wicket.model.models;
 
-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.base.Predicates;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-
-import org.apache.wicket.Component;
-
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.lang.ClassUtil;
@@ -52,6 +44,12 @@ import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.LinksProvider;
 import org.apache.isis.viewer.wicket.model.mementos.CollectionMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
+import org.apache.wicket.Component;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 
 /**
  * Model representing a collection of entities, either {@link Type#STANDALONE
@@ -313,14 +311,20 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
     }
 
     private EntityCollectionModel(final EntityModel entityModel) {
+        this.type = Type.PARENTED;
         this.entityModel = entityModel;
+
         final OneToManyAssociation collection = collectionFor(entityModel.getObjectAdapterMemento(), getLayoutData());
-        this.type = Type.PARENTED;
         this.typeOf = forName(collection.getSpecification());
+
         this.collectionMemento = new CollectionMemento(collection, entityModel.getIsisSessionFactory());
+
         this.pageSize = pageSize(collection.getFacet(PagedFacet.class), PAGE_SIZE_DEFAULT_FOR_PARENTED);
+
         final SortedByFacet sortedByFacet = collection.getFacet(SortedByFacet.class);
         this.sortedBy = sortedByFacet != null ? sortedByFacet.value(): null;
+
+        this.toggledMementosList = Lists.newArrayList();
     }
     
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3cb546e5/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
index be3c96e..189b48b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
@@ -54,8 +54,11 @@ public class IsisAjaxNavigationToolbar extends AjaxNavigationToolbar {
                 final DataTable<?, ?> dataTable = getTable();
                 final CollectionContentsSortableDataProvider dataProvider = (CollectionContentsSortableDataProvider) dataTable.getDataProvider();
                 final EntityCollectionModel collectionModel = dataProvider.getEntityCollectionModel();
-                collectionModel.clearToggleMementosList();
-                toggleboxColumn.clearToggles();
+
+                if(toggleboxColumn != null) {
+                    collectionModel.clearToggleMementosList();
+                    toggleboxColumn.clearToggles();
+                }
 
                 final UiHintContainer hintContainer = getUiHintContainer();
                 if(hintContainer != null) {