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 2015/10/06 23:29:37 UTC
[4/4] isis git commit: ISIS-1007: extending for no-arg links. NB:
however, this is currently broken, have asked martin-g to help out.
ISIS-1007: extending for no-arg links. NB: however, this is currently broken, have asked martin-g to help out.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/dbcd0965
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/dbcd0965
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/dbcd0965
Branch: refs/heads/master
Commit: dbcd09655318958cd2b5e4784a632ac8692ddb07
Parents: 99e1e03
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Oct 6 22:29:09 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Oct 6 22:29:09 2015 +0100
----------------------------------------------------------------------
.../isis/applib/annotation/ActionSemantics.java | 8 +++++++
.../isis/applib/annotation/SemanticsOf.java | 4 ++++
.../viewer/wicket/model/links/LinkAndLabel.java | 10 ++++++++-
.../entityactions/AdditionalLinksPanel.java | 22 +++++++++++++++++++-
.../actions/ActionParametersFormPanel.java | 18 +++++++++-------
.../collection/bulk/BulkActionsLinkFactory.java | 6 +++++-
.../linkandlabel/ActionLinkFactoryAbstract.java | 22 ++++++++++++--------
7 files changed, 71 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
index 0801922..edcaade 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
@@ -122,6 +122,14 @@ public @interface ActionSemantics {
public boolean isSafeAndRequestCacheable() {
return SemanticsOf.from(this).isSafeAndRequestCacheable();
}
+
+ /**
+ * @deprecated - see {@link SemanticsOf#isAreYouSure()}.
+ */
+ @Deprecated
+ public boolean isAreYouSure() {
+ return SemanticsOf.from(this).isAreYouSure();
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
index 7a4a570..1fc8ce0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
@@ -102,6 +102,10 @@ public enum SemanticsOf {
return this == SAFE_AND_REQUEST_CACHEABLE;
}
+ public boolean isAreYouSure() {
+ return this == IDEMPOTENT_ARE_YOU_SURE || this == NON_IDEMPOTENT_ARE_YOU_SURE;
+ }
+
@Deprecated
public static ActionSemantics.Of from(final SemanticsOf semantics) {
if(semantics == null) return null;
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
index 19e1fd4..d961fc2 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
@@ -25,6 +25,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
public class LinkAndLabel implements Serializable {
@@ -49,6 +50,7 @@ public class LinkAndLabel implements Serializable {
private final String cssClassFa;
private final CssClassFaPosition cssClassFaPosition;
private final ActionLayout.Position position;
+ private final SemanticsOf semanticsOf;
public LinkAndLabel(
final AbstractLink link,
@@ -61,7 +63,8 @@ public class LinkAndLabel implements Serializable {
final String cssClass,
final String cssClassFa,
final CssClassFaPosition cssClassFaPosition,
- final ActionLayout.Position position) {
+ final ActionLayout.Position position,
+ final SemanticsOf semanticsOf) {
this.link = link;
this.label = label;
this.disabledReasonIfAny = disabledReasonIfAny;
@@ -73,6 +76,7 @@ public class LinkAndLabel implements Serializable {
this.cssClassFa = cssClassFa;
this.cssClassFaPosition = cssClassFaPosition;
this.position = position;
+ this.semanticsOf = semanticsOf;
}
public AbstractLink getLink() {
@@ -119,6 +123,10 @@ public class LinkAndLabel implements Serializable {
return position;
}
+ public SemanticsOf getSemantics() {
+ return semanticsOf;
+ }
+
public static class Predicates {
public static Predicate<LinkAndLabel> positioned(final ActionLayout.Position position) {
return new Predicate<LinkAndLabel>() {
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
index d80374a..1aa625b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
@@ -20,7 +20,9 @@
package org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions;
import java.util.List;
+
import com.google.common.base.Strings;
+
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -28,8 +30,10 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
-import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
+
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.commons.lang.StringExtensions;
+import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel;
import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
@@ -37,6 +41,9 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
+
public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
private static final long serialVersionUID = 1L;
@@ -117,6 +124,19 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
}
link.add(new CssClassAppender(linkAndLabel.getActionIdentifier()));
+ SemanticsOf semantics = linkAndLabel.getSemantics();
+ if ( semantics.isAreYouSure() ) {
+ ConfirmationConfig confirmationConfig = new ConfirmationConfig();
+ // TODO ISIS-1007 Use i18n for the title and the labels
+ confirmationConfig.withTitle("Are you sure?");
+ confirmationConfig.withBtnOkLabel("Confirm");
+ confirmationConfig.withBtnCancelLabel("Cancel");
+ confirmationConfig.withBtnOkClass("btn btn-danger");
+ confirmationConfig.withBtnCancelClass("btn btn-default");
+ link.add(new ConfirmationBehavior(confirmationConfig));
+ }
+
+
final String cssClass = linkAndLabel.getCssClass();
CssClassAppender.appendCssClassTo(link, cssClass);
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index f20fbe7..5366944 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -19,11 +19,10 @@
package org.apache.isis.viewer.wicket.ui.components.actions;
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
-
import java.util.List;
+
import com.google.common.collect.Lists;
+
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -32,7 +31,8 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.ResourceModel;
-import org.apache.isis.applib.annotation.ActionSemantics;
+
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.commons.ensure.Ensure;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
@@ -56,7 +56,11 @@ import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
-import static org.hamcrest.CoreMatchers.*;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
/**
* {@link PanelAbstract Panel} to capture the arguments for an action
@@ -218,8 +222,8 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
private void applyAreYouSure(AjaxButton button) {
ActionModel actionModel = getActionModel();
final ObjectAction action = actionModel.getActionMemento().getAction();
- ActionSemantics.Of semantics = action.getSemantics();
- if (semantics == ActionSemantics.Of.IDEMPOTENT_ARE_YOU_SURE || semantics == ActionSemantics.Of.NON_IDEMPOTENT_ARE_YOU_SURE) {
+ SemanticsOf semanticsOf = SemanticsOf.from(action.getSemantics());
+ if (semanticsOf.isAreYouSure()) {
ConfirmationConfig confirmationConfig = new ConfirmationConfig();
// TODO ISIS-1007 Use i18n for the title and the labels
confirmationConfig.withTitle("Are you sure?");
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index d5aebc7..de42f3f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -26,6 +26,8 @@ import org.apache.wicket.Session;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.actinvoc.ActionInvocationContext;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.Bulk;
@@ -217,8 +219,10 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
final String cssClassFa = ObjectAction.Utils.cssClassFaFor(objectAction);
final CssClassFaPosition cssClassFaPosition = ObjectAction.Utils.cssClassFaPositionFor(objectAction);
final ActionLayout.Position position = ObjectAction.Utils.actionLayoutPositionOf(objectAction);
+ final ActionSemantics.Of semantics = objectAction.getSemantics();
- return new LinkAndLabel(link, objectAction.getName(), null, description, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa, cssClassFaPosition, position);
+ return new LinkAndLabel(link, objectAction.getName(), null, description, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa, cssClassFaPosition, position,
+ SemanticsOf.from(semantics));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/dbcd0965/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index d7f10d2..0608c7c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -17,9 +17,19 @@
package org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel;
+import org.apache.wicket.Application;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.request.IRequestHandler;
+
import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
+import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
@@ -33,13 +43,6 @@ import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
-import org.apache.wicket.Application;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.request.IRequestHandler;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
@@ -180,9 +183,10 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
final String cssClass = ObjectAction.Utils.cssClassFor(objectAction, objectAdapter);
final String cssClassFa = ObjectAction.Utils.cssClassFaFor(objectAction);
final CssClassFaPosition cssClassFaPosition = ObjectAction.Utils.cssClassFaPositionFor(objectAction);
+ final ActionSemantics.Of semantics = objectAction.getSemantics();
return new LinkAndLabel(link, label, disabledReasonIfAny, description, blobOrClob, prototype, actionIdentifier,
- cssClass, cssClassFa, cssClassFaPosition, position);
+ cssClass, cssClassFa, cssClassFaPosition, position, SemanticsOf.from(semantics));
}
// ////////////////////////////////////////////////////////////