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