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:59 UTC
[36/44] isis git commit: ISIS-537: continuing to pull out
BulkActionsHelper (move bulk actions to panel header for standalone
collection panel)
ISIS-537: continuing to pull out BulkActionsHelper (move bulk actions to panel header for standalone collection panel)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9bad9179
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9bad9179
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9bad9179
Branch: refs/heads/master
Commit: 9bad91796ccba1ebca747a387b48fee8213c78a1
Parents: 276472f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 10 19:56:22 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 10 19:56:22 2014 +0000
----------------------------------------------------------------------
.../selector/CollectionSelectorHelper.java | 26 +--
.../selector/CollectionSelectorPanel.java | 4 +-
.../ajaxtable/BulkActionsHelper.java | 5 +-
.../ajaxtable/BulkActionsLinkFactory.java | 18 +-
.../ajaxtable/BulkActionsProvider.java | 6 +-
.../CollectionContentsAsAjaxTablePanel.html | 8 +-
.../CollectionContentsAsAjaxTablePanel.java | 223 ++++++++-----------
.../columns/ObjectAdapterToggleboxColumn.java | 20 +-
.../CollectionContentsMultipleViewsPanel.java | 6 +-
.../collections/EntityCollectionsPanel.java | 4 +-
.../StandaloneCollectionPanel.html | 5 +-
.../StandaloneCollectionPanel.java | 143 +++++++++++-
12 files changed, 286 insertions(+), 182 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
index dfcdbf5..eed5607 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
@@ -19,6 +19,7 @@
package org.apache.isis.viewer.wicket.ui.components.collection.selector;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Predicate;
@@ -38,30 +39,29 @@ import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple.CollectionContentsMultipleViewsPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
-public class CollectionSelectorHelper {
+public class CollectionSelectorHelper implements Serializable {
+
+ private static final long serialVersionUID = 1L;
static final String UIHINT_EVENT_VIEW_KEY = "view";
- private final ComponentType componentType;
- private final ComponentFactoryRegistry componentFactoryRegistry;
+ private static final ComponentFactory ignoreFactory = new CollectionContentsMultipleViewsPanelFactory();
+ private static final ComponentType componentType = ComponentType.COLLECTION_CONTENTS; // this.ignoreFactory.getComponentType();;
+
private final EntityCollectionModel model;
- private final ComponentFactory ignoreFactory;
private final List<ComponentFactory> componentFactories;
-
public CollectionSelectorHelper(
final EntityCollectionModel model,
- final ComponentFactoryRegistry componentFactoryRegistry,
- final ComponentFactory ignoreFactory) {
- this.componentFactoryRegistry = componentFactoryRegistry;
+ final ComponentFactoryRegistry componentFactoryRegistry) {
this.model = model;
- this.ignoreFactory = ignoreFactory;
- this.componentType = ignoreFactory.getComponentType();
-
- componentFactories = findOtherComponentFactories();
+ this.componentFactories = findOtherComponentFactories(componentFactoryRegistry);
}
- public List<ComponentFactory> findOtherComponentFactories() {
+ public List<ComponentFactory> findOtherComponentFactories(ComponentFactoryRegistry componentFactoryRegistry) {
+ if(componentFactories != null) {
+ return componentFactories;
+ }
final List<ComponentFactory> componentFactories = componentFactoryRegistry.findComponentFactories(componentType, model);
ArrayList<ComponentFactory> otherFactories = Lists.newArrayList(Collections2.filter(componentFactories, new Predicate<ComponentFactory>() {
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
index cb8d0f2..8cdc710 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
@@ -74,7 +74,7 @@ public class CollectionSelectorPanel
public CollectionSelectorPanel(final String id, final EntityCollectionModel model, final ComponentFactory ignoreFactory) {
super(id, model);
this.componentType = ignoreFactory.getComponentType();
- selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry(), ignoreFactory);
+ selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry());
}
/**
@@ -88,7 +88,7 @@ public class CollectionSelectorPanel
private void addDropdown() {
- final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories(getComponentFactoryRegistry());
final int selected = selectorHelper.honourViewHintElseDefault(this);
// selector
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsHelper.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsHelper.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsHelper.java
index e7b1b66..0c2822f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsHelper.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsHelper.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable;
+import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import com.google.common.base.Predicate;
@@ -31,10 +32,12 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
-public class BulkActionsHelper {
+public class BulkActionsHelper implements Serializable {
private final EntityCollectionModel model;
+ private static final long serialVersionUID = 1L;
+
public BulkActionsHelper(final EntityCollectionModel model) {
this.model = model;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
index 826aebf..efc68c1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
@@ -23,7 +23,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.wicket.Session;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.isis.applib.RecoverableException;
@@ -54,26 +53,21 @@ import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFac
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuItem;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
-final class BulkActionsLinkFactory implements ActionLinkFactory {
+public final class BulkActionsLinkFactory implements ActionLinkFactory {
private static final long serialVersionUID = 1L;
private final EntityCollectionModel model;
- @SuppressWarnings("unused")
- private final DataTable<ObjectAdapter,String> dataTable;
- private ObjectAdapterToggleboxColumn toggleboxColumn;
+ private final ObjectAdapterToggleboxColumn toggleboxColumn;
- BulkActionsLinkFactory(
- final EntityCollectionModel model,
- final DataTable<ObjectAdapter,String> dataTable) {
+ public BulkActionsLinkFactory(
+ final EntityCollectionModel model,
+ final ObjectAdapterToggleboxColumn toggleboxColumn) {
this.model = model;
- this.dataTable = dataTable;
- }
-
- public void setToggleboxColumn(ObjectAdapterToggleboxColumn toggleboxColumn) {
this.toggleboxColumn = toggleboxColumn;
}
+
@Override
public LinkAndLabel newLink(
final ObjectAdapterMemento serviceAdapterMemento,
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsProvider.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsProvider.java
index 697f556..2ab87a3 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsProvider.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsProvider.java
@@ -18,11 +18,11 @@
*/
package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactory;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterToggleboxColumn;
public interface BulkActionsProvider {
- public void configureBulkActionsProvider(ActionLinkFactory linkFactory, ActionPromptProvider actionPromptProvider);
+ void configureBulkActionsProvider(ObjectAdapterToggleboxColumn toggleboxColumn);
+ ObjectAdapterToggleboxColumn createToggleboxColumn();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.html
index 31c0121..694f262 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.html
@@ -21,12 +21,16 @@
<body>
<wicket:panel>
<div class="collectionContentsAsAjaxTablePanel collectionContentsComponentType">
- <div class="entityActions" wicket:id="entityActions"></div>
+ <!--
+ <div class="entityActions" xxxwicket:id="entityActions"></div>
+ -->
<div class="clearfix"></div>
<div class="table-responsive">
<table class="contents table table-striped table-condensed table-hover table-bordered" cellspacing="0" wicket:id="table">[table]</table>
</div>
- <div wicket:id="actionPromptModalWindow"></div>
+ <!--
+ <div xxxwicket:id="actionPromptModalWindow"></div>
+ -->
</div>
</wicket:panel>
</body>
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 74ec5d9..b53427b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -20,7 +20,6 @@
package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable;
import java.util.List;
-import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
import org.apache.wicket.Component;
@@ -40,25 +39,17 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
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.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.viewer.wicket.model.common.SelectionHandler;
import org.apache.isis.viewer.wicket.model.hints.UiHintPathSignificant;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
-import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.collection.count.CollectionCountProvider;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ColumnAbstract;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterPropertyColumn;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterTitleColumn;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterToggleboxColumn;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactory;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuBuilder;
-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.panels.PanelUtil;
@@ -66,19 +57,16 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
* {@link PanelAbstract Panel} that represents a {@link EntityCollectionModel
* collection of entity}s rendered using {@link AjaxFallbackDefaultDataTable}.
*/
-public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider, ActionPromptProvider, BulkActionsProvider, UiHintPathSignificant {
+public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider /*, ActionPromptProvider, BulkActionsProvider */, UiHintPathSignificant {
private static final long serialVersionUID = 1L;
private static final String ID_TABLE = "table";
private static final String ID_ACTION_PROMPT_MODAL_WINDOW = "actionPromptModalWindow";
-
private static final String ID_ENTITY_ACTIONS = "entityActions";
- @SuppressWarnings("deprecation")
- private static final Predicate<ObjectAction> BULK = Filters.asPredicate(ObjectAction.Filters.bulk());
-
private IsisAjaxFallbackDataTable<ObjectAdapter,String> dataTable;
+
private final BulkActionsHelper bulkActionsHelper;
@@ -94,14 +82,51 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
}
private void buildGui() {
- final EntityCollectionModel model = getModel();
final List<IColumn<ObjectAdapter,String>> columns = Lists.newArrayList();
- List<ObjectAction> bulkActions = bulkActionsHelper.getBulkActions();
+ // bulkactions
+ final BulkActionsProvider bulkActionsProvider = getBulkActionsProvider();
+
+ ObjectAdapterToggleboxColumn toggleboxColumn = null;
+ if(bulkActionsProvider != null) {
+
+// List<ObjectAction> bulkActions = bulkActionsProvider.getBulkActions();
+// if(!bulkActions.isEmpty()) {
+
+ toggleboxColumn = bulkActionsProvider.createToggleboxColumn();
+ if(toggleboxColumn != null) {
+ columns.add(toggleboxColumn);
+ }
+ bulkActionsProvider.configureBulkActionsProvider(toggleboxColumn);
+
+// }
+
+ }
+
+// } else {
+// if(bulkActions.isEmpty() || getModel().isParented()) {
+// //permanentlyHide(ID_ENTITY_ACTIONS);
+// getBulkActionsProvider().configureBulkActionsProvider(null, null);
+// } else {
+
+// actionLinkFactoryDelegating = new ActionLinkFactoryDelegating();
+// actionPromptProviderDelegating = new ActionPromptProviderDelegating();
+
+ //getBulkActionsProvider().configureBulkActionsProvider(linkFactory, this);
+// getBulkActionsProvider().configureBulkActionsProvider(linkFactory, null);
+
+// final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(null, bulkActions, actionLinkFactoryDelegating, actionPromptProviderDelegating, null);
+// final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_ENTITY_ACTIONS, "Actions");
+//
+// this.addOrReplace(cssMenuPanel);
- final ObjectAdapterToggleboxColumn toggleboxColumn = addToggleboxColumnIfRequired(columns, bulkActions);
+ // }
+ //List<ObjectAction> bulkActions = bulkActionsHelper.getBulkActions();
+
+
+ final EntityCollectionModel model = getModel();
addTitleColumn(columns, model.getParentObjectAdapterMemento(), getSettings().getMaxTitleLengthInStandaloneTables(), getSettings().getMaxTitleLengthInStandaloneTables());
addPropertyColumnsIfRequired(columns);
@@ -110,71 +135,55 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
addOrReplace(dataTable);
dataTable.honourHints();
- addActionPromptModalWindow();
-
- // bulkactions
- if(bulkActions.isEmpty() || getModel().isParented()) {
- permanentlyHide(ID_ENTITY_ACTIONS);
- } else {
- BulkActionsLinkFactory linkFactory = new BulkActionsLinkFactory(getModel(), dataTable);
- linkFactory.setToggleboxColumn(toggleboxColumn);
+ if(toggleboxColumn != null) {
+ final SelectionHandler handler = new SelectionHandler() {
- actionLinkFactoryDelegating = new ActionLinkFactoryDelegating();
- actionPromptProviderDelegating = new ActionPromptProviderDelegating();
+ private static final long serialVersionUID = 1L;
- getBulkActionsProvider().configureBulkActionsProvider(linkFactory, this);
+ @Override
+ public void onSelected(
+ final Component context,
+ final ObjectAdapter selectedAdapter,
+ final AjaxRequestTarget ajaxRequestTarget) {
+ model.toggleSelectionOn(selectedAdapter);
+ }
- final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(null, bulkActions, actionLinkFactoryDelegating, actionPromptProviderDelegating, null);
- final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_ENTITY_ACTIONS, "Actions");
+ @Override
+ public void onConcurrencyException(
+ final Component context,
+ final ObjectAdapter selectedAdapter,
+ final ConcurrencyException ex,
+ final AjaxRequestTarget ajaxRequestTarget) {
- this.addOrReplace(cssMenuPanel);
+ // this causes the row to be repainted
+ // but it isn't possible (yet) to raise any warning
+ // because that only gets flushed on page refresh.
+ //
+ // perhaps something to tackle in a separate ticket....
+ ajaxRequestTarget.add(dataTable);
+ }
+ };
+ toggleboxColumn.setHandler(handler);
}
- }
- private BulkActionsProvider getBulkActionsProvider() {
- return this;
- }
-
- private ObjectAdapterToggleboxColumn addToggleboxColumnIfRequired(
- final List<IColumn<ObjectAdapter,String>> columns,
- final List<ObjectAction> bulkActions) {
- final EntityCollectionModel entityCollectionModel = getModel();
- if(bulkActions.isEmpty() || entityCollectionModel.isParented()) {
- return null;
- }
-
- ObjectAdapterToggleboxColumn toggleboxColumn = new ObjectAdapterToggleboxColumn(new SelectionHandler() {
-
- private static final long serialVersionUID = 1L;
+ //addActionPromptModalWindow();
- @Override
- public void onSelected(
- final Component context, final ObjectAdapter selectedAdapter,
- AjaxRequestTarget ajaxRequestTarget) {
- entityCollectionModel.toggleSelectionOn(selectedAdapter);
- }
+ }
- @Override
- public void onConcurrencyException(
- final Component context, ObjectAdapter selectedAdapter,
- ConcurrencyException ex,
- AjaxRequestTarget ajaxRequestTarget) {
-
- // this causes the row to be repainted
- // but it isn't possible (yet) to raise any warning
- // because that only gets flushed on page refresh.
- //
-
- // perhaps something to tackle in a separate ticket....
- ajaxRequestTarget.add(dataTable);
+ private BulkActionsProvider getBulkActionsProvider() {
+ Component component = this;
+ while(component != null) {
+ if(component instanceof BulkActionsProvider) {
+ return (BulkActionsProvider) component;
}
- });
- columns.add(toggleboxColumn);
- return toggleboxColumn;
+ component = component.getParent();
+ }
+ return null;
}
+
private void addTitleColumn(final List<IColumn<ObjectAdapter,String>> columns, ObjectAdapterMemento parentAdapterMementoIfAny, int maxTitleParented, int maxTitleStandalone) {
int maxTitleLength = getModel().isParented()? maxTitleParented: maxTitleStandalone;
columns.add(new ObjectAdapterTitleColumn(parentAdapterMementoIfAny, maxTitleLength));
@@ -249,19 +258,19 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
//endregion
- //region > ActionPromptModalWindowProvider
-
- private ActionPromptModalWindow actionPromptModalWindow;
- public ActionPromptModalWindow getActionPrompt() {
- return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
- }
-
- private void addActionPromptModalWindow() {
- this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
- addOrReplace(actionPromptModalWindow);
- }
-
- //endregion
+// //region > ActionPromptModalWindowProvider
+//
+// private ActionPromptModalWindow actionPromptModalWindow;
+// public ActionPromptModalWindow getActionPrompt() {
+// return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
+// }
+//
+// private void addActionPromptModalWindow() {
+// this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
+// addOrReplace(actionPromptModalWindow);
+// }
+//
+// //endregion
// //////////////////////////////////////
@@ -287,56 +296,6 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
// //////////////////////////////////////
- private ActionPromptProviderDelegating actionPromptProviderDelegating;
- private ActionLinkFactoryDelegating actionLinkFactoryDelegating;
-
- @Override
- public void configureBulkActionsProvider(
- final ActionLinkFactory linkFactory,
- final ActionPromptProvider actionPromptProvider) {
- actionLinkFactoryDelegating.setDelegate(linkFactory);
- actionPromptProviderDelegating.setDelegate(actionPromptProvider);
- }
-
- public static class ActionLinkFactoryDelegating implements ActionLinkFactory {
-
- private ActionLinkFactory delegate;
-
- public ActionLinkFactory getDelegate() {
- return delegate;
- }
-
- public void setDelegate(ActionLinkFactory delegate) {
- this.delegate = delegate;
- }
-
- @Override
- public LinkAndLabel newLink(
- final ObjectAdapterMemento adapter,
- final ObjectAction noAction,
- final String linkId,
- final ActionPromptProvider actionPromptProvider) {
- return delegate.newLink(adapter, noAction, linkId, actionPromptProvider);
- }
- }
-
- public static class ActionPromptProviderDelegating implements ActionPromptProvider {
-
- private ActionPromptProvider delegate;
-
- public ActionPromptProvider getDelegate() {
- return delegate;
- }
-
- public void setDelegate(ActionPromptProvider delegate) {
- this.delegate = delegate;
- }
-
- @Override
- public ActionPrompt getActionPrompt() {
- return delegate.getActionPrompt();
- }
- }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
index 954a25a..31bb8ce 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
@@ -39,13 +39,21 @@ public final class ObjectAdapterToggleboxColumn extends ColumnAbstract<ObjectAda
private static final long serialVersionUID = 1L;
- private final SelectionHandler handler;
+ private SelectionHandler handler;
+ public ObjectAdapterToggleboxColumn() {
+ this(null);
+ }
+
public ObjectAdapterToggleboxColumn(final SelectionHandler handler) {
super("");
this.handler = handler;
}
-
+
+ public void setHandler(SelectionHandler handler) {
+ this.handler = handler;
+ }
+
@Override
public Component getHeader(String componentId) {
@@ -82,12 +90,16 @@ public final class ObjectAdapterToggleboxColumn extends ColumnAbstract<ObjectAda
ObjectAdapter selectedAdapter = null;
try {
selectedAdapter = entityModel.load(ConcurrencyChecking.CHECK);
- handler.onSelected(this, selectedAdapter, target);
+ if(handler != null) {
+ handler.onSelected(this, selectedAdapter, target);
+ }
} catch(ConcurrencyException ex) {
// should work second time, because the previous attempt will have updated the OAM's OIDs version.
selectedAdapter = entityModel.load(ConcurrencyChecking.CHECK);
- handler.onConcurrencyException(this, selectedAdapter, ex, target);
+ if(handler != null) {
+ handler.onConcurrencyException(this, selectedAdapter, ex, target);
+ }
entityModel.setException(ex);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
index 49db84a..e4a37b3 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
@@ -75,7 +75,7 @@ public class CollectionContentsMultipleViewsPanel
this.ignoreFactory = ignoreFactory;
this.underlyingIdPrefix = ComponentType.COLLECTION_CONTENTS.toString();
this.componentType = ignoreFactory.getComponentType();
- selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry(), ignoreFactory);
+ selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry());
}
@@ -92,7 +92,7 @@ public class CollectionContentsMultipleViewsPanel
final EntityCollectionModel model = getModel();
final int selected = selectorHelper.honourViewHintElseDefault(getSelectorDropdownPanel());
- final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories(getComponentFactoryRegistry());
// create all, hide the one not selected
underlyingViews = new Component[MAX_NUM_UNDERLYING_VIEWS];
@@ -140,7 +140,7 @@ public class CollectionContentsMultipleViewsPanel
int underlyingViewNum = 0;
String viewStr = uiHintContainer.getHint(this.getSelectorDropdownPanel(), UIHINT_VIEW);
- List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+ List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories(getComponentFactoryRegistry());
if(viewStr != null) {
try {
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/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 876177d..beee965 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
@@ -128,9 +128,9 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
AdditionalLinksPanel additionalLinks = new AdditionalLinksPanel(ID_ADDITIONAL_LINKS, links);
fieldset.addOrReplace(additionalLinks);
- final CollectionSelectorHelper selectorHelper = new CollectionSelectorHelper(entityCollectionModel, getComponentFactoryRegistry(), new CollectionContentsMultipleViewsPanelFactory());
+ final CollectionSelectorHelper selectorHelper = new CollectionSelectorHelper(entityCollectionModel, getComponentFactoryRegistry());
- final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories(getComponentFactoryRegistry());
if (componentFactories.size() <= 1) {
permanentlyHide(ID_SELECTOR_DROPDOWN);
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.html
index d09c0bd..194d8fa 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.html
@@ -25,17 +25,16 @@
<body>
<wicket:panel>
+ <div wicket:id="actionPromptModalWindow"></div>
<div class="standaloneCollectionPanel actionComponentType myBlockContainer panel panel-default">
<div class="iconAndTitle panel-heading actionPanelHeaderNew">
<div wicket:id="actionName" class="actionName panel-title">[action name]</div>
<div class="pull-right">
- <!--
<div class="btn-group">
- <div xxxwicket:id="additionalLinks"></div>
+ <div class="entityActions" wicket:id="entityActions"></div>
</div>
- -->
<div class="btn-group">
<span wicket:id="selectorDropdown"/>
</div>
http://git-wip-us.apache.org/repos/asf/isis/blob/9bad9179/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
index 7ac4640..a4e76ce 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
@@ -22,33 +22,48 @@ package org.apache.isis.viewer.wicket.ui.components.standalonecollection;
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
-
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.collection.count.CollectionCountProvider;
import org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorHelper;
import org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorPanel;
import org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorProvider;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.BulkActionsHelper;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.BulkActionsLinkFactory;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.BulkActionsProvider;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterToggleboxColumn;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple.CollectionContentsMultipleViewsPanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactory;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuBuilder;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuPanel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
public class StandaloneCollectionPanel extends PanelAbstract<EntityCollectionModel>
- implements CollectionCountProvider, CollectionSelectorProvider {
+ implements CollectionCountProvider, CollectionSelectorProvider, BulkActionsProvider, ActionPromptProvider {
private static final long serialVersionUID = 1L;
private static final String ID_ACTION_NAME = "actionName";
- private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
+
+ private static final String ID_ACTION_PROMPT_MODAL_WINDOW = "actionPromptModalWindow";
+ private static final String ID_ENTITY_ACTIONS = "entityActions";
+
private static final String ID_SELECTOR_DROPDOWN = "selectorDropdown";
private CollectionSelectorPanel selectorDropdownPanel;
+ private final BulkActionsHelper bulkActionsHelper;
+
public StandaloneCollectionPanel(final String id, final EntityCollectionModel entityCollectionModel) {
super(id, entityCollectionModel);
buildGui(entityCollectionModel);
+
+ bulkActionsHelper = new BulkActionsHelper(entityCollectionModel);
}
private void buildGui(final EntityCollectionModel entityCollectionModel) {
@@ -57,9 +72,24 @@ public class StandaloneCollectionPanel extends PanelAbstract<EntityCollectionMod
ObjectAction action = actionModel.getActionMemento().getAction();
addOrReplace(new Label(StandaloneCollectionPanel.ID_ACTION_NAME, Model.of(action.getName())));
- final CollectionSelectorHelper selectorHelper = new CollectionSelectorHelper(entityCollectionModel, getComponentFactoryRegistry(), new CollectionContentsMultipleViewsPanelFactory());
+ final CollectionSelectorHelper selectorHelper = new CollectionSelectorHelper(entityCollectionModel, getComponentFactoryRegistry());
+
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories(getComponentFactoryRegistry());
+
+
+
+ addActionPromptModalWindow();
+
+ // bulkactions ... in configureBulkActionsProvider
+
+// List<ObjectAction> bulkActions = bulkActionsHelper.getBulkActions();
+//
+// if(bulkActions.isEmpty() || getModel().isParented()) {
+// permanentlyHide(ID_ENTITY_ACTIONS);
+// } else {
+//
+// }
- final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
if (componentFactories.size() <= 1) {
permanentlyHide(ID_SELECTOR_DROPDOWN);
@@ -94,4 +124,107 @@ public class StandaloneCollectionPanel extends PanelAbstract<EntityCollectionMod
public CollectionSelectorPanel getSelectorDropdownPanel() {
return selectorDropdownPanel;
}
+
+
+
+ //region > ActionPromptModalWindowProvider
+
+ private ActionPromptModalWindow actionPromptModalWindow;
+ public ActionPromptModalWindow getActionPrompt() {
+ return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
+ }
+
+ private void addActionPromptModalWindow() {
+ this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
+ addOrReplace(actionPromptModalWindow);
+ }
+
+ //endregion
+
+
+
+
+ @Override
+ public void configureBulkActionsProvider(ObjectAdapterToggleboxColumn toggleboxColumn) {
+ BulkActionsLinkFactory linkFactory = new BulkActionsLinkFactory(getModel(), toggleboxColumn);
+ configureBulkActionsProvider(linkFactory, this);
+ }
+
+ private void configureBulkActionsProvider(
+ final ActionLinkFactory linkFactory,
+ final ActionPromptProvider actionPromptProvider) {
+
+ if(linkFactory != null) {
+ final List<ObjectAction> bulkActions = bulkActionsHelper.getBulkActions();
+
+ final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(null, bulkActions, linkFactory, actionPromptProvider != null? actionPromptProvider: this, null);
+ final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_ENTITY_ACTIONS, "Actions");
+
+ addOrReplace(cssMenuPanel);
+
+ } else {
+ permanentlyHide(ID_ENTITY_ACTIONS);
+
+ }
+ }
+
+
+ private List<ObjectAction> getBulkActions() {
+ return bulkActionsHelper.getBulkActions();
+ }
+
+// public static class ActionLinkFactoryDelegating implements ActionLinkFactory {
+//
+// private ActionLinkFactory delegate;
+//
+// public ActionLinkFactory getDelegate() {
+// return delegate;
+// }
+//
+// public void setDelegate(ActionLinkFactory delegate) {
+// this.delegate = delegate;
+// }
+//
+// @Override
+// public LinkAndLabel newLink(
+// final ObjectAdapterMemento adapter,
+// final ObjectAction noAction,
+// final String linkId,
+// final ActionPromptProvider actionPromptProvider) {
+// return delegate.newLink(adapter, noAction, linkId, actionPromptProvider);
+// }
+// }
+//
+// public static class ActionPromptProviderDelegating implements ActionPromptProvider {
+//
+// private ActionPromptProvider delegate;
+//
+// public ActionPromptProvider getDelegate() {
+// return delegate;
+// }
+//
+// public void setDelegate(ActionPromptProvider delegate) {
+// this.delegate = delegate;
+// }
+//
+// @Override
+// public ActionPrompt getActionPrompt() {
+// return delegate.getActionPrompt();
+// }
+// }
+
+
+ @Override
+ public ObjectAdapterToggleboxColumn createToggleboxColumn() {
+
+ final List<ObjectAction> bulkActions = getBulkActions();
+
+ final EntityCollectionModel entityCollectionModel = getModel();
+ if(bulkActions.isEmpty() || entityCollectionModel.isParented()) {
+ return null;
+ }
+
+ return new ObjectAdapterToggleboxColumn();
+ }
+
}