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 <[email protected]> Authored: Sun Nov 9 13:39:41 2014 +0000 Committer: Dan Haywood <[email protected]> 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
