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 2016/12/10 12:38:39 UTC

[1/8] isis git commit: ISIS-1552: now uses 'readonly' rather than 'disabled' tag for disabled text fields, provided that the new 'replaceDisabledTagWithReadonlyTag has not been set to false.

Repository: isis
Updated Branches:
  refs/heads/master f057d29d8 -> 15d87eada


ISIS-1552: now uses 'readonly' rather than 'disabled' tag for disabled text fields, provided that the new 'replaceDisabledTagWithReadonlyTag has not been set to false.

Also updates the docs


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

Branch: refs/heads/master
Commit: f325400b3fd1e120c67cf8ca909a5763a30f0da0
Parents: fa36da4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Dec 9 09:00:19 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Dec 9 09:00:19 2016 +0000

----------------------------------------------------------------------
 .../guides/_ugvw_configuration-properties.adoc  |  5 +++
 .../settings/WicketViewerSettingsDefault.java   |  5 +++
 .../wicket/model/isis/WicketViewerSettings.java |  7 +++-
 .../components/scalars/ScalarPanelAbstract.java |  1 -
 .../scalars/ScalarPanelTextFieldAbstract.java   | 40 +++++++++++++++++++-
 .../webapp/WEB-INF/viewer_wicket.properties     | 10 ++++-
 6 files changed, 64 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
index f01f52d..ea5f3fc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
@@ -120,6 +120,11 @@ for further details).
 | Ignored for 1.8.0+; in earlier versions forced regular case rather than title case in the UI
 
 |`isis.viewer.wicket.` +
+`replaceDisabledTagWithReadonlyTag`
+| `true`,`false` (`_true_`)
+| (`1.13.2-SNAPSHOT`) Whether to replace 'disabled' tag with 'readonly' (for link:https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute[w3 spec]-compliant browsers such as for Firefox and Chrome 54+) which prevent copy from 'disabled' fields.
+
+|`isis.viewer.wicket.` +
 `rememberMe.cookieKey`
 | ascii chars (`_isisWicketRememberMe_`)
 |Cookie key holding the (encrypted) 'rememberMe' user/password.  There is generally no need to

http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
index 0771dde..91ef087 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -70,4 +70,9 @@ public class WicketViewerSettingsDefault implements WicketViewerSettings {
     public String getTimestampPattern() {
         return getConfiguration().getString("isis.viewer.wicket.timestampPattern", "yyyy-MM-dd HH:mm:ss.SSS");
     }
+
+    @Override
+    public boolean isReplaceDisabledTagWithReadonlyTag() {
+        return getConfiguration().getBoolean("isis.viewer.wicket.replaceDisabledTagWithReadonlyTag", true);
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
index 90f4d50..0f00912 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
@@ -65,5 +65,10 @@ public interface WicketViewerSettings extends Serializable {
      */
     String getTimestampPattern();
 
-
+    /**
+     * in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
+     * readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute)
+     * This behaviour is enabled by default but can be disabled using this flag
+     */
+    boolean isReplaceDisabledTagWithReadonlyTag();
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index bf33953..98b8c55 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -43,7 +43,6 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
 import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;

http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 311e3ce..e3dbe06 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -28,6 +28,7 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
@@ -44,6 +45,7 @@ import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
+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.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil;
@@ -62,6 +64,17 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
     protected final Class<T> cls;
 
+    protected static class ReplaceDisabledTagWithReadonlyTagBehaviour extends Behavior {
+        @Override public void onComponentTag(final Component component, final ComponentTag tag) {
+            super.onComponentTag(component, tag);
+            if(component.isEnabled()) {
+                return;
+            }
+            tag.remove("disabled");
+            tag.put("readonly","readonly");
+        }
+    }
+
     protected WebMarkupContainer scalarTypeContainer;
     private AbstractTextComponent<T> textField;
 
@@ -152,7 +165,18 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         // over the parsing (using custom subclasses of TextField etc)
     }
 
-
+    private void addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(final Component component) {
+        if(!getSettings().isReplaceDisabledTagWithReadonlyTag()) {
+            return;
+        }
+        if (component == null) {
+            return;
+        }
+        if (!component.getBehaviors(ReplaceDisabledTagWithReadonlyTagBehaviour.class).isEmpty()) {
+            return;
+        }
+        component.add(new ReplaceDisabledTagWithReadonlyTagBehaviour());
+    }
 
     private MarkupContainer createFormComponentLabel() {
         Fragment textFieldFragment = createTextFieldFragment("scalarValueContainer");
@@ -243,12 +267,14 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
     protected void onBeforeRenderWhenViewMode() {
         super.onBeforeRenderWhenViewMode();
         textField.setEnabled(false);
+        addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
 
         final String disableReasonIfAny = scalarModel.disable(getRendering().getWhere());
         if(disableReasonIfAny == null) {
             CssClassAppender.appendCssClassTo(this, "editable");
         }
 
+
         setTitleAttribute("");
     }
 
@@ -256,6 +282,7 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
     protected void onBeforeRenderWhenDisabled(final String disableReason) {
         super.onBeforeRenderWhenDisabled(disableReason);
         textField.setEnabled(false);
+        addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
         setTitleAttribute(disableReason);
     }
 
@@ -275,5 +302,16 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         textField.add(behavior);
     }
 
+
+    //region > dependencies
+
+    @com.google.inject.Inject
+    private WicketViewerSettings settings;
+    protected WicketViewerSettings getSettings() {
+        return settings;
+    }
+
+    //endregion
+
 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/f325400b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index 7b72fb1..d6f1ff1 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -31,13 +31,21 @@
 isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
 isis.viewer.wicket.maxTitleLengthInParentedTables=0
 
+
+#
+# in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
+# readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute)
+# This behaviour is enabled by default but can be disabled using this flag
+#
+#isis.viewer.wicket.replaceDisabledTagWithReadonlyTag=true
+
+
 #isis.viewer.wicket.datePicker.minDate=1900-01-01T00:00:00.000Z
 #isis.viewer.wicket.datePicker.maxDate=2100-01-01T00:00:00.000Z
 
 #isis.viewer.wicket.datePattern=dd-MM-yyyy
 #isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
 
-
 #isis.viewer.wicket.datePattern=dd/MM/yy
 #isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
 


[6/8] isis git commit: ISIS-1538: recreating simpleapp archetype

Posted by da...@apache.org.
ISIS-1538: recreating simpleapp archetype


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

Branch: refs/heads/master
Commit: acb5c8b2d91988609967cef266f157743000c91c
Parents: 2447b1f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Dec 10 12:25:18 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Dec 10 12:25:18 2016 +0000

----------------------------------------------------------------------
 .../application/translations.pot                | 27 +-------------------
 .../module-simple/translations.pot              |  2 +-
 .../webapp/WEB-INF/viewer_wicket.properties     | 23 ++++++++++++++++-
 .../projects/basic/archetype.properties         |  2 +-
 4 files changed, 25 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/acb5c8b2/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
index e97d6d2..09d9f87 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2016-12-01 10:14:01+\n"
+"POT-Creation-Date: 2016-12-10 10:53:28+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -101,21 +101,6 @@ msgid "Current Overrides If Any"
 msgstr ""
 
 
-#: domainapp.modules.simple.dom.impl.SimpleObject#delete()
-msgid "Delete"
-msgstr ""
-
-
-#: domainapp.modules.simple.dom.impl.SimpleObject#downloadJdoMetadata()
-msgid "Download Jdo Metadata"
-msgstr ""
-
-
-#: domainapp.modules.simple.dom.impl.SimpleObject#downloadLayoutXml()
-msgid "Download Layout Xml"
-msgstr ""
-
-
 #: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
 msgid "Download Layouts (XML)"
 msgstr ""
@@ -337,11 +322,6 @@ msgid "Public"
 msgstr ""
 
 
-#: domainapp.modules.simple.dom.impl.SimpleObject#rebuildMetamodel()
-msgid "Rebuild Metamodel"
-msgstr ""
-
-
 #: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
 msgid "Recreate Objects And Return First"
 msgstr ""
@@ -411,11 +391,6 @@ msgid "Switch To Writing Translations"
 msgstr ""
 
 
-#: domainapp.modules.simple.dom.impl.SimpleObject#updateName()
-msgid "Update Name"
-msgstr ""
-
-
 #: org.apache.isis.core.metamodel.services.user.UserServiceDefault$UserAndRoleOverrides#user
 msgid "User"
 msgstr ""

http://git-wip-us.apache.org/repos/asf/isis/blob/acb5c8b2/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
index 1723c57..42f6074 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2016-12-01 10:14:55+\n"
+"POT-Creation-Date: 2016-12-10 12:24:20+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"

http://git-wip-us.apache.org/repos/asf/isis/blob/acb5c8b2/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index 2e56399..05deaeb 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -34,13 +34,34 @@ ${symbol_pound}
 isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
 isis.viewer.wicket.maxTitleLengthInParentedTables=0
 
+
+${symbol_pound}
+${symbol_pound} in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
+${symbol_pound} readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html${symbol_pound}the-readonly-attribute)
+${symbol_pound} This behaviour is enabled by default but can be disabled using this flag
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.replaceDisabledTagWithReadonlyTag=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to disable buttons after it has been clicked (for both form submit and no-arg actions), to prevent users
+${symbol_pound} causing an error if they do a double click.
+${symbol_pound} Also, whether to show an indicator alongside the button.
+${symbol_pound}
+${symbol_pound} This behaviour is enabled by default, but can be disabled using this flag.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.preventDoubleClickForFormSubmit=true
+${symbol_pound}isis.viewer.wicket.preventDoubleClickForNoArgAction=true
+${symbol_pound}isis.viewer.wicket.useIndicatorForFormSubmit=true
+${symbol_pound}isis.viewer.wicket.useIndicatorForNoArgAction=true
+
+
 ${symbol_pound}isis.viewer.wicket.datePicker.minDate=1900-01-01T00:00:00.000Z
 ${symbol_pound}isis.viewer.wicket.datePicker.maxDate=2100-01-01T00:00:00.000Z
 
 ${symbol_pound}isis.viewer.wicket.datePattern=dd-MM-yyyy
 ${symbol_pound}isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
 
-
 ${symbol_pound}isis.viewer.wicket.datePattern=dd/MM/yy
 ${symbol_pound}isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
 

http://git-wip-us.apache.org/repos/asf/isis/blob/acb5c8b2/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 28ab8e4..e6d6158 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Thu Dec 01 10:20:13 GMT 2016
+#Sat Dec 10 12:25:12 GMT 2016
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[2/8] isis git commit: ISIS-1552: doc fix only - reformatting.

Posted by da...@apache.org.
ISIS-1552: doc fix only - reformatting.


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

Branch: refs/heads/master
Commit: 8b46518f14d2c15fae421cce83567208c013acb2
Parents: f325400
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Dec 9 09:01:29 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Dec 9 09:01:29 2016 +0000

----------------------------------------------------------------------
 .../guides/_ugvw_configuration-properties.adoc  | 48 +++++++++++++-------
 1 file changed, 32 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/8b46518f/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
index ea5f3fc..58b9b99 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
@@ -34,17 +34,20 @@ If you prefer you can place all configuration properties into `WEB-INF/isis.prop
 
 |`isis.viewer.wicket.` +
 `ajaxDebugMode`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 | whether the Wicket debug mode should be enabled.
 
 |`isis.viewer.wicket.` +
 `bookmarkedPages`
-| +ve int (`_15_`)
+| +ve int +
+(`_15_`)
 | number of pages to bookmark
 
 |`isis.viewer.wicket.` +
 `breadcrumbs.showChooser`
-| `true`,`false` (`_true_`)
+| `true`,`false` +
+(`_true_`)
 | Whether to show chooser for Breadcrumbs
 
 |`isis.viewer.wicket.` +
@@ -83,12 +86,14 @@ for further details).
 
 |`isis.viewer.wicket.` +
 `disableDependentChoiceAutoSelection`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 | For dependent choices, whether to automatically select the first dependent (eg subcategory) when the parameter on which it depends (category) changes.
 
 |`isis.viewer.wicket.` +
 `disableModalDialogs`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 |No longer supported.
 
 |`isis.viewer.wicket.` +
@@ -101,22 +106,26 @@ for further details).
 
 |`isis.viewer.wicket.` +
 `maxTitleLengthInParentedTables`
-| +ve integer, (`_12_`)
+| +ve integer +
+(`_12_`)
 | See discussion xref:ugvw.adoc#_ugvw_configuration-properties_abbreviating-titles[below].
 
 |`isis.viewer.wicket.` +
 `maxTitleLengthInStandaloneTables`
-| +ve integer, (`_12_`)
+| +ve integer, +
+(`_12_`)
 | See discussion xref:ugvw.adoc#_ugvw_configuration-properties_abbreviating-titles[below].
 
 |`isis.viewer.wicket.` +
 `maxTitleLengthInTables`
-| +ve integer, (`_12_`)
+| +ve integer, +
+(`_12_`)
 | See discussion xref:ugvw.adoc#_ugvw_configuration-properties_abbreviating-titles[below].
 
 |`isis.viewer.wicket.` +
 `regularCase`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 | Ignored for 1.8.0+; in earlier versions forced regular case rather than title case in the UI
 
 |`isis.viewer.wicket.` +
@@ -150,28 +159,33 @@ will have to log in again).
 
 |`isis.viewer.wicket.` +
 `rememberMe.suppress`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 |Whether to suppress "remember me" checkbox on the login page.
 
 
 |`isis.viewer.wicket.` +
 `stripWicketTags`
-| `true`,`false` (`_true_`)
+| `true`,`false` +
+(`_true_`)
 | Whether to force Wicket tags to be stripped in prototype/development mode.  See discussion xref:ugvw.adoc#_ugvw_configuration-properties_stripped-wicket-tags[below].
 
 |`isis.viewer.wicket.` +
 `suppressPasswordReset`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 |If user registration is enabled, whether to suppress the "password reset" link on the login page.  See discussion xref:ugvw.adoc#_ugvw_configuration-properties_suppressing-password-reset[below].
 
 |`isis.viewer.wicket.` +
 `suppressRememberMe`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 |(Deprecated in `1.13.0`, replaced by `rememberMe.suppress`).  Whether to suppress "remember me" checkbox on the login page.
 
 |`isis.viewer.wicket.` +
 `suppressSignUp`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 |If user registration is enabled, whether to suppress the "sign up" link on the login page.  See discussion xref:ugvw.adoc#_ugvw_configuration-properties_suppressing-sign-up[below].
 
 |`isis.viewer.wicket.` +
@@ -188,12 +202,14 @@ will have to log in again).
 
 |`isis.viewer.wicket.` +
 `themes.showChooser`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 | Whether to show chooser for Bootstrap themes.  See discussion xref:ugvw.adoc#_ugvw_configuration-properties_showing-theme-chooser[below]
 
 |`isis.viewer.wicket.` +
 `wicketSourcePlugin`
-| `true`,`false` (`_false_`)
+| `true`,`false` +
+(`_false_`)
 | Whether the Wicketsource plugin should be enabled; by default it is not enabled.
 
 Prior to `1.12.0` this was enabled by default for prototyping (not production).  However it can significantly


[7/8] isis git commit: Merge branch 'maint-1.13.2'

Posted by da...@apache.org.
Merge branch 'maint-1.13.2'


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

Branch: refs/heads/master
Commit: 264f155aa99706d399a95949ca594782cd712e17
Parents: 567962a acb5c8b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Dec 10 12:35:54 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Dec 10 12:35:54 2016 +0000

----------------------------------------------------------------------
 .../guides/_ugvw_configuration-properties.adoc  |  50 ++++-
 .../wicket/viewer/IsisWicketApplication.java    |  12 +-
 .../settings/WicketViewerSettingsDefault.java   |  20 ++
 .../wicket/model/isis/WicketViewerSettings.java |  32 ++-
 .../isis/WicketViewerSettingsAccessor.java      |  26 +++
 .../viewer/wicket/model/models/ActionModel.java |  42 ++--
 .../wicket/model/models/HasExecutingPanel.java  |  24 ++
 .../viewer/wicket/model/models/ScalarModel.java |  13 +-
 .../actions/ActionParametersFormPanel.java      | 128 ++---------
 .../property/PropertyEditFormPanel.java         | 129 ++---------
 .../linkandlabel/ActionLinkFactoryAbstract.java |  74 +++++-
 .../wicket/ui/pages/bootstrap-overrides.css     |  13 +-
 .../isis/viewer/wicket/ui/panels/PanelUtil.java |  11 +
 .../ui/panels/PromptFormPanelAbstract.java      | 225 +++++++++++++++++++
 .../webapp/WEB-INF/viewer_wicket.properties     |  13 ++
 .../webapp/WEB-INF/viewer_wicket.properties     |  23 +-
 16 files changed, 565 insertions(+), 270 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/264f155a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/isis/blob/264f155a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------


[4/8] isis git commit: Merge branch 'maint-1.13.2'

Posted by da...@apache.org.
Merge branch 'maint-1.13.2'


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

Branch: refs/heads/master
Commit: 567962a967c37d9ae6aaff8c4a6e56811292be54
Parents: f057d29 bca9bfa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Dec 9 09:09:07 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Dec 9 09:09:07 2016 +0000

----------------------------------------------------------------------
 .../guides/_ugvw_configuration-properties.adoc  | 53 ++++++++++++++------
 .../wicket/viewer/IsisWicketApplication.java    |  4 +-
 .../settings/WicketViewerSettingsDefault.java   |  5 ++
 .../wicket/model/isis/WicketViewerSettings.java |  7 ++-
 .../components/scalars/ScalarPanelAbstract.java |  1 -
 .../scalars/ScalarPanelTextFieldAbstract.java   | 40 ++++++++++++++-
 .../webapp/WEB-INF/viewer_wicket.properties     | 10 +++-
 7 files changed, 99 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/567962a9/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/isis/blob/567962a9/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------


[5/8] isis git commit: ISIS-1554: prevents double click on buttons (forms and no-arg actions) with associated wicket viewer settings

Posted by da...@apache.org.
ISIS-1554: prevents double click on buttons (forms and no-arg actions) with associated wicket viewer settings

settings are:
- isPreventDoubleClickForFormSubmit
- isPreventDoubleClickForNoArgAction
- isUseIndicatorForFormSubmit
- isUseIndicatorForNoArgAction

also:
- updated docs
- reduced duplication in PropertyEditFormPanel vs ActionParametersFormPanel


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

Branch: refs/heads/master
Commit: 2447b1f2cf4b9f7828841a85e33cb86f0d1668da
Parents: bca9bfa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Dec 10 10:48:31 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Dec 10 10:48:31 2016 +0000

----------------------------------------------------------------------
 .../guides/_ugvw_configuration-properties.adoc  |  50 ++++-
 .../wicket/viewer/IsisWicketApplication.java    |  12 +-
 .../settings/WicketViewerSettingsDefault.java   |  20 ++
 .../wicket/model/isis/WicketViewerSettings.java |  32 ++-
 .../isis/WicketViewerSettingsAccessor.java      |  26 +++
 .../viewer/wicket/model/models/ActionModel.java |  42 ++--
 .../wicket/model/models/HasExecutingPanel.java  |  24 ++
 .../viewer/wicket/model/models/ScalarModel.java |  13 +-
 .../actions/ActionParametersFormPanel.java      | 128 ++---------
 .../property/PropertyEditFormPanel.java         | 129 ++---------
 .../linkandlabel/ActionLinkFactoryAbstract.java |  74 +++++-
 .../wicket/ui/pages/bootstrap-overrides.css     |  13 +-
 .../isis/viewer/wicket/ui/panels/PanelUtil.java |  11 +
 .../ui/panels/PromptFormPanelAbstract.java      | 225 +++++++++++++++++++
 .../webapp/WEB-INF/viewer_wicket.properties     |  13 ++
 15 files changed, 543 insertions(+), 269 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
index 58b9b99..84628e2 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ugvw_configuration-properties.adoc
@@ -123,6 +123,18 @@ for further details).
 | See discussion xref:ugvw.adoc#_ugvw_configuration-properties_abbreviating-titles[below].
 
 |`isis.viewer.wicket.` +
+`preventDoubleClickForFormSubmit`
+| `true`,`false` +
+(`_true_`)
+| (`1.13.2-SNAPSHOT`) Whether to disable a form submit button after it has been clicked, to prevent users causing an error if they do a double click.
+
+|`isis.viewer.wicket.` +
+`preventDoubleClickForNoArgAction`
+| `true`,`false` +
+(`_true_`)
+| (`1.13.2-SNAPSHOT`) Whether to disable a no-arg action button after it has been clicked, to prevent users causing an error if they do a double click.
+
+|`isis.viewer.wicket.` +
 `regularCase`
 | `true`,`false` +
 (`_false_`)
@@ -130,12 +142,14 @@ for further details).
 
 |`isis.viewer.wicket.` +
 `replaceDisabledTagWithReadonlyTag`
-| `true`,`false` (`_true_`)
+| `true`,`false` +
+(`_true_`)
 | (`1.13.2-SNAPSHOT`) Whether to replace 'disabled' tag with 'readonly' (for link:https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute[w3 spec]-compliant browsers such as for Firefox and Chrome 54+) which prevent copy from 'disabled' fields.
 
 |`isis.viewer.wicket.` +
 `rememberMe.cookieKey`
-| ascii chars (`_isisWicketRememberMe_`)
+| ascii chars +
+(`_isisWicketRememberMe_`)
 |Cookie key holding the (encrypted) 'rememberMe' user/password.  There is generally no need to
 change this.  +
 
@@ -143,19 +157,19 @@ Valid values as per link:http://stackoverflow.com/a/1969339/56880[this StackOver
 
 |`isis.viewer.wicket.` +
 `rememberMe.encryptionKey`
-| any string (a random UUID each time)
+| any string +
+(in prod, a random UUID each time)
 |Encryption key is used to encrypt the rememberMe user/password.  +
 
 Apache Isis leverages link:http://wicket.apache.org[Apache Wicket]'s rememberMe support which holds remembered
 user/passwords in an encrypted cookie.
 
-If a hard-coded and publicly known value were to be used (as was the case prior to `1.13.0`), then it would be
-possible for rememberMe user/password to be intercepted and decrypted, possibly compromising access.  This
-configuration property therefore allows a private key to be specified, baked into the application.
+If a hard-coded and publicly known value were to be used (as was the case prior to `1.13.0`), then it would be possible for rememberMe user/password to be intercepted and decrypted, possibly compromising access.
+This configuration property therefore allows a private key to be specified, baked into the application.
 
-If no value is set then (for safety) a random UUID will be used as the encryption key.  (The net effect of this
-fallback behaviour is that 'rememberMe' will work, but only until the webapp is restarted (after which the end-user
-will have to log in again).
+If no value is set then, in production, a random UUID will be used as the encryption key.
+The net effect of this fallback behaviour is that 'rememberMe' will work, but only until the webapp is restarted (after which the end-user will have to log in again.
+In prototype mode, though, (as of `1.13.2-SNAPSHOT`), a fixed key will still be used; this saves the developer having to login each time.
 
 |`isis.viewer.wicket.` +
 `rememberMe.suppress`
@@ -207,13 +221,25 @@ will have to log in again).
 | Whether to show chooser for Bootstrap themes.  See discussion xref:ugvw.adoc#_ugvw_configuration-properties_showing-theme-chooser[below]
 
 |`isis.viewer.wicket.` +
+`useIndicatorForFormSubmit`
+| `true`,`false` +
+(`_true_`)
+| (`1.13.2-SNAPSHOT`) Whether to show an indicator for a form submit button that it has been clicked.
+
+|`isis.viewer.wicket.` +
+`useIndicatorForNoArgAction`
+| `true`,`false` +
+(`_true_`)
+| (`1.13.2-SNAPSHOT`) Whether to show an indicator for a no-arg action button that it has been clicked.
+
+|`isis.viewer.wicket.` +
 `wicketSourcePlugin`
 | `true`,`false` +
 (`_false_`)
-| Whether the Wicketsource plugin should be enabled; by default it is not enabled.
+| Whether the WicketSource plugin should be enabled; by default it is not enabled.
 
-Prior to `1.12.0` this was enabled by default for prototyping (not production).  However it can significantly
-slow down rendering, hence the introduction of this configuration setting.
+Prior to `1.12.0` this was enabled by default for prototyping (not production).
+However it can significantly slow down rendering, hence the introduction of this configuration setting.
 
 |===
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 6764b94..07002d2 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -80,6 +80,7 @@ import org.apache.isis.schema.utils.ChangesDtoUtils;
 import org.apache.isis.schema.utils.CommandDtoUtils;
 import org.apache.isis.schema.utils.InteractionDtoUtils;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettingsAccessor;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
 import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -137,7 +138,7 @@ import net.ftlines.wicketsource.WicketSource;
  */
 public class IsisWicketApplication
         extends AuthenticatedWebApplication
-        implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor {
+        implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketViewerSettingsAccessor {
 
     private static final long serialVersionUID = 1L;
     
@@ -207,6 +208,10 @@ public class IsisWicketApplication
     @com.google.inject.Inject
     private DeploymentCategory deploymentCategory;
 
+    @com.google.inject.Inject
+    private WicketViewerSettings settings;
+
+
     private boolean determiningConfigurationType;
     private DeploymentTypeWicketAbstract deploymentType;
 
@@ -863,4 +868,9 @@ public class IsisWicketApplication
         return deploymentCategory;
     }
 
+    @Override
+    public WicketViewerSettings getSettings() {
+        return settings;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
index 91ef087..a4cf168 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -75,4 +75,24 @@ public class WicketViewerSettingsDefault implements WicketViewerSettings {
     public boolean isReplaceDisabledTagWithReadonlyTag() {
         return getConfiguration().getBoolean("isis.viewer.wicket.replaceDisabledTagWithReadonlyTag", true);
     }
+
+    @Override
+    public boolean isPreventDoubleClickForFormSubmit() {
+        return getConfiguration().getBoolean("isis.viewer.wicket.preventDoubleClickForFormSubmit", true);
+    }
+
+    @Override
+    public boolean isPreventDoubleClickForNoArgAction() {
+        return getConfiguration().getBoolean("isis.viewer.wicket.preventDoubleClickForNoArgAction", true);
+    }
+
+    @Override
+    public boolean isUseIndicatorForFormSubmit() {
+        return getConfiguration().getBoolean("isis.viewer.wicket.useIndicatorForFormSubmit", true);
+    }
+
+    @Override
+    public boolean isUseIndicatorForNoArgAction() {
+        return getConfiguration().getBoolean("isis.viewer.wicket.useIndicatorForNoArgAction", true);
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
index 0f00912..5e0c2d6 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.model.isis;
 
 import java.io.Serializable;
 
-
 public interface WicketViewerSettings extends Serializable {
 
     /**
@@ -71,4 +70,35 @@ public interface WicketViewerSettings extends Serializable {
      * This behaviour is enabled by default but can be disabled using this flag
      */
     boolean isReplaceDisabledTagWithReadonlyTag();
+
+    /**
+     * Whether to disable a form submit button after it has been clicked, to prevent users causing an error if they
+     * do a double click.
+     *
+     * This behaviour is enabled by default, but can be disabled using this flag.
+     */
+    boolean isPreventDoubleClickForFormSubmit();
+
+    /**
+     * Whether to disable a no-arg action button after it has been clicked, to prevent users causing an error if they
+     * do a double click.
+     *
+     * This behaviour is enabled by default, but can be disabled using this flag.
+     */
+    boolean isPreventDoubleClickForNoArgAction();
+
+    /**
+     * Whether to show an indicator for a form submit button that it has been clicked.
+     *
+     * This behaviour is enabled by default, but can be disabled using this flag.
+     */
+    boolean isUseIndicatorForFormSubmit();
+
+    /**
+     * Whether to show an indicator for a no-arg action button that it has been clicked.
+     *
+     * This behaviour is enabled by default, but can be disabled using this flag.
+     */
+    boolean isUseIndicatorForNoArgAction();
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettingsAccessor.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettingsAccessor.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettingsAccessor.java
new file mode 100644
index 0000000..10a8e0f
--- /dev/null
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettingsAccessor.java
@@ -0,0 +1,26 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.isis;
+
+public interface WicketViewerSettingsAccessor {
+
+    WicketViewerSettings getSettings();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 8c1f156..420cfc9 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -19,10 +19,31 @@
 
 package org.apache.isis.viewer.wicket.model.models;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import com.google.common.base.Throwables;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
+import org.apache.wicket.request.http.handler.RedirectRequestHandler;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+import org.apache.wicket.util.resource.StringResourceStream;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -52,32 +73,13 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
-import org.apache.wicket.request.http.handler.RedirectRequestHandler;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.util.resource.AbstractResourceStream;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.StringResourceStream;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * Models an action invocation, either the gathering of arguments for the
  * action's {@link Mode#PARAMETERS parameters}, or the handling of the
  * {@link Mode#RESULTS results} once invoked.
  */
-public class ActionModel extends BookmarkableModel<ObjectAdapter> {
+public class ActionModel extends BookmarkableModel<ObjectAdapter> implements HasExecutingPanel {
 
     private static final long serialVersionUID = 1L;
     

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasExecutingPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasExecutingPanel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasExecutingPanel.java
new file mode 100644
index 0000000..2d0826f
--- /dev/null
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasExecutingPanel.java
@@ -0,0 +1,24 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.models;
+
+public interface HasExecutingPanel  {
+    ExecutingPanel getExecutingPanel();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 304604f..755da1b 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -19,7 +19,13 @@
 
 package org.apache.isis.viewer.wicket.model.models;
 
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import com.google.common.collect.Lists;
+
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
@@ -49,11 +55,6 @@ import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
 import org.apache.isis.viewer.wicket.model.mementos.SpecUtils;
 
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Represents a scalar of an entity, either a {@link Kind#PROPERTY property} or
  * a {@link Kind#PARAMETER parameter}.
@@ -62,7 +63,7 @@ import java.util.List;
  * Is the backing model to each of the fields that appear in forms (for entities
  * or action dialogs).
  */
-public class ScalarModel extends EntityModel implements LinksProvider {
+public class ScalarModel extends EntityModel implements LinksProvider,HasExecutingPanel {
 
     private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/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 dbda8ad..f05caa6 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
@@ -21,100 +21,71 @@ package org.apache.isis.viewer.wicket.ui.components.actions;
 
 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;
-import org.apache.wicket.event.Broadcast;
 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.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;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
-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.ExecutingPanel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.isis.viewer.wicket.ui.panels.PromptFormPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditFormPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
-import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormFeedbackPanel;
-import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
-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 de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
-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
  * invocation.
  */
-public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
+public class ActionParametersFormPanel extends PromptFormPanelAbstract<ActionModel> {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String ID_OK_BUTTON = "okButton";
-    private static final String ID_CANCEL_BUTTON = "cancelButton";
     private static final String ID_ACTION_PARAMETERS = "parameters";
 
-    private final ExecutingPanel executingPanel;
-
     public ActionParametersFormPanel(final String id, final ActionModel model) {
         super(id, model);
-
-        Ensure.ensureThatArg(model.getExecutingPanel(), is(not(nullValue())));
-
-        this.executingPanel = model.getExecutingPanel();
         buildGui();
     }
 
     private void buildGui() {
         ActionModel model = getModel();
-        // in case previously used, eg prompt displayed then cancelled
-        model.clearArguments();
-        
-        add(new ActionParameterForm("inputForm", model));
+        model.clearArguments();  // in case previously used, eg prompt displayed then cancelled
+        add(new ActionParameterForm("inputForm", this, model));
     }
 
-    class ActionParameterForm extends Form<ObjectAdapter> implements ScalarModelSubscriber  {
+    class ActionParameterForm extends PropertyEditFormPanel.FormAbstract<ActionModel> implements ScalarModelSubscriber  {
 
         private static final long serialVersionUID = 1L;
 
-        private static final String ID_FEEDBACK = "feedback";
-        
-        private final List<ScalarPanelAbstract> paramPanels = Lists.newArrayList();
-
-        public ActionParameterForm(final String id, final ActionModel actionModel) {
-            super(id, actionModel);
 
-            setOutputMarkupId(true); // for ajax button
-            
-            addParameters();
-
-            FormFeedbackPanel formFeedback = new FormFeedbackPanel(ID_FEEDBACK);
-            addOrReplace(formFeedback);
-            addButtons();
+        public ActionParameterForm(
+                final String id,
+                final PromptFormPanelAbstract<?> parentPanel,
+                final ActionModel actionModel) {
+            super(id, parentPanel, actionModel);
         }
 
         private ActionModel getActionModel() {
             return (ActionModel) super.getModel();
         }
 
-        private void addParameters() {
+        @Override
+        protected void addParameters() {
             final ActionModel actionModel = getActionModel();
             List<ActionParameterMemento> parameterMementos = actionModel.primeArgumentModels();
             
@@ -138,69 +109,15 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
             }
         }
 
-
-        private void addButtons() {
-            AjaxButton okButton = new AjaxButton(ID_OK_BUTTON, new ResourceModel("okLabel")) {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                public void onSubmit(AjaxRequestTarget target, Form<?> form) {
-                    boolean succeeded = executingPanel.executeAndProcessResults(target, form);
-                    if(succeeded) {
-                        // the Wicket ajax callbacks will have just started to hide the veil
-                        // we now show it once more, so that a veil continues to be shown until the
-                        // new page is rendered.
-                        target.appendJavaScript("isisShowVeil();\n");
-
-                        send(getPage(), Broadcast.EXACT, new IsisActionCompletedEvent(getActionModel(), target, form));
-
-                        target.add(form);
-                    } else {
-                        //if (actionPromptIfAny != null) {
-                            
-                            final StringBuilder builder = new StringBuilder();
-
-                            // ensure any jGrowl errors are shown
-                            // (normally would be flushed when traverse to next page).
-                            String errorMessagesIfAny = JGrowlUtil.asJGrowlCalls(getAuthenticationSession().getMessageBroker());
-                            builder.append(errorMessagesIfAny);
-
-                            // append the JS to the response. 
-                            String buf = builder.toString();
-                            target.appendJavaScript(buf);
-                            target.add(form);
-                        //}
-                    }
-                };
-
-                /**
-                 * On validation error
-                 */
-                @Override
-                protected void onError(AjaxRequestTarget target, Form<?> form) {
-                    super.onError(target, form);
-                    target.add(form);
-                }
-            };
-            okButton.add(new JGrowlBehaviour());
-            setDefaultButton(okButton);
-            add(okButton);
+        @Override
+        protected void configureButtons(final AjaxButton okButton) {
             applyAreYouSure(okButton);
+        }
 
-            AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON, new ResourceModel("cancelLabel")) {
-                private static final long serialVersionUID = 1L;
 
-                @Override
-                public void onSubmit(final AjaxRequestTarget target, Form<?> form) {
-                    final ActionPrompt actionPromptIfAny = ActionPromptProvider.Util.getFrom(ActionParametersFormPanel.this).getActionPrompt();
-                    if(actionPromptIfAny != null) {
-                        actionPromptIfAny.closePrompt(target);
-                    }
-                }
-            };
-            // so can submit with invalid content (eg mandatory params missing)
-            cancelButton.setDefaultFormProcessing(false);
-            add(cancelButton);
+        @Override
+        protected Object newCompletedEvent(final AjaxRequestTarget target, final Form<?> form) {
+            return new IsisActionCompletedEvent(getActionModel(), target, form);
         }
 
         /**
@@ -260,13 +177,6 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
             // get trampled over (ISIS-629).
         }
         
-        @Override
-        public void onError(AjaxRequestTarget target, ScalarModelProvider provider) {
-            if(provider instanceof Component) {
-                // ensure that any feedback error associated with the providing component is shown.
-                target.add((Component)provider); 
-            }
-        }
 
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
index ef21a30..107b7e0 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
@@ -21,89 +21,55 @@ package org.apache.isis.viewer.wicket.ui.components.property;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.ResourceModel;
 
-import org.apache.isis.core.commons.authentication.MessageBroker;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.hints.IsisPropertyEditCompletedEvent;
-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.ExecutingPanel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
-import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormFeedbackPanel;
-import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
-import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
+import org.apache.isis.viewer.wicket.ui.panels.PromptFormPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 
-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
  * invocation.
  */
-public class PropertyEditFormPanel extends PanelAbstract<ScalarModel> {
+public class PropertyEditFormPanel extends PromptFormPanelAbstract<ScalarModel> {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String ID_OK_BUTTON = "okButton";
-    private static final String ID_CANCEL_BUTTON = "cancelButton";
-
     private static final String ID_PROPERTY = "property";
 
-    private final ExecutingPanel executingPanel;
-
     public PropertyEditFormPanel(final String id, final ScalarModel model) {
         super(id, model);
-
-        Ensure.ensureThatArg(model.getExecutingPanel(), is(not(nullValue())));
-
-        this.executingPanel = model.getExecutingPanel();
-
         buildGui();
     }
 
     private void buildGui() {
         ScalarModel model = getModel();
-
-        add(new PropertyEditForm("inputForm", model));
+        add(new PropertyEditForm("inputForm", this, model));
     }
 
-    class PropertyEditForm extends Form<ObjectAdapter> implements ScalarModelSubscriber  {
+    class PropertyEditForm extends FormAbstract<ScalarModel> implements ScalarModelSubscriber  {
 
         private static final long serialVersionUID = 1L;
 
-        private static final String ID_FEEDBACK = "feedback";
-        
-        private ScalarPanelAbstract propertyPanel = null;
-
-        public PropertyEditForm(final String id, final ScalarModel actionModel) {
-            super(id, actionModel);
-
-            setOutputMarkupId(true); // for ajax button
-            
-            addParameters();
-
-            FormFeedbackPanel formFeedback = new FormFeedbackPanel(ID_FEEDBACK);
-            addOrReplace(formFeedback);
-            addButtons();
+        public PropertyEditForm(
+                final String id,
+                final PromptFormPanelAbstract<?> parentPanel,
+                final ScalarModel propertyModel) {
+            super(id, parentPanel, propertyModel);
         }
 
         private ScalarModel getScalarModel() {
             return (ScalarModel) super.getModel();
         }
 
-        private void addParameters() {
+        @Override
+        protected void addParameters() {
             final ScalarModel scalarModel = getScalarModel();
 
             final WebMarkupContainer container = new WebMarkupContainer(ID_PROPERTY);
@@ -111,7 +77,6 @@ public class PropertyEditFormPanel extends PanelAbstract<ScalarModel> {
 
             final Component component = getComponentFactoryRegistry().addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, scalarModel);
             final ScalarPanelAbstract paramPanel = component instanceof ScalarPanelAbstract ? (ScalarPanelAbstract) component : null;
-            propertyPanel = paramPanel;
             if(paramPanel != null) {
                 paramPanel.setOutputMarkupId(true);
                 paramPanel.notifyOnChange(this);
@@ -119,68 +84,9 @@ public class PropertyEditFormPanel extends PanelAbstract<ScalarModel> {
         }
 
 
-        private void addButtons() {
-            AjaxButton okButton = new AjaxButton(ID_OK_BUTTON, new ResourceModel("okLabel")) {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                public void onSubmit(AjaxRequestTarget target, Form<?> form) {
-                    boolean succeeded = executingPanel.executeAndProcessResults(target, form);
-                    if(succeeded) {
-                        // the Wicket ajax callbacks will have just started to hide the veil
-                        // we now show it once more, so that a veil continues to be shown until the
-                        // new page is rendered.
-                        target.appendJavaScript("isisShowVeil();\n");
-
-                        send(getPage(), Broadcast.EXACT, new IsisPropertyEditCompletedEvent(getScalarModel(), target, form));
-
-                        target.add(form);
-                    } else {
-
-                        final StringBuilder builder = new StringBuilder();
-
-                        // ensure any jGrowl errors are shown
-                        // (normally would be flushed when traverse to next page).
-                        final MessageBroker messageBroker = getIsisSessionFactory().getCurrentSession()
-                                .getAuthenticationSession().getMessageBroker();
-                        String errorMessagesIfAny = JGrowlUtil.asJGrowlCalls(messageBroker);
-                        builder.append(errorMessagesIfAny);
-
-                        // append the JS to the response.
-                        String buf = builder.toString();
-                        target.appendJavaScript(buf);
-                        target.add(form);
-                    }
-                };
-
-                /**
-                 * On validation error
-                 */
-                @Override
-                protected void onError(AjaxRequestTarget target, Form<?> form) {
-                    super.onError(target, form);
-                    target.add(form);
-                }
-            };
-            okButton.add(new JGrowlBehaviour());
-            setDefaultButton(okButton);
-            add(okButton);
-
-            AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON, new ResourceModel("cancelLabel")) {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                public void onSubmit(final AjaxRequestTarget target, Form<?> form) {
-                    final ActionPrompt actionPromptIfAny = ActionPromptProvider.Util.getFrom(PropertyEditFormPanel.this).getActionPrompt();
-                    if(actionPromptIfAny != null) {
-                        actionPromptIfAny.closePrompt(target);
-                    }
-                }
-            };
-            // so can submit with invalid content (eg mandatory params missing)
-            cancelButton.setDefaultFormProcessing(false);
-            add(cancelButton);
-
+        @Override
+        protected Object newCompletedEvent(final AjaxRequestTarget target, final Form<?> form) {
+            return new IsisPropertyEditCompletedEvent(getScalarModel(), target, form);
         }
 
         @Override
@@ -189,13 +95,6 @@ public class PropertyEditFormPanel extends PanelAbstract<ScalarModel> {
 
         }
 
-        public void onError(AjaxRequestTarget target, ScalarModelProvider provider) {
-            if(provider instanceof Component) {
-                // ensure that any feedback error associated with the providing component is shown.
-                target.add((Component)provider); 
-            }
-        }
-
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/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 dd0c68d..421ce86 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
@@ -23,6 +23,7 @@ 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.extensions.ajax.markup.html.IndicatingAjaxLink;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.request.IRequestHandler;
@@ -30,6 +31,8 @@ import org.apache.wicket.request.IRequestHandler;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettingsAccessor;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
@@ -41,6 +44,7 @@ import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptHead
 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.panels.PanelUtil;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
@@ -61,7 +65,61 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
         // TODO: see https://issues.apache.org/jira/browse/ISIS-1264 for further detail.
         final AjaxDeferredBehaviour ajaxDeferredBehaviour = determineDeferredBehaviour(action, actionModel);
 
-        final AbstractLink link = new AjaxLink<Object>(linkId) {
+        // TODO: could remove some of the copy-n-paste between IndicatingAjaxLink and AjaxLink
+        final AbstractLink link = getSettings().isUseIndicatorForNoArgAction()
+                ? new IndicatingAjaxLink<Object>(linkId) {
+                    private static final long serialVersionUID = 1L;
+
+                    @Override
+                    public void onClick(AjaxRequestTarget target) {
+
+                        if (ajaxDeferredBehaviour != null) {
+                            ajaxDeferredBehaviour.initiate(target);
+                        }
+                        else {
+                            final ActionPromptProvider promptProvider = ActionPromptProvider.Util.getFrom(getPage());
+                            final ActionPrompt actionPrompt = promptProvider.getActionPrompt();
+                            final ActionPromptHeaderPanel titlePanel =
+                                    PersistenceSession.ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
+                                    new Callable<ActionPromptHeaderPanel>() {
+                                        @Override
+                                        public ActionPromptHeaderPanel call() throws Exception {
+                                            final String titleId = actionPrompt.getTitleId();
+                                            return new ActionPromptHeaderPanel(titleId, actionModel);
+                                        }
+                                    });
+                            final ActionPanel actionPanel =
+                                    (ActionPanel) getComponentFactoryRegistry().createComponent(
+                                            ComponentType.ACTION_PROMPT, actionPrompt.getContentId(), actionModel);
+
+                            actionPanel.setShowHeader(false);
+
+                            actionPrompt.setTitle(titlePanel, target);
+                            actionPrompt.setPanel(actionPanel, target);
+                            actionPanel.setActionPrompt(actionPrompt);
+                            actionPrompt.showPrompt(target);
+                        }
+                    }
+
+                    @Override
+                    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                        super.updateAjaxAttributes(attributes);
+                        if(getSettings().isPreventDoubleClickForNoArgAction()) {
+                            PanelUtil.disableBeforeReenableOnComplete(attributes, this);
+                        }
+
+                        // allow the event to bubble so the menu is hidden after click on an item
+                        attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE);
+                    }
+
+                    @Override
+                    protected void onComponentTag(ComponentTag tag) {
+                        super.onComponentTag(tag);
+
+                        Buttons.fixDisabledState(this, tag);
+                    }
+                } :
+                new AjaxLink<Object>(linkId) {
             private static final long serialVersionUID = 1L;
 
             @Override
@@ -98,6 +156,9 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
             @Override
             protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
                 super.updateAjaxAttributes(attributes);
+                if(getSettings().isPreventDoubleClickForNoArgAction()) {
+                    PanelUtil.disableBeforeReenableOnComplete(attributes, this);
+                }
 
                 // allow the event to bubble so the menu is hidden after click on an item
                 attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE);
@@ -188,9 +249,8 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
         return LinkAndLabel.newLinkAndLabel(objectAdapter, objectAction, link, disabledReasonIfAny, blobOrClob);
     }
 
-    // ////////////////////////////////////////////////////////////
-    // Dependencies
-    // ////////////////////////////////////////////////////////////
+
+    //region > dependencies
 
     protected ComponentFactoryRegistry getComponentFactoryRegistry() {
         return ((ComponentFactoryRegistryAccessor) Application.get()).getComponentFactoryRegistry();
@@ -200,4 +260,10 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
         return ((PageClassRegistryAccessor) Application.get()).getPageClassRegistry();
     }
 
+    protected WicketViewerSettings getSettings() {
+        return ((WicketViewerSettingsAccessor)Application.get()).getSettings();
+    }
+
+    //endregion
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 612eeb3..08d069d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -59,6 +59,10 @@ body {
     filter: alpha(opacity=50);
 }
 
+#veil .text-center {
+    margin-top: 100px;
+}
+
 .table .table td {
     border: none;
 }
@@ -849,4 +853,11 @@ tr.headers th form input {
 .entityHeaderPanel .entityActions ul.additionalLinkList li.additionalLinkItem {
     padding-top: 3px;
     padding-bottom: 7px;
-}
\ No newline at end of file
+}
+
+.propertyEditForm .buttons .wicket-ajax-indicator,
+.actionParametersForm .buttons .wicket-ajax-indicator,
+.additionalLinkList .wicket-ajax-indicator {
+    margin-left: 4px;
+    margin-right: 10px;
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
index 4c7af42..324c593 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
@@ -19,6 +19,10 @@
 package org.apache.isis.viewer.wicket.ui.panels;
 
 import com.google.common.base.Strings;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.CssReferenceHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -68,4 +72,11 @@ public final class PanelUtil {
         }
         return simpleName + string + ".css";
     }
+
+    public static void disableBeforeReenableOnComplete(
+            final AjaxRequestAttributes attributes, final Component ajaxButtonOrLink) {
+        attributes.getAjaxCallListeners().add(new AjaxCallListener()
+                .onBefore("$('#" + ajaxButtonOrLink.getMarkupId() + "').prop('disabled',true);")
+                .onComplete("$('#" + ajaxButtonOrLink.getMarkupId() + "').prop('disabled',false);"));
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
new file mode 100644
index 0000000..c815cb0
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
@@ -0,0 +1,225 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.ui.panels;
+
+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.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+import org.apache.isis.core.commons.ensure.Ensure;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+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.ExecutingPanel;
+import org.apache.isis.viewer.wicket.model.models.HasExecutingPanel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormFeedbackPanel;
+import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
+import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
+
+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
+ * invocation.
+ */
+public abstract class PromptFormPanelAbstract<T extends IModel<?> & HasExecutingPanel> extends PanelAbstract<T> {
+
+    protected final ExecutingPanel executingPanel;
+
+    private static final String ID_OK_BUTTON = "okButton";
+    private static final String ID_CANCEL_BUTTON = "cancelButton";
+
+
+    public PromptFormPanelAbstract(final String id, final T model) {
+        super(id, model);
+        Ensure.ensureThatArg(model.getExecutingPanel(), is(not(nullValue())));
+        this.executingPanel = model.getExecutingPanel();
+    }
+
+    public static abstract class FormAbstract<T extends IModel<?>> extends Form<ObjectAdapter>
+            implements ScalarModelSubscriber {
+
+        protected static final String ID_FEEDBACK = "feedback";
+
+        protected final List<ScalarPanelAbstract> paramPanels = Lists.newArrayList();
+        protected final PromptFormPanelAbstract<?> parentPanel;
+
+        public FormAbstract(final String id, final PromptFormPanelAbstract<?> parentPanel, final IModel<ObjectAdapter> model) {
+            super(id, model);
+            this.parentPanel = parentPanel;
+
+            setOutputMarkupId(true); // for ajax button
+            addParameters();
+
+            FormFeedbackPanel formFeedback = new FormFeedbackPanel(ID_FEEDBACK);
+            addOrReplace(formFeedback);
+
+            AjaxButton okButton = addOkButton();
+            addCancelButton();
+            configureButtons(okButton);
+        }
+
+        protected abstract void addParameters();
+
+        protected AjaxButton addOkButton() {
+            AjaxButton okButton = parentPanel.getSettings().isUseIndicatorForFormSubmit()
+                    ? new IndicatingAjaxButton(ID_OK_BUTTON, new ResourceModel("okLabel")) {
+                        private static final long serialVersionUID = 1L;
+
+                        @Override
+                        public void onSubmit(AjaxRequestTarget target, Form<?> form) {
+                            onSubmitOf(target, form, this, FormAbstract.this.parentPanel);
+                        }
+
+                        @Override
+                        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                            super.updateAjaxAttributes(attributes);
+                            if(parentPanel.getSettings().isPreventDoubleClickForFormSubmit()) {
+                                PanelUtil.disableBeforeReenableOnComplete(attributes, this);
+                            }
+                        }
+
+                        @Override
+                        protected void onError(AjaxRequestTarget target, Form<?> form) {
+                            super.onError(target, form);
+                            target.add(form);
+                        }
+                    }
+                    : new AjaxButton(ID_OK_BUTTON, new ResourceModel("okLabel")) {
+                        private static final long serialVersionUID = 1L;
+
+                        @Override
+                        public void onSubmit(AjaxRequestTarget target, Form<?> form) {
+                            onSubmitOf(target, form, this, FormAbstract.this.parentPanel);
+                        }
+
+                        @Override
+                        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                            super.updateAjaxAttributes(attributes);
+                            if(parentPanel.getSettings().isPreventDoubleClickForFormSubmit()) {
+                                PanelUtil.disableBeforeReenableOnComplete(attributes, this);
+                            }
+                        }
+
+                        @Override
+                        protected void onError(AjaxRequestTarget target, Form<?> form) {
+                            super.onError(target, form);
+                            target.add(form);
+                        }
+                    };
+            okButton.add(new JGrowlBehaviour());
+            setDefaultButton(okButton);
+            add(okButton);
+            return okButton;
+        }
+
+
+        protected void addCancelButton() {
+            AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON, new ResourceModel("cancelLabel")) {
+                private static final long serialVersionUID = 1L;
+
+                @Override
+                public void onSubmit(final AjaxRequestTarget target, Form<?> form) {
+                    final ActionPrompt actionPromptIfAny = ActionPromptProvider.Util.getFrom(parentPanel).getActionPrompt();
+                    if(actionPromptIfAny != null) {
+                        actionPromptIfAny.closePrompt(target);
+                    }
+                }
+            };
+            // so can submit with invalid content (eg mandatory params missing)
+            cancelButton.setDefaultFormProcessing(false);
+
+            add(cancelButton);
+        }
+
+        protected void configureButtons(final AjaxButton okButton) {
+        }
+
+        private void onSubmitOf(
+                final AjaxRequestTarget target,
+                final Form<?> form,
+                final AjaxButton ajaxButton,
+                final PromptFormPanelAbstract<?> parentPanel) {
+            boolean succeeded = parentPanel.executingPanel.executeAndProcessResults(target, form);
+            if(succeeded) {
+                // the Wicket ajax callbacks will have just started to hide the veil
+                // we now show it once more, so that a veil continues to be shown until the
+                // new page is rendered.
+                target.appendJavaScript("isisShowVeil();\n");
+
+                ajaxButton.send(getPage(), Broadcast.EXACT, newCompletedEvent(target, form));
+
+                target.add(form);
+            } else {
+
+                final StringBuilder builder = new StringBuilder();
+
+                // ensure any jGrowl errors are shown
+                // (normally would be flushed when traverse to next page).
+                String errorMessagesIfAny = JGrowlUtil.asJGrowlCalls(parentPanel.getAuthenticationSession().getMessageBroker());
+                builder.append(errorMessagesIfAny);
+
+                // append the JS to the response.
+                String buf = builder.toString();
+                target.appendJavaScript(buf);
+                target.add(form);
+            }
+        }
+
+
+        protected abstract Object newCompletedEvent(
+                final AjaxRequestTarget target,
+                final Form<?> form);
+
+        @Override
+        public void onError(AjaxRequestTarget target, TextFieldValueModel.ScalarModelProvider provider) {
+            if(provider instanceof Component) {
+                // ensure that any feedback error associated with the providing component is shown.
+                target.add((Component)provider);
+            }
+        }
+
+    }
+
+    //region > dependencies
+    @com.google.inject.Inject
+    private WicketViewerSettings settings;
+    protected WicketViewerSettings getSettings() {
+        return settings;
+    }
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/2447b1f2/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index d6f1ff1..44fb49e 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -40,6 +40,19 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=0
 #isis.viewer.wicket.replaceDisabledTagWithReadonlyTag=true
 
 
+#
+# Whether to disable buttons after it has been clicked (for both form submit and no-arg actions), to prevent users
+# causing an error if they do a double click.
+# Also, whether to show an indicator alongside the button.
+#
+# This behaviour is enabled by default, but can be disabled using this flag.
+#
+#isis.viewer.wicket.preventDoubleClickForFormSubmit=true
+#isis.viewer.wicket.preventDoubleClickForNoArgAction=true
+#isis.viewer.wicket.useIndicatorForFormSubmit=true
+#isis.viewer.wicket.useIndicatorForNoArgAction=true
+
+
 #isis.viewer.wicket.datePicker.minDate=1900-01-01T00:00:00.000Z
 #isis.viewer.wicket.datePicker.maxDate=2100-01-01T00:00:00.000Z
 


[3/8] isis git commit: ISIS-1553: returns a fixed encryption key if not running in production

Posted by da...@apache.org.
ISIS-1553: returns a fixed encryption key if not running in production


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

Branch: refs/heads/master
Commit: bca9bfaeab8dfed119170aa9128a0b70828ddd2d
Parents: 8b46518
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Dec 9 09:02:00 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Dec 9 09:02:00 2016 +0000

----------------------------------------------------------------------
 .../apache/isis/viewer/wicket/viewer/IsisWicketApplication.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/bca9bfae/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index c40b7d9..6764b94 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -389,7 +389,9 @@ public class IsisWicketApplication
      * app is restarted.
      */
     protected String defaultEncryptionKeyIfNotConfigured() {
-        return UUID.randomUUID().toString();
+        return getDeploymentCategory().isProduction()
+                ? UUID.randomUUID().toString()
+                : "PrototypingEncryptionKey";
     }
 
     private void log(final Set<String> validationErrors) {


[8/8] isis git commit: ISIS-1538: recreating simpleapp archetype

Posted by da...@apache.org.
ISIS-1538: recreating simpleapp archetype


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

Branch: refs/heads/master
Commit: 15d87eada572d7d4a9a2c7292d865a1b49861b4c
Parents: 264f155
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Dec 10 12:36:14 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Dec 10 12:36:14 2016 +0000

----------------------------------------------------------------------
 .../resources/archetype-resources/application/translations.pot     | 2 +-
 .../resources/archetype-resources/module-simple/translations.pot   | 2 +-
 .../src/test/resources/projects/basic/archetype.properties         | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/15d87ead/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
index 8d801b2..09d9f87 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2016-12-01 10:21:17+\n"
+"POT-Creation-Date: 2016-12-10 10:53:28+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"

http://git-wip-us.apache.org/repos/asf/isis/blob/15d87ead/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
index 863a451..42f6074 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot
@@ -23,7 +23,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: 2016-12-01 10:20:52+\n"
+"POT-Creation-Date: 2016-12-10 12:24:20+\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"

http://git-wip-us.apache.org/repos/asf/isis/blob/15d87ead/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index b6480d8..8c7c5d1 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Thu Dec 01 10:28:42 GMT 2016
+#Sat Dec 10 12:36:10 GMT 2016
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it