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 2014/11/11 09:24:47 UTC

[24/44] isis git commit: ISIS-537: collection actions now rendered in the panel header.

ISIS-537: collection actions now rendered in the panel header.


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

Branch: refs/heads/master
Commit: 5918dd61c41c4a80aea25746d68206108c2e8e0f
Parents: bb08787
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Nov 9 13:39:41 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 10 10:21:40 2014 +0000

----------------------------------------------------------------------
 .../additionallinks/EntityActionUtil.java       | 25 +++++++---
 .../components/collection/CollectionPanel.java  |  3 +-
 .../CollectionContentsLinksSelectorPanel.html   |  2 -
 .../CollectionContentsLinksSelectorPanel.java   | 50 +-------------------
 .../collections/EntityCollectionsPanel.html     | 31 ++++++++++++
 .../collections/EntityCollectionsPanel.java     | 14 ++++--
 .../wicket/ui/pages/bootstrap-overrides.css     |  4 ++
 7 files changed, 66 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
index e6d86cb..5382a4f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
@@ -59,7 +59,17 @@ public final class EntityActionUtil {
             final ObjectAssociation association,
             final ActionPromptProvider actionPromptProvider,
             final DeploymentType deploymentType) {
-        
+
+        return entityActionsForAssociation(
+                entityModel, association, actionPromptProvider, deploymentType, ID_ADDITIONAL_LINK);
+    }
+
+    public static List<LinkAndLabel> entityActionsForAssociation(
+            final EntityModel entityModel,
+            final ObjectAssociation association,
+            final ActionPromptProvider actionPromptProvider,
+            final DeploymentType deploymentType,
+            final String linkId) {
         final List<ObjectAction> associatedActions = Lists.newArrayList();
 
         addActions(ActionType.USER, entityModel, association, associatedActions);
@@ -67,7 +77,7 @@ public final class EntityActionUtil {
             addActions(ActionType.EXPLORATION, entityModel, association, associatedActions);
             addActions(ActionType.PROTOTYPE, entityModel, association, associatedActions);
         }
-        
+
         Collections.sort(associatedActions, new Comparator<ObjectAction>() {
 
             @Override
@@ -75,16 +85,17 @@ public final class EntityActionUtil {
                 final MemberOrderFacet m1 = o1.getFacet(MemberOrderFacet.class);
                 final MemberOrderFacet m2 = o2.getFacet(MemberOrderFacet.class);
                 return memberOrderFacetComparator.compare(m1, m2);
-            }});
-        
+            }
+        });
+
         final ActionLinkFactory linkFactory = new EntityActionLinkFactory(entityModel);
-    
+
         final ObjectAdapterMemento adapterMemento = entityModel.getObjectAdapterMemento();
         return Lists.transform(associatedActions, new Function<ObjectAction, LinkAndLabel>(){
-    
+
             @Override
             public LinkAndLabel apply(ObjectAction objectAction) {
-                return linkFactory.newLink(adapterMemento, objectAction, ID_ADDITIONAL_LINK, actionPromptProvider);
+                return linkFactory.newLink(adapterMemento, objectAction, linkId, actionPromptProvider);
             }});
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
index 0f26d28..ec68145 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
@@ -50,7 +50,6 @@ public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implem
 
     private static final long serialVersionUID = 1L;
 
-    private static final String ID_COLLECTION = "collection";
     private static final String ID_FEEDBACK = "feedback";
     private static final String ID_ACTION_PROMPT_MODAL_WINDOW = "actionPromptModalWindow";
 
@@ -77,7 +76,7 @@ public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implem
 
         addActionPromptModalWindow();
         
-        List<LinkAndLabel> entityActions = EntityActionUtil.entityActionsForAssociation(entityModel, otma, this, getDeploymentType());
+        List<LinkAndLabel> entityActions = EntityActionUtil.entityActionsForAssociation(entityModel, otma, this, getDeploymentType(), "additionalLink");
         collectionModel.addEntityActions(entityActions);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
index d35d523..1fbf7df 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
@@ -39,8 +39,6 @@
             </ul>
         </div>
 
-        <span wicket:id="additionalLinks"></span>
-
         <div class="views">
             <div wicket:id="collectionContents-0" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
             <div wicket:id="collectionContents-1" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
index c68bf71..d0d987b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
@@ -28,7 +28,6 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.event.Broadcast;
@@ -48,20 +47,16 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.viewer.wicket.model.hints.IsisUiHintEvent;
 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.links.LinkAndLabel;
-import org.apache.isis.viewer.wicket.model.links.LinksProvider;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.ui.CollectionContentsAsFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.components.additionallinks.AdditionalLinksPanel;
 import org.apache.isis.viewer.wicket.ui.components.collection.CollectionCountProvider;
 import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanel;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
-import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.isis.viewer.wicket.ui.util.CssClassRemover;
 
@@ -78,8 +73,6 @@ public class CollectionContentsLinksSelectorPanel
     private static final String INVISIBLE_CLASS = "link-selector-panel-invisible";
     private static final int MAX_NUM_UNDERLYING_VIEWS = 10;
 
-    private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
-
     private static final String ID_VIEWS = "views";
     private static final String ID_VIEW_LIST = "viewList";
     private static final String ID_VIEW_LINK = "viewLink";
@@ -114,34 +107,10 @@ public class CollectionContentsLinksSelectorPanel
     public void onInitialize() {
         super.onInitialize();
         ComponentFactory componentFactory = getComponentFactoryRegistry().findComponentFactoryElseFailFast(getComponentType(), getModel());
-        addAdditionalLinks(getModel());
         addUnderlyingViews(underlyingIdPrefix, getModel(), componentFactory);
-        applyCssVisibility(additionalLinks, selectedComponent instanceof CollectionCountProvider);
     }
 
 
-    protected void addAdditionalLinks(final EntityCollectionModel model) {
-        if(!(model instanceof LinksProvider)) {
-            permanentlyHide(ID_ADDITIONAL_LINKS);
-            return;
-        }
-        LinksProvider linksProvider = (LinksProvider) model;
-        List<LinkAndLabel> links = linksProvider.getLinks();
-
-        addAdditionalLinks(this, links);
-    }
-
-    protected void addAdditionalLinks(MarkupContainer markupContainer, List<LinkAndLabel> links) {
-        if(links == null || links.isEmpty()) {
-            Components.permanentlyHide(markupContainer, ID_ADDITIONAL_LINKS);
-            return;
-        }
-        links = Lists.newArrayList(links); // copy, to serialize any lazy evaluation
-
-        additionalLinks = new AdditionalLinksPanel(ID_ADDITIONAL_LINKS, links);
-        markupContainer.addOrReplace(additionalLinks);
-    }
-
     private void addUnderlyingViews(final String underlyingIdPrefix, final EntityCollectionModel model, final ComponentFactory factory) {
         final List<ComponentFactory> componentFactories = findOtherComponentFactories(model, factory);
 
@@ -152,7 +121,7 @@ public class CollectionContentsLinksSelectorPanel
         // create all, hide the one not selected
         final Component[] underlyingViews = new Component[MAX_NUM_UNDERLYING_VIEWS];
         int i = 0;
-        final EntityCollectionModel emptyModel = dummyOf(model);
+        final EntityCollectionModel emptyModel = model.asDummy();
         for (ComponentFactory componentFactory : componentFactories) {
             final String underlyingId = underlyingIdPrefix + "-" + i;
 
@@ -209,7 +178,7 @@ public class CollectionContentsLinksSelectorPanel
                             CollectionContentsLinksSelectorPanel linksSelectorPanel = CollectionContentsLinksSelectorPanel.this;
                             linksSelectorPanel.setViewHintAndBroadcast(underlyingViewNum, target);
 
-                            final EntityCollectionModel dummyModel = dummyOf(model);
+                            final EntityCollectionModel dummyModel = model.asDummy();
                             for(int i=0; i<MAX_NUM_UNDERLYING_VIEWS; i++) {
                                 final Component component = underlyingViews[i];
                                 if(component == null) {
@@ -424,21 +393,6 @@ public class CollectionContentsLinksSelectorPanel
     }
 
 
-
-
-
-
-
-    /**
-     * Ask for a dummy (empty) {@link Model} to pass into those components that are rendered but will be
-     * made invisible using CSS styling.
-     */
-    protected EntityCollectionModel dummyOf(EntityCollectionModel model) {
-        return model.asDummy();
-    }
-
-    
-
     static List<ComponentFactory> orderAjaxTableToEnd(List<ComponentFactory> componentFactories) {
         int ajaxTableIdx = findAjaxTable(componentFactories);
         if(ajaxTableIdx>=0) {

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
index 90fdc22..216d9c9 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
@@ -23,9 +23,40 @@
             <div class="entityCollectionsPanel entityCollectionsComponentType">
                 <div wicket:id="collections" class="myBlockContainer">
                     <div wicket:id="collectionGroup" class="panel panel-default">
+
                         <div class="panel-heading">
                             <span wicket:id="collectionName" class="panel-title">[collection name]</span>
+                            <div class="pull-right">
+
+                                <!--
+                                <div class="btn-group">
+                                    <a href="#" class="btn btn-default btn-sm">## Lock</a>
+                                    <a href="#" class="btn btn-default btn-sm">## Delete</a>
+                                    <a href="#" class="btn btn-default btn-sm">## Move</a>
+                                </div>
+                                -->
+
+                                <div class="btn-group">
+                                    <div wicket:id="additionalLinks"></div>
+                                </div>
+
+                                <!--
+                                <div class="btn-group">
+                                    <ul xxwicket:id="viewList" class="dropdown-menu dropdown-menu-right" role="menu">
+                                        <li xxwicket:id="viewItem" class="viewItem">
+                                            <a href="#" xxwicket:id="viewLink">
+                                                <span xxwicket:id="viewItemIcon" class="ViewLinkItem"></span> <span xxwicket:id="viewItemTitle" class="ViewLinkItemTitle">[link title]</span>
+                                            </a>
+                                        </li>
+                                    </ul>
+                                </div>
+                                -->
+
+                            </div>
                         </div>
+
+
+
                         <div wicket:id="collection" class="collection panel-body">
                             [collection]
                         </div>

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index f18ba4a..55ad54b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -20,11 +20,9 @@
 package org.apache.isis.viewer.wicket.ui.components.entity.collections;
 
 import java.util.List;
-
 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.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
@@ -34,7 +32,10 @@ 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;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
+import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.components.additionallinks.AdditionalLinksPanel;
 import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.containers.UiHintPathSignificantWebMarkupContainer;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -54,6 +55,8 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
     private static final String ID_COLLECTIONS = "collections";
     private static final String ID_COLLECTION = "collection";
 
+    private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
+
     private Label labelComponent;
 
 
@@ -109,12 +112,15 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
         final OneToManyAssociation otma = (OneToManyAssociation) association;
 
         final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityModel, otma);
+        fieldset.addOrReplace(collectionPanel);
 
         labelComponent = collectionPanel.createLabel(ID_COLLECTION_NAME, association.getName());
-
         fieldset.add(labelComponent);
 
-        fieldset.addOrReplace(collectionPanel);
+        final EntityCollectionModel entityCollectionModel = collectionPanel.getModel();
+        List<LinkAndLabel> links = entityCollectionModel.getLinks();
+        AdditionalLinksPanel additionalLinks = new AdditionalLinksPanel(ID_ADDITIONAL_LINKS, links);
+        fieldset.addOrReplace(additionalLinks);
     }
 
     private List<ObjectAssociation> visibleCollections(final ObjectAdapter adapter, final ObjectSpecification noSpec) {

http://git-wip-us.apache.org/repos/asf/isis/blob/5918dd61/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 9c287ff..cb7ed79 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -158,3 +158,7 @@ div.label-left .choicesPlaceholder {
 .modal-body textarea {
     resize: none;
 }
+
+.entityCollectionsPanel .panel-heading {
+    padding-bottom: 15px;
+}
\ No newline at end of file