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/11/03 21:24:39 UTC

[1/3] isis git commit: ISIS-1195: minor edits to snapshot deploy procedure

Repository: isis
Updated Branches:
  refs/heads/master 528302e0c -> 271ae4ba5


ISIS-1195: minor edits to snapshot deploy procedure


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/810a2b73
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/810a2b73
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/810a2b73

Branch: refs/heads/master
Commit: 810a2b7351b1d5faa70cd55b0ac7789ff2e0cae7
Parents: 528302e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 3 12:44:24 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 3 12:44:24 2015 +0000

----------------------------------------------------------------------
 ...ommitters_release-process-for-snapshots.adoc | 26 +++++++-------------
 1 file changed, 9 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/810a2b73/adocs/documentation/src/main/asciidoc/guides/_cg_committers_release-process-for-snapshots.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_release-process-for-snapshots.adoc b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_release-process-for-snapshots.adoc
index 24d1502..d2c68e1 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_release-process-for-snapshots.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_release-process-for-snapshots.adoc
@@ -55,42 +55,34 @@ First, delete all Isis artifacts from your local Maven repo:
 rm -rf ~/.m2/repository/org/apache/isis
 ----
 
-Next, check that the releasable module builds independently. The build process depends on whether the artifact is of Apache Isis core or of one of its components:
+Next, check that the framework builds ok:
 
-* For Apache Isis core, build using the `-o` offline flag: +
-+
 [source,bash]
 ----
+cd core
 mvn clean install -o
 ----
-+
-Confirm that the versions of the Isis artifacts now cached in your local repository are correct.
 
-* For an Apache Isis component, build without the offline flag; Maven should pull down the component's dependencies from the Maven central repo: +
-+
-[source,bash]
-----
-mvn clean install
-----
-+
 Confirm that the versions of the Isis artifacts now cached in your local repository are correct (both those pulled down from Maven central repo, as well as those of the component built locally).
 
 
 
-== Deploy All Modules
+== Deploy
 
-Deploy all modules using:
+Deploy the framework using:
 
 [source,bsah]
 ----
+cd core
 mvn -D deploy=snapshot deploy
 ----
 
 This will deploy all the modules that make up a release.
 
-To confirm that they are present, browse to Apache's https://repository.apache.org[Nexus repository manager] and search for "isis".
-
 [TIP]
 ====
-Depending on the module being released, the deploy process could take a long time. Go grab a bite of lunch.
+Expect this to take about 10 minutes, give or take.
 ====
+
+To confirm that they are present, browse to Apache's https://repository.apache.org[Nexus repository manager] and search for "isis".
+


[3/3] isis git commit: ISIS-1195: updating migration notes.

Posted by da...@apache.org.
ISIS-1195: updating migration notes.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/271ae4ba
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/271ae4ba
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/271ae4ba

Branch: refs/heads/master
Commit: 271ae4ba50825cc024e15dfdc3e9c182fcaeb2e1
Parents: 6d42562
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 3 20:18:23 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 3 20:18:23 2015 +0000

----------------------------------------------------------------------
 .../_migration-notes_1.9.0-to-1.10.0.adoc       | 29 +++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/271ae4ba/adocs/documentation/src/main/asciidoc/_migration-notes_1.9.0-to-1.10.0.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/_migration-notes_1.9.0-to-1.10.0.adoc b/adocs/documentation/src/main/asciidoc/_migration-notes_1.9.0-to-1.10.0.adoc
index d3d0815..033d484 100644
--- a/adocs/documentation/src/main/asciidoc/_migration-notes_1.9.0-to-1.10.0.adoc
+++ b/adocs/documentation/src/main/asciidoc/_migration-notes_1.9.0-to-1.10.0.adoc
@@ -5,11 +5,38 @@
 :_imagesdir: images/
 
 
-Existing projects written against v1.9.0 should run against v1.10.0 with few if any changes.  If you *do* encounter
+Existing projects written against v1.9.0 should run against v1.10.0 with only a few minor changes.  If you *do* encounter
 any difficulties then let us know via the link:support.html[users mailing list], so we can support you and document
 issues here.
 
 
+== Remove references to `isis-viewer-wicket` parent pom.
+
+In earlier releases the Wicket viewer defined its own parent `pom.xml` for dependency management and its dependencies
+and to declare the various submodules that make up the viewer.  This `pom.xml` has now been incorporated into the
+parent `pom.xml` for the Core framework.
+
+Therefore, in the parent `pom.xml` of your own domain applications, remove:
+
+[source,xml]
+----
+<dependencyManagement>
+    <dependencies>
+        ...
+        <dependency>
+            <groupId>org.apache.isis.viewer</groupId>
+            <artifactId>isis-viewer-wicket</artifactId>
+            <version>${isis.version}</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+        ...
+    </dependencies>
+</dependencyManagement>
+----
+
+
+
 
 == `allowLateRegistration`
 


[2/3] isis git commit: ISIS-1007: ensure that bootstrap.js is loaded first, prior to bootstrap-confirmation.js.

Posted by da...@apache.org.
ISIS-1007: ensure that bootstrap.js is loaded first, prior to bootstrap-confirmation.js.

In addition:
- refactor to remove code duplication
- refactor to use fluent API for ConfirmationConfig
- place are you sure dialog to right hand side, rather on top.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6d42562c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6d42562c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6d42562c

Branch: refs/heads/master
Commit: 6d42562c8ba3212c10b477ae8f01b3771e720c79
Parents: 810a2b7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 3 20:17:38 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 3 20:17:38 2015 +0000

----------------------------------------------------------------------
 .../entityactions/AdditionalLinksPanel.java     | 26 +------------
 .../actions/ActionParametersFormPanel.java      | 22 +----------
 .../viewer/wicket/ui/pages/PageAbstract.java    | 18 ++++++---
 .../accmngt/AccountManagementPageAbstract.java  |  9 ++++-
 .../wicket/ui/pages/mmverror/MmvErrorPage.java  |  5 ++-
 .../viewer/wicket/ui/panels/PanelAbstract.java  | 40 +++++++++++++++++++-
 6 files changed, 64 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/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 39e240a..6df911e 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
@@ -32,10 +32,8 @@ import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
-import org.apache.isis.core.runtime.system.IsisSystem;
 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;
@@ -43,9 +41,6 @@ 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;
@@ -125,25 +120,8 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
                 link.add(new CssClassAppender(linkAndLabel.getActionIdentifier()));
 
                 SemanticsOf semantics = linkAndLabel.getSemantics();
-                if (    semantics.isAreYouSure() && linkAndLabel.getParameters().isNoParameters() ) {
-                    ConfirmationConfig confirmationConfig = new ConfirmationConfig();
-
-                    final TranslationService translationService =
-                            getPersistenceSession().getServicesInjector().lookupService(TranslationService.class);
-
-                    final String context = IsisSystem.class.getName();
-                    final String areYouSure = translationService.translate(context, IsisSystem.MSG_ARE_YOU_SURE);
-                    final String confirm = translationService.translate(context, IsisSystem.MSG_CONFIRM);
-                    final String cancel = translationService.translate(context, IsisSystem.MSG_CANCEL);
-
-                    confirmationConfig.withTitle(areYouSure);
-                    confirmationConfig.withBtnOkLabel(confirm);
-                    confirmationConfig.withBtnCancelLabel(cancel);
-
-                    confirmationConfig.withBtnOkClass("btn btn-danger");
-                    confirmationConfig.withBtnCancelClass("btn btn-default");
-
-                    link.add(new ConfirmationBehavior(confirmationConfig));
+                if (linkAndLabel.getParameters().isNoParameters()) {
+                    addConfirmationDialogIfAreYouSureSemantics(link, semantics);
                 }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/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 58282ac..d1d7020 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
@@ -33,12 +33,10 @@ import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.model.ResourceModel;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.i18n.TranslationService;
 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;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
@@ -59,7 +57,6 @@ import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 
 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;
@@ -225,25 +222,8 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
             ActionModel actionModel = getActionModel();
             final ObjectAction action = actionModel.getActionMemento().getAction();
             SemanticsOf semanticsOf = SemanticsOf.from(action.getSemantics());
-            if (semanticsOf.isAreYouSure()) {
-                ConfirmationConfig confirmationConfig = new ConfirmationConfig();
 
-                final TranslationService translationService =
-                        getPersistenceSession().getServicesInjector().lookupService(TranslationService.class);
-
-                final String context = IsisSystem.class.getName();
-                final String areYouSure = translationService.translate(context, IsisSystem.MSG_ARE_YOU_SURE);
-                final String confirm = translationService.translate(context, IsisSystem.MSG_CONFIRM);
-                final String cancel = translationService.translate(context, IsisSystem.MSG_CANCEL);
-
-                confirmationConfig.withTitle(areYouSure);
-                confirmationConfig.withBtnOkLabel(confirm);
-                confirmationConfig.withBtnCancelLabel(cancel);
-
-                confirmationConfig.withBtnOkClass("btn btn-danger");
-                confirmationConfig.withBtnCancelClass("btn btn-default");
-                button.add(new ConfirmationBehavior(confirmationConfig));
-            }
+            addConfirmationDialogIfAreYouSureSemantics(button, semanticsOf);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 60e273d..c285004 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -19,18 +19,14 @@
 
 package org.apache.isis.viewer.wicket.ui.pages;
 
-import de.agilecoders.wicket.core.Bootstrap;
-import de.agilecoders.wicket.core.markup.html.references.BootlintHeaderItem;
-import de.agilecoders.wicket.core.settings.IBootstrapSettings;
-import de.agilecoders.wicket.core.settings.ITheme;
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesomeCssReference;
-
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
+
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
@@ -58,6 +54,7 @@ import org.apache.wicket.request.resource.PackageResource;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -86,6 +83,13 @@ import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
+import de.agilecoders.wicket.core.Bootstrap;
+import de.agilecoders.wicket.core.markup.html.references.BootlintHeaderItem;
+import de.agilecoders.wicket.core.markup.html.references.BootstrapJavaScriptReference;
+import de.agilecoders.wicket.core.settings.IBootstrapSettings;
+import de.agilecoders.wicket.core.settings.ITheme;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesomeCssReference;
+
 /**
  * Convenience adapter for {@link WebPage}s built up using {@link ComponentType}s.
  */
@@ -248,6 +252,8 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
         super.renderHead(response);
 
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getJQueryReference())));
+        response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BootstrapJavaScriptReference.instance())));
+
         response.render(CssHeaderItem.forReference(FontAwesomeCssReference.instance()));
         response.render(CssHeaderItem.forReference(new BootstrapOverridesCssResourceReference()));
         contributeThemeSpecificOverrides(response);

http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
index cb6ac31..73bbe80 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
@@ -19,10 +19,9 @@
 
 package org.apache.isis.viewer.wicket.ui.pages.accmngt;
 
-import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapJavascriptBehavior;
-
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
+
 import org.apache.wicket.Application;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
@@ -37,6 +36,7 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -48,6 +48,9 @@ import org.apache.isis.viewer.wicket.ui.errors.ExceptionStackTracePanel;
 import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 
+import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapJavascriptBehavior;
+import de.agilecoders.wicket.core.markup.html.references.BootstrapJavaScriptReference;
+
 /**
  * Boilerplate, pick up our HTML and CSS.
  */
@@ -133,6 +136,8 @@ public class AccountManagementPageAbstract extends WebPage {
     public void renderHead(IHeaderResponse response) {
         super.renderHead(response);
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
+        response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(
+                BootstrapJavaScriptReference.instance())));
 
         if(applicationCss != null) {
             response.render(CssReferenceHeaderItem.forUrl(applicationCss));

http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
index 6c1d2ab..b65e72d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
@@ -40,6 +40,8 @@ import org.apache.wicket.model.IModel;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
+import de.agilecoders.wicket.core.markup.html.references.BootstrapJavaScriptReference;
+
 /**
  * A page being shown when the meta model validation has failed
  */
@@ -109,7 +111,8 @@ public class MmvErrorPage extends WebPage {
     public void renderHead(IHeaderResponse response) {
         super.renderHead(response);
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
-        
+        response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BootstrapJavaScriptReference.instance())));
+
         if(applicationCss != null) {
             response.render(CssReferenceHeaderItem.forUrl(applicationCss));
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/6d42562c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index bffaa6b..92dcd2d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -25,13 +25,16 @@ import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategoryAware;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -41,6 +44,10 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 
+import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
+
 /**
  * Convenience adapter for {@link Panel}s built up using {@link ComponentType}s.
  */
@@ -189,5 +196,34 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
     protected <S> S lookupService(final Class<S> serviceClass) {
         return getPersistenceSession().getServicesInjector().lookupService(serviceClass);
     }
-    
+
+
+    protected void addConfirmationDialogIfAreYouSureSemantics(final Component component, final SemanticsOf semanticsOf) {
+        if (!semanticsOf.isAreYouSure()) {
+            return;
+        }
+
+        final TranslationService translationService =
+                getPersistenceSession().getServicesInjector().lookupService(TranslationService.class);
+
+        ConfirmationConfig confirmationConfig = new ConfirmationConfig();
+
+        final String context = IsisSystem.class.getName();
+        final String areYouSure = translationService.translate(context, IsisSystem.MSG_ARE_YOU_SURE);
+        final String confirm = translationService.translate(context, IsisSystem.MSG_CONFIRM);
+        final String cancel = translationService.translate(context, IsisSystem.MSG_CANCEL);
+
+        confirmationConfig
+                .withTitle(areYouSure)
+                .withBtnOkLabel(confirm)
+                .withBtnCancelLabel(cancel)
+                .withPlacement(TooltipConfig.Placement.right)
+                .withBtnOkClass("btn btn-danger")
+                .withBtnCancelClass("btn btn-default");
+
+        component.add(new ConfirmationBehavior(confirmationConfig));
+    }
+
+
+
 }