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 2012/11/16 19:01:28 UTC
svn commit: r1410514 - in
/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components:
collection/ entity/collections/
Author: danhaywood
Date: Fri Nov 16 18:01:27 2012
New Revision: 1410514
URL: http://svn.apache.org/viewvc?rev=1410514&view=rev
Log:
ISIS-232: entity collection actions (incomplete)
Modified:
isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.html
isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
Modified: isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.html
URL: http://svn.apache.org/viewvc/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.html?rev=1410514&r1=1410513&r2=1410514&view=diff
==============================================================================
--- isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.html (original)
+++ isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.html Fri Nov 16 18:01:27 2012
@@ -26,6 +26,17 @@
<body>
<wicket:panel>
<div class="collectionPanel collectionNameAndContentsComponentType">
+ <div class="actions panel">
+ <table>
+ <tbody>
+ <tr>
+ <td>
+ <span class="groupedActions" wicket:id="groupedActions"/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
<div wicket:id="collection">
<span class="collectionContents" wicket:id="collectionContents"/>
</div>
Modified: isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java?rev=1410514&r1=1410513&r2=1410514&view=diff
==============================================================================
--- isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java (original)
+++ isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java Fri Nov 16 18:01:27 2012
@@ -19,14 +19,37 @@
package org.apache.isis.viewer.wicket.ui.components.collection;
+import java.util.List;
+
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.applib.filter.Filters;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
+import org.apache.isis.core.metamodel.spec.ActionType;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
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.ComponentType;
+import org.apache.isis.viewer.wicket.ui.components.entity.EntityActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuBuilder;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuLinkFactory;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuPanel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.util.Components;
+
+import com.google.common.base.Strings;
/**
* Panel for rendering entity collection; analogous to (any concrete subclass
@@ -37,10 +60,28 @@ public class CollectionPanel extends Pan
private static final long serialVersionUID = 1L;
private static final String ID_COLLECTION = "collection";
+ private static final String ID_GROUPED_ACTIONS = "groupedActions";
private static final String ID_FEEDBACK = "feedback";
- public CollectionPanel(final String id, final EntityCollectionModel entityCollectionModel) {
- super(id, entityCollectionModel);
+ private final EntityModel entityModel;
+ private final OneToManyAssociation otma;
+
+ private static EntityCollectionModel createEntityCollectionModel(EntityModel entityModel, OneToManyAssociation otma) {
+ return EntityCollectionModel.createParented(entityModel, otma);
+ }
+
+ public CollectionPanel(final String id, final EntityModel entityModel, OneToManyAssociation otma) {
+ this(id, entityModel, otma, createEntityCollectionModel(entityModel, otma));
+ }
+
+ public CollectionPanel(String id, EntityCollectionModel collectionModel) {
+ this(id, null, null, collectionModel);
+ }
+
+ private CollectionPanel(String id, EntityModel entityModel, OneToManyAssociation otma, EntityCollectionModel collectionModel) {
+ super(id, collectionModel);
+ this.entityModel = entityModel;
+ this.otma = otma;
buildGui();
}
@@ -50,8 +91,65 @@ public class CollectionPanel extends Pan
final WebMarkupContainer markupContainer = new WebMarkupContainer(ID_COLLECTION);
final Component collectionContents = getComponentFactoryRegistry().addOrReplaceComponent(markupContainer, ComponentType.COLLECTION_CONTENTS, getModel());
+ buildEntityActionsGui();
+
addOrReplace(new ComponentFeedbackPanel(ID_FEEDBACK, collectionContents));
addOrReplace(markupContainer);
+
}
+ private void buildEntityActionsGui() {
+
+ if (entityModel == null || otma == null) {
+ Components.permanentlyHide(this, ID_GROUPED_ACTIONS);
+ return;
+ }
+
+ final ObjectSpecification adapterSpec = entityModel.getTypeOfSpecification();
+ final ObjectAdapter adapter = entityModel.getObject();
+ final ObjectAdapterMemento adapterMemento = entityModel.getObjectAdapterMemento();
+
+ @SuppressWarnings("unchecked")
+ final List<ObjectAction> userActions = adapterSpec.getObjectActions(ActionType.USER, Contributed.INCLUDED,
+ Filters.and(memberOrderOf(otma), dynamicallyVisibleFor(adapter)));
+
+ if(!userActions.isEmpty()) {
+ final CssMenuLinkFactory linkFactory = new EntityActionLinkFactory(entityModel);
+ final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(adapterMemento, getServiceAdapters(), userActions, linkFactory);
+ // TODO: i18n
+ final CssMenuPanel groupedActions = cssMenuBuilder.buildPanel(ID_GROUPED_ACTIONS, "Actions");
+
+ addOrReplace(groupedActions);
+ } else {
+ Components.permanentlyHide(this, ID_GROUPED_ACTIONS);
+ }
+ }
+
+ private Filter<ObjectAction> dynamicallyVisibleFor(final ObjectAdapter adapter) {
+ return ObjectActionFilters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.ANYWHERE);
+ }
+
+ private Filter<ObjectAction> memberOrderOf(ObjectAssociation association) {
+ final String collectionName = association.getName();
+ final String collectionId = association.getId();
+ return new Filter<ObjectAction>() {
+
+ @Override
+ public boolean accept(ObjectAction t) {
+ final MemberOrderFacet memberOrderFacet = t.getFacet(MemberOrderFacet.class);
+ if(memberOrderFacet == null) {
+ return false;
+ }
+ final String memberOrderName = memberOrderFacet.name();
+ if(Strings.isNullOrEmpty(memberOrderName)) {
+ return false;
+ }
+ return memberOrderName.equalsIgnoreCase(collectionName) || memberOrderName.equalsIgnoreCase(collectionId);
+ }
+ };
+ }
+
+
+
+
}
Modified: isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
URL: http://svn.apache.org/viewvc/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html?rev=1410514&r1=1410513&r2=1410514&view=diff
==============================================================================
--- isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html (original)
+++ isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html Fri Nov 16 18:01:27 2012
@@ -24,18 +24,9 @@
<div wicket:id="collections">
<fieldset wicket:id="collectionGroup" class="memberGroup">
<legend wicket:id="collectionName">[collection name]</legend>
- <div class="actions panel">
- <table>
- <tbody>
- <tr>
- <td>
- <span class="groupedActions" wicket:id="groupedActions"/>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div wicket:id="collection" class="collection">[collection]</div>
+ <div wicket:id="collection" class="collection">
+ [collection]
+ </div>
</fieldset>
</div>
</div>
Modified: isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
URL: http://svn.apache.org/viewvc/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java?rev=1410514&r1=1410513&r2=1410514&view=diff
==============================================================================
--- isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java (original)
+++ isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java Fri Nov 16 18:01:27 2012
@@ -75,7 +75,6 @@ public class EntityCollectionsPanel exte
private static final String ID_COLLECTIONS = "collections";
private static final String ID_COLLECTION = "collection";
- private static final String ID_GROUPED_ACTIONS = "groupedActions";
public EntityCollectionsPanel(final String id, final EntityModel entityModel) {
super(id, entityModel);
@@ -128,66 +127,15 @@ public class EntityCollectionsPanel exte
final String name = association.getName();
fieldset.add(new Label(ID_COLLECTION_NAME, name));
- buildEntityActionsGui(fieldset, association);
-
final OneToManyAssociation otma = (OneToManyAssociation) association;
- final EntityCollectionModel entityCollectionModel = EntityCollectionModel.createParented(entityModel, otma);
- final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityCollectionModel);
+ final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityModel, otma);
+
fieldset.addOrReplace(collectionPanel);
- getComponentFactoryRegistry().addOrReplaceComponent(fieldset, ID_COLLECTION, ComponentType.COLLECTION_NAME_AND_CONTENTS, entityCollectionModel);
+ getComponentFactoryRegistry().addOrReplaceComponent(fieldset, ID_COLLECTION, ComponentType.COLLECTION_NAME_AND_CONTENTS, collectionPanel.getModel());
}
- private void buildEntityActionsGui(WebMarkupContainer collectionRvContainer, ObjectAssociation association) {
-
- final EntityModel model = getModel();
- final ObjectSpecification adapterSpec = model.getTypeOfSpecification();
- final ObjectAdapter adapter = model.getObject();
- final ObjectAdapterMemento adapterMemento = model.getObjectAdapterMemento();
-
- @SuppressWarnings("unchecked")
- final List<ObjectAction> userActions = adapterSpec.getObjectActions(ActionType.USER, Contributed.INCLUDED,
- Filters.and(memberOrderOf(association), dynamicallyVisibleFor(adapter)));
-
- final CssMenuLinkFactory linkFactory = new EntityActionLinkFactory(getEntityModel());
-
- if(!userActions.isEmpty()) {
- final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(adapterMemento, getServiceAdapters(), userActions, linkFactory);
- // TODO: i18n
- final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_GROUPED_ACTIONS, "Actions");
-
- collectionRvContainer.addOrReplace(cssMenuPanel);
- } else {
- Components.permanentlyHide(collectionRvContainer, ID_GROUPED_ACTIONS);
- }
- }
-
- private Filter<ObjectAction> dynamicallyVisibleFor(final ObjectAdapter adapter) {
- return ObjectActionFilters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.ANYWHERE);
- }
-
- private Filter<ObjectAction> memberOrderOf(ObjectAssociation association) {
- final String collectionName = association.getName();
- final String collectionId = association.getId();
- return new Filter<ObjectAction>() {
-
- @Override
- public boolean accept(ObjectAction t) {
- final MemberOrderFacet memberOrderFacet = t.getFacet(MemberOrderFacet.class);
- if(memberOrderFacet == null) {
- return false;
- }
- final String memberOrderName = memberOrderFacet.name();
- if(Strings.isNullOrEmpty(memberOrderName)) {
- return false;
- }
- return memberOrderName.equals(collectionName) || memberOrderName.equals(collectionId);
- }
- };
- }
-
-
private List<ObjectAssociation> visibleAssociations(final ObjectAdapter adapter, final ObjectSpecification noSpec) {
return noSpec.getAssociations(visibleAssociationFilter(adapter));
}