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 2013/12/02 17:53:25 UTC
[2/2] git commit: ISIS-486: action prompts shown in modal dialog.
ISIS-486: action prompts shown in modal dialog.
... now the default, unless disabled using "isis.viewer.wicket.disableModalDialogs" property.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3b6fa937
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3b6fa937
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3b6fa937
Branch: refs/heads/master
Commit: 3b6fa937be26d3c25c07caef66d9916a6a97757e
Parents: 81b200f
Author: Dan Haywood <da...@apache.org>
Authored: Mon Dec 2 16:53:13 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Mon Dec 2 16:53:13 2013 +0000
----------------------------------------------------------------------
.../wicket/viewer/IsisWicketApplication.java | 6 +-
.../wicket/model/models/ActionExecutor.java | 3 +-
.../viewer/wicket/model/models/ActionModel.java | 21 ++++-
.../wicket/model/models/ActionPrompt.java | 41 ++++++++++
.../models/ActionPromptModalWindowProvider.java | 38 ---------
.../model/models/ActionPromptProvider.java | 37 +++++++++
.../model/models/ApplicationActionsModel.java | 6 +-
.../actionprompt/ActionPromptModalWindow.java | 82 +++++++++++++++++++
.../ui/components/actions/ActionPanel.java | 54 ++++++------
.../actions/ActionParametersFormPanel.html | 7 --
.../actions/ActionParametersFormPanel.java | 75 +++++++++++++----
.../ui/components/actions/spinning-icon.gif | Bin 5266 -> 0 bytes
.../additionallinks/EntityActionUtil.java | 4 +-
.../cssmenu/AppActionsCssMenuFactory.java | 4 +-
.../cssmenu/AppActionsCssMenuLinkFactory.java | 4 +-
.../components/collection/CollectionPanel.java | 13 +--
.../ajaxtable/BulkActionsLinkFactory.java | 4 +-
.../CollectionContentsAsAjaxTablePanel.java | 16 ++--
.../entity/EntityActionLinkFactory.java | 4 +-
.../entity/header/EntityHeaderPanel.java | 4 +-
.../properties/EntityPropertiesPanel.html | 8 --
.../entity/properties/spinning-icon.gif | Bin 2693 -> 0 bytes
.../components/scalars/ScalarPanelAbstract.java | 4 +-
.../widgets/cssmenu/ActionLinkFactory.java | 4 +-
.../cssmenu/ActionLinkFactoryAbstract.java | 27 +++---
.../widgets/cssmenu/CssMenuBuilder.java | 12 +--
.../components/widgets/cssmenu/CssMenuItem.java | 6 +-
.../viewer/wicket/ui/errors/JGrowlUtil.java | 6 +-
.../viewer/wicket/ui/pages/PageAbstract.css | 51 +++++++-----
.../viewer/wicket/ui/pages/PageAbstract.html | 9 ++
.../viewer/wicket/ui/pages/PageAbstract.java | 37 ++-------
.../ui/pages/actionprompt/ActionPromptPage.html | 2 +-
.../wicket/ui/pages/entity/EntityPage.java | 2 +-
.../ui/pages/jquery.isis.wicket.viewer.js | 34 ++++++--
.../viewer/wicket/ui/pages/spinning-icon.gif | Bin 0 -> 2693 bytes
.../wicket/ui/fixtures/SystemFixtures.java | 4 +-
.../dom/src/main/java/dom/todo/ToDoItems.java | 4 +-
.../webapp/WEB-INF/viewer_wicket.properties | 5 +-
.../webapp/WEB-INF/viewer_wicket.properties | 1 +
39 files changed, 407 insertions(+), 232 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index d5610f3..9090864 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -265,9 +265,9 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
}
}
- private void mountPage(final String mountPath, final PageType entity) {
- final Class<? extends Page> entityPageClass = this.pageClassRegistry.getPageClass(entity);
- mount(new MountedMapper(mountPath, entityPageClass));
+ private void mountPage(final String mountPath, final PageType pageType) {
+ final Class<? extends Page> pageClass = this.pageClassRegistry.getPageClass(pageType);
+ mount(new MountedMapper(mountPath, pageClass));
}
private void buildCssBundle() {
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionExecutor.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionExecutor.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionExecutor.java
index 729055e..d634262 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionExecutor.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionExecutor.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.model.models;
import java.io.Serializable;
-import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Form;
@@ -31,6 +30,6 @@ import org.apache.wicket.markup.html.form.Form;
*/
public interface ActionExecutor extends Serializable {
- void executeActionAndProcessResults(AjaxRequestTarget target, Form<?> feedbackForm);
+ boolean executeActionAndProcessResults(AjaxRequestTarget target, Form<?> feedbackForm);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 693e4ea..a84c005 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -27,7 +27,6 @@ import java.util.regex.Pattern;
import com.google.common.collect.Maps;
-import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.isis.applib.Identifier;
@@ -250,6 +249,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
private Map<Integer, ScalarModel> arguments = Maps.newHashMap();
private ActionExecutor executor;
+
private ActionModel(final PageParameters pageParameters) {
this(newObjectAdapterMementoFrom(pageParameters), newActionMementoFrom(pageParameters), actionModeFrom(pageParameters));
@@ -408,6 +408,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
// from getObject()/reExecute
detach(); // force re-execute
+ // TODO: think we need another field to determine if args have been populated.
final ObjectAdapter results = executeAction();
this.actionMode = Mode.RESULTS;
@@ -450,6 +451,8 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
return arguments;
}
+
+
public ActionExecutor getExecutor() {
return executor;
}
@@ -466,6 +469,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
for (ScalarModel argumentModel : arguments.values()) {
argumentModel.setObject((ObjectAdapter)null);
}
+ this.actionMode = determineMode(actionMemento.getAction());
}
/**
@@ -479,7 +483,19 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
return bookmarkPolicy.value() == BookmarkPolicy.AS_ROOT && safeSemantics;
}
+
+ // //////////////////////////////////////
+
+ private ActionPrompt actionPrompt;
+ public void setActionPrompt(ActionPrompt actionPrompt) {
+ this.actionPrompt = actionPrompt;
+ }
+
+ public ActionPrompt getActionPrompt() {
+ return actionPrompt;
+ }
+
//////////////////////////////////////////////////
// Dependencies (from context)
//////////////////////////////////////////////////
@@ -488,7 +504,4 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
return IsisContext.getOidMarshaller();
}
-
-
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPrompt.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPrompt.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPrompt.java
new file mode 100644
index 0000000..f1898a5
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPrompt.java
@@ -0,0 +1,41 @@
+/*
+ * 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;
+
+import java.io.Serializable;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+/**
+ * Decouples the {@link ActionModel} from its (modal window) prompt.
+ */
+public interface ActionPrompt extends Serializable {
+
+ void setPanel(Component component, AjaxRequestTarget target);
+
+ void show(AjaxRequestTarget target);
+
+ String getContentId();
+
+ void close(AjaxRequestTarget target);
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptModalWindowProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptModalWindowProvider.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptModalWindowProvider.java
deleted file mode 100644
index 028c92c..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptModalWindowProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-
-public interface ActionPromptModalWindowProvider {
-
- public static class Util{
-
- public static ActionPromptModalWindowProvider getFrom(Component component) {
- final Page page = component.getPage();
- if(page instanceof ActionPromptModalWindowProvider) {
- final ActionPromptModalWindowProvider provider = (ActionPromptModalWindowProvider) page;
- return provider;
- }
- // else
- return null;
- }}
-
- public ModalWindow getActionPromptModalWindow();
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
new file mode 100644
index 0000000..5ed5151
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
@@ -0,0 +1,37 @@
+/**
+ * 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;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+
+public interface ActionPromptProvider {
+
+ public static class Util{
+
+ public static ActionPromptProvider getFrom(Component component) {
+ final Page page = component.getPage();
+ if(page instanceof ActionPromptProvider) {
+ final ActionPromptProvider provider = (ActionPromptProvider) page;
+ return provider;
+ }
+ // else
+ return null;
+ }}
+
+ public ActionPrompt getActionPrompt();
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ApplicationActionsModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ApplicationActionsModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ApplicationActionsModel.java
index 4bf2b77..824601d 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ApplicationActionsModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ApplicationActionsModel.java
@@ -30,18 +30,18 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
public class ApplicationActionsModel extends ModelAbstract<List<ObjectAdapter>> {
private static final long serialVersionUID = 1L;
- private ActionPromptModalWindowProvider actionPromptModalWindowProvider;
+ private ActionPromptProvider actionPromptModalWindowProvider;
@Override
protected List<ObjectAdapter> load() {
return getServiceAdapters();
}
- public void setActionPromptModalWindowProvider(ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ public void setActionPromptModalWindowProvider(ActionPromptProvider actionPromptModalWindowProvider) {
this.actionPromptModalWindowProvider = actionPromptModalWindowProvider;
}
- public ActionPromptModalWindowProvider getActionPromptModalWindowProvider() {
+ public ActionPromptProvider getActionPromptModalWindowProvider() {
return actionPromptModalWindowProvider;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
new file mode 100644
index 0000000..3878e57
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
@@ -0,0 +1,82 @@
+/**
+ * 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.components.actionprompt;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
+
+public class ActionPromptModalWindow extends ModalWindow implements ActionPrompt {
+
+ private static final long serialVersionUID = 1L;
+
+ public static ActionPromptModalWindow getActionPromptModalWindowIfEnabled(ActionPromptModalWindow modalWindow) {
+ return !isActionPromptModalDialogDisabled() ? modalWindow : null;
+ }
+
+ public static boolean isActionPromptModalDialogDisabled() {
+ return getConfiguration().getBoolean("isis.viewer.wicket.disableModalDialogs", false);
+ }
+
+ private static IsisConfiguration getConfiguration() {
+ return IsisContext.getConfiguration();
+ }
+
+ public static ActionPromptModalWindow newModalWindow(String id) {
+ ActionPromptModalWindow modalWindow = new ActionPromptModalWindow(id);
+ modalWindow.setAutoSize(true);
+ modalWindow.setResizable(false);
+ modalWindow.setCssClassName("w_isis");
+ return modalWindow;
+ }
+
+
+ // //////////////////////////////////////
+
+
+ public ActionPromptModalWindow(String id) {
+ super(id);
+ setMaskType(MaskType.SEMI_TRANSPARENT);
+ }
+
+ @Override
+ public void setPanel(Component component, AjaxRequestTarget target) {
+ setContent(component);
+ }
+
+
+ @Override
+ public void show(AjaxRequestTarget target) {
+
+ // http://stackoverflow.com/questions/8013364/how-to-defeat-browser-dialog-popup-when-calling-wicket-setresponsepage-from-mo/8679946#8679946
+ target.prependJavaScript("Wicket.Window.unloadConfirmation = false;");
+
+ super.show(target);
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("$('.first-field input').focus();\n");
+ builder.append("Wicket.Window.get().autoSizeWindow();\n");
+ target.appendJavaScript(builder.toString());
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
index 05d3135..71b4026 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
@@ -25,8 +25,6 @@ import java.util.List;
import com.google.common.base.Throwables;
import com.google.common.collect.Iterables;
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
@@ -145,41 +143,34 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
/**
* @param feedbackForm - for feedback messages.
+ * @return
*/
@Override
- public void executeActionAndProcessResults(AjaxRequestTarget target, Form<?> feedbackForm) {
+ public boolean executeActionAndProcessResults(AjaxRequestTarget target, Form<?> feedbackForm) {
permanentlyHide(ComponentType.ENTITY_ICON_AND_TITLE);
ObjectAdapter targetAdapter = null;
- boolean clearArgs = true;
try {
- try {
- targetAdapter = getModel().getTargetAdapter();
-
- // no concurrency exception, so continue...
- clearArgs = executeActionOnTargetAndProcessResults(targetAdapter, target, feedbackForm);
-
- } catch (ConcurrencyException ex) {
+ targetAdapter = getModel().getTargetAdapter();
- // second attempt should succeed, because the Oid would have
- // been updated in the attempt
- if (targetAdapter == null) {
- targetAdapter = getModel().getTargetAdapter();
- }
+ // no concurrency exception, so continue...
+ return executeActionOnTargetAndProcessResults(targetAdapter, target, feedbackForm);
-
- // forward onto the target page with the concurrency exception
- ResultType.OBJECT.addResults(this, targetAdapter, ex);
+ } catch (ConcurrencyException ex) {
- getMessageBroker().addWarning(ex.getMessage());
- return;
- }
- } finally {
- if(clearArgs) {
- getActionModel().clearArguments();
+ // second attempt should succeed, because the Oid would have
+ // been updated in the attempt
+ if (targetAdapter == null) {
+ targetAdapter = getModel().getTargetAdapter();
}
+
+ // forward onto the target page with the concurrency exception
+ ResultType.OBJECT.addResults(this, targetAdapter, ex);
+
+ getMessageBroker().addWarning(ex.getMessage());
+ return false;
}
}
@@ -187,11 +178,15 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
* @param target
* @return whether to clear args or not (they aren't if there was a validation exception)
*/
- private boolean executeActionOnTargetAndProcessResults(ObjectAdapter targetAdapter, AjaxRequestTarget target, Form<?> feedbackForm) {
+ private boolean executeActionOnTargetAndProcessResults(
+ final ObjectAdapter targetAdapter,
+ final AjaxRequestTarget target, final Form<?> feedbackForm) {
- // validate the action parameters (if any)
final ActionModel actionModel = getActionModel();
+
+ // validate the action parameters (if any)
final String invalidReasonIfAny = actionModel.getReasonInvalidIfAny();
+
if (invalidReasonIfAny != null) {
raiseWarning(target, feedbackForm, invalidReasonIfAny);
return false;
@@ -213,7 +208,7 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
bookmarkPage(actionModel);
}
- return false;
+ return true;
} catch (RuntimeException ex) {
@@ -229,7 +224,7 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
final ResultType resultType = ResultType.determineFor(null);
resultType.addResults(this, null);
}
-
+
return false;
}
@@ -256,7 +251,6 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
// there's no need to abort the transaction, it will have already been done
// (in IsisTransactionManager#executeWithinTransaction(...)).
-
}
return recognizedErrorIfAny;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
index a716300..4cc1e56 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
@@ -31,13 +31,6 @@
<div class="buttons">
<input type="submit" wicket:id="okButton" value="OK" class="ok"/>
<input type="submit" wicket:id="cancelButton" value="Cancel" class="cancel"/>
- <div id="veil">
- <div class="imgHolder">
- <wicket:link>
- <img src="/images/spinning-icon.gif"/>
- </wicket:link>
- </div>
- </div>
</div>
</fieldset>
</form>
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index c22f08f..5b5d012 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -25,40 +25,36 @@ import static org.hamcrest.CoreMatchers.nullValue;
import java.util.List;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
+import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import org.apache.wicket.Component;
-import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.model.IModel;
import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.commons.lang.ObjectExtensions;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.runtime.system.context.IsisContext;
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.models.ActionExecutor;
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.ScalarModel;
-import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel.ResultType;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
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.pages.PageAbstract;
+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 org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -76,6 +72,7 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
private static final String ID_ACTION_PARAMETERS = "parameters";
private final ActionExecutor actionExecutor;
+ private final ActionPrompt actionPromptIfAny;
public ActionParametersFormPanel(final String id, final ActionModel model) {
super(id, model);
@@ -83,6 +80,7 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
Ensure.ensureThatArg(model.getExecutor(), is(not(nullValue())));
this.actionExecutor = model.getExecutor();
+ this.actionPromptIfAny = model.getActionPrompt();
buildGui();
}
@@ -160,29 +158,72 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
- actionExecutor.executeActionAndProcessResults(target, form);
+ boolean succeeded = actionExecutor.executeActionAndProcessResults(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");
+ } 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(IsisContext.getMessageBroker());
+ builder.append(errorMessagesIfAny);
+
+ // resize, to show any feedback messages.
+ builder.append("Wicket.Window.get().autoSizeWindow();\n");
+
+ // 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);
+ if(actionPromptIfAny != null) {
+ // resize, to show any feedback messages.
+ target.appendJavaScript("Wicket.Window.get().autoSizeWindow();");
+ }
+ target.add(form);
+ }
};
+ okButton.add(new JGrowlBehaviour());
add(okButton);
- Button cancelButton = new Button(ID_CANCEL_BUTTON) {
+
+ AjaxButton cancelButton = new AjaxButton(ID_CANCEL_BUTTON) {
private static final long serialVersionUID = 1L;
@Override
- public void onSubmit() {
- // no-op works fine for prompt modal dialog, but need to do something else if modal dialog disabled
+ public void onSubmit(final AjaxRequestTarget target, Form<?> form) {
+ if(actionPromptIfAny != null) {
+ getActionModel().clearArguments();
+ actionPromptIfAny.close(target);
+ }
};
};
+ // so can submit with invalid content (eg mandatory params missing)
+ cancelButton.setDefaultFormProcessing(false);
add(cancelButton);
// TODO: hide cancel button if dialogs disabled, as not yet implemented.
- if(!PageAbstract.isActionPromptModalDialogEnabled()) {
+ if(ActionPromptModalWindow.isActionPromptModalDialogDisabled()) {
cancelButton.setVisible(false);
}
}
-
private List<ActionParameterMemento> buildParameterMementos(final List<ObjectActionParameter> parameters) {
- final List<ActionParameterMemento> parameterMementoList = Lists.transform(parameters, MementoFunctions.fromActionParameter());
+ final List<ActionParameterMemento> parameterMementoList = Lists.transform(parameters, ObjectAdapterMemento.Functions.fromActionParameter());
// we copy into a new array list otherwise we get lazy evaluation =
// reference to a non-serializable object
return Lists.newArrayList(parameterMementoList);
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/spinning-icon.gif
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/spinning-icon.gif b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/spinning-icon.gif
deleted file mode 100644
index 75e3b1e..0000000
Binary files a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/spinning-icon.gif and /dev/null differ
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
index bd14335..03632d7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.components.entity.EntityActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactory;
@@ -61,7 +61,7 @@ public final class EntityActionUtil {
public static List<LinkAndLabel> entityActions(
final EntityModel entityModel,
final ObjectAssociation association,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final ObjectSpecification adapterSpec = entityModel.getTypeOfSpecification();
final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
final ObjectAdapterMemento adapterMemento = entityModel.getObjectAdapterMemento();
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
index ca875aa..ddf0f32 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.progmodel.facets.actions.notinservicemenu.NotInServiceMenuFacet;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.ApplicationActionsModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
@@ -121,7 +121,7 @@ public class AppActionsCssMenuFactory extends ComponentFactoryAbstract {
private List<CssMenuItem> buildMenuItems(
final List<String> serviceNamesInOrder,
final Map<String, List<LogicalServiceAction>> serviceActionsByName,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final List<CssMenuItem> menuItems = Lists.newArrayList();
for (String serviceName : serviceNamesInOrder) {
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
index 5298364..ebe5eb7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChec
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactoryAbstract;
class AppActionsCssMenuLinkFactory extends ActionLinkFactoryAbstract {
@@ -36,7 +36,7 @@ class AppActionsCssMenuLinkFactory extends ActionLinkFactoryAbstract {
@Override
public LinkAndLabel newLink(
final ObjectAdapterMemento adapterMemento, final ObjectAction action, final String linkId,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
ObjectAdapter objectAdapter = adapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
index 671e0c8..fc0e893 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
@@ -30,10 +30,11 @@ import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.additionallinks.EntityActionUtil;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
@@ -43,7 +44,7 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
* Panel for rendering entity collection; analogous to (any concrete subclass
* of) {@link ScalarPanelAbstract}.
*/
-public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implements ActionPromptModalWindowProvider {
+public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implements ActionPromptProvider {
private static final long serialVersionUID = 1L;
@@ -123,13 +124,13 @@ public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implem
// ActionPromptModalWindowProvider
// ///////////////////////////////////////////////////////////////////
- private ModalWindow actionPromptModalWindow;
- public ModalWindow getActionPromptModalWindow() {
- return PageAbstract.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
+ private ActionPromptModalWindow actionPromptModalWindow;
+ public ActionPromptModalWindow getActionPrompt() {
+ return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
}
private void addActionPromptModalWindow() {
- this.actionPromptModalWindow = PageAbstract.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
+ this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
addOrReplace(actionPromptModalWindow);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
index ffdc949..0b5feb5 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
@@ -47,7 +47,7 @@ import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
import org.apache.isis.viewer.wicket.model.util.ObjectAdapterFunctions;
@@ -73,7 +73,7 @@ final class BulkActionsLinkFactory implements ActionLinkFactory {
final ObjectAdapterMemento serviceAdapterMemento,
final ObjectAction objectAction,
final String linkId,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final ActionMemento actionMemento = new ActionMemento(objectAction);
final AbstractLink link = new Link<Object>(linkId) {
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index ec22d77..ce34577 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -53,8 +53,9 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.common.SelectionHandler;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.collection.CollectionCountProvider;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ColumnAbstract;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterPropertyColumn;
@@ -63,14 +64,13 @@ import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuBuilder;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuPanel;
-import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
/**
* {@link PanelAbstract Panel} that represents a {@link EntityCollectionModel
* collection of entity}s rendered using {@link AjaxFallbackDefaultDataTable}.
*/
-public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider, ActionPromptModalWindowProvider {
+public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider, ActionPromptProvider {
private static final Predicate<ObjectAction> BULK = Filters.asPredicate(ObjectAction.Filters.bulk());
@@ -144,7 +144,7 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
private void buildEntityActionsGui(
final List<ObjectAction> bulkActions,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final EntityCollectionModel model = getModel();
if(bulkActions.isEmpty() || model.isParented()) {
@@ -278,13 +278,13 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
// ActionPromptModalWindowProvider
// ///////////////////////////////////////////////////////////////////
- private ModalWindow actionPromptModalWindow;
- public ModalWindow getActionPromptModalWindow() {
- return PageAbstract.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
+ private ActionPromptModalWindow actionPromptModalWindow;
+ public ActionPromptModalWindow getActionPrompt() {
+ return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
}
private void addActionPromptModalWindow() {
- this.actionPromptModalWindow = PageAbstract.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
+ this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
addOrReplace(actionPromptModalWindow);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
index e8c5a0e..ebf69c8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.ActionLinkFactoryAbstract;
@@ -53,7 +53,7 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryAbstract {
}
@Override
- public LinkAndLabel newLink(final ObjectAdapterMemento adapterMemento, final ObjectAction action, final String linkId, final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ public LinkAndLabel newLink(final ObjectAdapterMemento adapterMemento, final ObjectAction action, final String linkId, final ActionPromptProvider actionPromptModalWindowProvider) {
final ObjectAdapter adapter = adapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
final Boolean persistent = adapter.representsPersistent();
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
index 55fd23f..5d5ea6c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -111,7 +111,7 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> implements Act
if(!topLevelActions.isEmpty()) {
final CssMenuBuilder cssMenuBuilder = new CssMenuBuilder(adapterMemento, getServiceAdapters(), topLevelActions, linkFactory);
- final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_ENTITY_ACTIONS, "Actions", ActionPromptModalWindowProvider.Util.getFrom(this));
+ final CssMenuPanel cssMenuPanel = cssMenuBuilder.buildPanel(ID_ENTITY_ACTIONS, "Actions", ActionPromptProvider.Util.getFrom(this));
this.addOrReplace(cssMenuPanel);
} else {
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
index cf53fdc..32eb15a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
@@ -39,14 +39,6 @@
<input type="submit" class="edit" wicket:id="edit"/>
<input type="submit" class="ok" wicket:id="ok"/>
<input type="submit" class="cancel" wicket:id="cancel"/>
-
- <div id="veil" style="position:fixed;">
- <div class="imgHolder">
- <wicket:link>
- <img src="/images/spinning-icon.gif"/>
- </wicket:link>
- </div>
- </div>
</div>
</div>
<div wicket:id="middleColumn">
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/spinning-icon.gif
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/spinning-icon.gif b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/spinning-icon.gif
deleted file mode 100644
index 0e2b686..0000000
Binary files a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/spinning-icon.gif and /dev/null differ
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 86d0946..898da32 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -241,7 +241,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
if(scalarModel.getKind() == ScalarModel.Kind.PROPERTY) {
final ObjectAdapterMemento parentMemento = scalarModel.getParentObjectAdapterMemento();
final EntityModel parentEntityModel = new EntityModel(parentMemento);
- final ActionPromptModalWindowProvider provider = ActionPromptModalWindowProvider.Util.getFrom(this);
+ final ActionPromptProvider provider = ActionPromptProvider.Util.getFrom(this);
entityActions = EntityActionUtil.entityActions(parentEntityModel, scalarModel.getPropertyMemento().getProperty(), provider);
} else {
entityActions = null;
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactory.java
index 2fbb784..a13db85 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactory.java
@@ -24,9 +24,9 @@ import java.io.Serializable;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
public interface ActionLinkFactory extends Serializable {
- LinkAndLabel newLink(ObjectAdapterMemento adapter, ObjectAction noAction, String linkId, ActionPromptModalWindowProvider actionPromptModalWindowProvider);
+ LinkAndLabel newLink(ObjectAdapterMemento adapter, ObjectAction noAction, String linkId, ActionPromptProvider actionPromptModalWindowProvider);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
index a25e267..19f244f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
@@ -36,11 +36,14 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+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.PageType;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
+import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -60,7 +63,7 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
/**
* Either creates a link for the action be rendered in a {@link ModalWindow}, or (if none can be
- * {@link ActionPromptModalWindowProvider#getActionPromptModalWindow() provided}, or creates a link to
+ * {@link ActionPromptProvider#getActionPrompt() provided}, or creates a link to
* the {@link ActionPromptPage} (ie the {@link PageClassRegistry registered page} for
* {@link PageType#ACTION_PROMPT action}s).
*
@@ -71,27 +74,25 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
protected AbstractLink newLink(
final String linkId,
final ObjectAdapter objectAdapter, final ObjectAction action,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptProvider) {
- final ModalWindow modalWindow = actionPromptModalWindowProvider.getActionPromptModalWindow();
- if(modalWindow != null) {
+ final ActionPrompt actionPrompt = actionPromptProvider.getActionPrompt();
+ if(actionPrompt != null) {
final ActionModel actionModel = ActionModel.create(objectAdapter, action);
+ actionModel.setActionPrompt(actionPrompt);
AjaxLink<Object> link = new AjaxLink<Object>(linkId) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
- final Component actionPromptPanel =
- getComponentFactoryRegistry().createComponent(
- ComponentType.ACTION_PROMPT, modalWindow.getContentId(), actionModel);
+ final ActionPanel actionPromptPanel =
+ (ActionPanel) getComponentFactoryRegistry().createComponent(
+ ComponentType.ACTION_PROMPT, actionPrompt.getContentId(), actionModel);
- modalWindow.setTitle(actionModel.getTitle());
- modalWindow.setContent(actionPromptPanel);
+ actionPrompt.setPanel(actionPromptPanel, target);
+ actionPrompt.show(target);
- // http://stackoverflow.com/questions/8013364/how-to-defeat-browser-dialog-popup-when-calling-wicket-setresponsepage-from-mo/8679946#8679946
- target.prependJavaScript("Wicket.Window.unloadConfirmation = false;");
- modalWindow.show(target);
}
};
link.add(new CssClassAppender("noVeil"));
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
index 5e87cee..4bebb5e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.progmodel.facets.actions.bulk.BulkFacet;
import org.apache.isis.core.progmodel.facets.actions.notcontributed.NotContributedFacet;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuItem.Builder;
import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuPanel.Style;
@@ -71,7 +71,7 @@ public class CssMenuBuilder {
public CssMenuPanel buildPanel(
final String wicketId, final String rootName,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final CssMenuItem findUsing = CssMenuItem.newMenuItem(rootName).build();
addMenuItems(findUsing, actions, actionPromptModalWindowProvider);
final CssMenuPanel cssMenuPanel = new CssMenuPanel(wicketId, Style.SMALL, Collections.singletonList(findUsing));
@@ -81,7 +81,7 @@ public class CssMenuBuilder {
private void addMenuItems(
final CssMenuItem parent,
final List<ObjectAction> actions,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
addMenuItemsForActionsOfType(parent, actions, ActionType.USER, actionPromptModalWindowProvider);
if ( isExploring() || isPrototyping()) {
addMenuItemsForActionsOfType(parent, actions, ActionType.EXPLORATION, actionPromptModalWindowProvider);
@@ -113,7 +113,7 @@ public class CssMenuBuilder {
final CssMenuItem parent,
final List<ObjectAction> actions,
final ActionType type,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final Collection<ObjectAction> filterActionsOfType = Collections2.filter(actions, Filters.asPredicate(ObjectAction.Filters.ofType(type)));
for (final ObjectAction action : filterActionsOfType) {
addMenuItem(parent, action, actionPromptModalWindowProvider);
@@ -123,14 +123,14 @@ public class CssMenuBuilder {
private void addMenuItem(
final CssMenuItem parent,
final ObjectAction action,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
addMenuItemForAction(parent, action, actionPromptModalWindowProvider);
}
private void addMenuItemForAction(
final CssMenuItem parent,
final ObjectAction action,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
final NotContributedFacet notContributed = action.getFacet(NotContributedFacet.class);
if (notContributed != null && notContributed.toActions()) {
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
index 15ac0da..e31bd0c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
@@ -52,7 +52,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -269,7 +269,7 @@ public class CssMenuItem implements Serializable {
final ObjectAdapterMemento targetAdapterMemento,
final ObjectAction objectAction,
final ActionLinkFactory cssMenuLinkFactory,
- final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ final ActionPromptProvider actionPromptModalWindowProvider) {
// check visibility
final AuthenticationSession session = getAuthenticationSession();
@@ -347,7 +347,7 @@ public class CssMenuItem implements Serializable {
* Creates a {@link Builder} for a submenu item where the provided {@link ActionLinkFactory} is able to provide the target adapter.
* @param page
*/
- public Builder newSubMenuItem(final ObjectAction objectAction, final ActionLinkFactory cssMenuLinkFactory, final ActionPromptModalWindowProvider actionPromptModalWindowProvider) {
+ public Builder newSubMenuItem(final ObjectAction objectAction, final ActionLinkFactory cssMenuLinkFactory, final ActionPromptProvider actionPromptModalWindowProvider) {
final LinkAndLabel linkAndLabel = cssMenuLinkFactory.newLink(null, objectAction, PageAbstract.ID_MENU_LINK, actionPromptModalWindowProvider);
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
index e049695..8dafd29 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlUtil.java
@@ -41,8 +41,8 @@ public class JGrowlUtil {
return buf.toString();
}
- private static void addJGrowlCall(final String msg2, final String cssClassSuffix, boolean sticky, final StringBuilder buf) {
- final String msg = msg2.replaceAll("\"", "\'");
+ public static void addJGrowlCall(final String origMsg, final String cssClassSuffix, boolean sticky, final StringBuilder buf) {
+ final String msg = origMsg.replaceAll("\"", "\'");
buf.append("$.jGrowl(\"").append(msg).append('\"');
buf.append(", {");
buf.append("theme: \"jgrowl-").append(cssClassSuffix).append("\"");
@@ -50,7 +50,7 @@ public class JGrowlUtil {
buf.append(", sticky: true");
}
buf.append("}");
- buf.append(");");
+ buf.append(");\n");
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
index c9e688f..0bb2be5 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
@@ -686,12 +686,10 @@ div.scalarPanel {
/******** fix for select2 on ModalWindow ********/
/* http://osdir.com/ml/users-wicket.apache.org/2013-09/msg00165.html */
-.select2-drop,
-.select2-drop {
+div.select2-drop {
z-index: 30001
}
-.select2-drop-mask,
.select2-drop-mask {
z-index: 30000
}
@@ -699,15 +697,18 @@ div.scalarPanel {
/******** action prompt modal dialog ********/
+
.wicket-modal .w_content_container {
background-color: #E4E4DB;
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
+}
+
+.actionPanel {
+ width: 680px;
}
.actionPanel .myBlockContainer {
margin:20px;
+ padding: 20px;
width: 600px;
min-height: 200px;
}
@@ -716,20 +717,17 @@ div.scalarPanel {
display: none;
}
-div.wicket-modal div.w_content_2 {
- padding-top: 0em;
- padding-right: 20px;
- background-color: #E4E4DB;
- border-radius:4px;
- -moz-border-radius:4px;
- -webkit-border-radius:4px;
-}
-
div.wicket-modal div.w_content_3 {
border: 0px;
}
-div.wicket-modal div.w_content {
+div.wicket-modal div.w_content_3,
+div.wicket-modal div.w_content_2,
+div.wicket-modal div.w_content_1,
+div.wicket-modal div.w_content,
+.wicket-modal .w_content_container,
+.w_isis,
+.actionPanel {
border-radius:4px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
@@ -854,18 +852,29 @@ div#jGrowl div.jGrowl-closer {
+/* ModalWindow tweaks */
+
+div.wicket-mask-dark {
+ filter: alpha(opacity=40);
+ opacity: 0.4;
+}
+
+
/* veil */
#veil {
- display: none;
+ z-index: 40000;
+ background-image: none;
+ background-color: black;
+
+ display: none;
position:absolute;
top:0;
left:0;
- z-index=99999;
height: 100%;
width: 100%;
- background: rgb(210, 240, 243) transparent;
- background-color:rgba(210, 240, 243,0.5);
+ opacity: 0.4;
+ filter: alpha(opacity=40);
}
#veil div.imgHolder {
@@ -876,7 +885,7 @@ div#jGrowl div.jGrowl-closer {
margin-left: auto;
margin-right: auto;
display: block;
- margin-top: 7em;
+ margin-top: 3em;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
index cf1b290..dd6d977 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
@@ -64,6 +64,15 @@
</div>
<div wicket:id="actionPromptModalWindow"/>
+
+ <div id="veil">
+ <div class="imgHolder">
+ <wicket:link>
+ <img src="spinning-icon.gif"/>
+ </wicket:link>
+ </div>
+ </div>
+
<div id="footer">
<div class="links">
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 2d60545..3d7f4b0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -61,7 +61,8 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+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.ApplicationActionsModel;
import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
@@ -69,6 +70,7 @@ import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
import org.apache.isis.viewer.wicket.ui.pages.about.AboutPage;
@@ -78,7 +80,7 @@ import org.apache.isis.viewer.wicket.ui.util.Components;
/**
* Convenience adapter for {@link WebPage}s built up using {@link ComponentType}s.
*/
-public abstract class PageAbstract extends WebPage implements ActionPromptModalWindowProvider {
+public abstract class PageAbstract extends WebPage implements ActionPromptProvider {
private static Logger LOG = LoggerFactory.getLogger(PageAbstract.class);
@@ -326,39 +328,16 @@ public abstract class PageAbstract extends WebPage implements ActionPromptModalW
// ActionPromptModalWindowProvider
// ///////////////////////////////////////////////////////////////////
- private ModalWindow actionPromptModalWindow;
- public ModalWindow getActionPromptModalWindow() {
- return PageAbstract.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
+ private ActionPromptModalWindow actionPromptModalWindow;
+ public ActionPrompt getActionPrompt() {
+ return ActionPromptModalWindow.getActionPromptModalWindowIfEnabled(actionPromptModalWindow);
}
private void addActionPromptModalWindow() {
- this.actionPromptModalWindow = PageAbstract.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
+ this.actionPromptModalWindow = ActionPromptModalWindow.newModalWindow(ID_ACTION_PROMPT_MODAL_WINDOW);
addOrReplace(actionPromptModalWindow);
}
- // TODO: tidy-up
- public static ModalWindow newModalWindow(String id) {
- ModalWindow actionPromptModalWindow = new ModalWindow(id);
- //actionPromptModalWindow.setResizable(false);
- actionPromptModalWindow.setAutoSize(true);
- actionPromptModalWindow.setCssClassName("w_isis");
- return actionPromptModalWindow;
- }
-
- public static ModalWindow getActionPromptModalWindowIfEnabled(ModalWindow modalWindow) {
- boolean enable = isActionPromptModalDialogEnabled();
- if(!enable) {
- // no-op
- return null;
- }
- return modalWindow;
- }
-
- public static boolean isActionPromptModalDialogEnabled() {
- return IsisContext.getConfiguration().getBoolean("isis.viewer.wicket.enableModalDialogs", false);
- }
-
-
// ///////////////////////////////////////////////////////////////////
// Convenience
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.html
index 0c377c8..5f50349 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.html
@@ -24,7 +24,7 @@
lang="en">
<wicket:head>
<wicket:link>
- <link href="ActionPage.css" rel="stylesheet" type="text/css"/>
+ <link href="ActionPromptPage.css" rel="stylesheet" type="text/css"/>
</wicket:link>
</wicket:head>
<body>
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index cbc1980..d34b217 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.ActionPromptModalWindowProvider;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index d67a66b..2926c19 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -17,17 +17,37 @@
* under the License.
*/
$(document).ready(function() {
- var showVeil = function() {
- $('#veil').show();
- };
+
+ isisShowVeil = function() {
+ $("#veil").stop().show();
+ }
+ isisFadeInVeil = function() {
+ $("#veil").fadeIn(750);
+ }
+ isisHideVeil = function() {
+ $("#veil").stop().hide();
+ }
+
+ /* for modal dialogs */
+ Wicket.Event.subscribe(
+ '/ajax/call/beforeSend', function(attributes, jqXHR, settings) {
+ isisFadeInVeil();
+ });
+ Wicket.Event.subscribe(
+ '/ajax/call/complete', function(attributes, jqXHR, settings) {
+ isisHideVeil();
+ });
+
+
- $('.buttons .okButton:not(.noVeil)').click(showVeil);
- $('.buttons .ok:not(.noVeil)').click(showVeil);
- $('.cssSubMenuItemsPanel .cssSubMenuItem a:not(.noVeil)').click(showVeil);
+ /* only seem to work in non-modal situation */
+ $('.buttons .okButton:not(.noVeil)').click(isisShowVeil);
+ $('.buttons .ok:not(.noVeil)').click(isisShowVeil);
+ $('.cssSubMenuItemsPanel .cssSubMenuItem a:not(.noVeil)').click(isisShowVeil);
+
$('.first-field input').focus();
-
$('div.collectionContentsAsAjaxTablePanel > table.contents > tbody > tr.reloaded-after-concurrency-exception')
.livequery(function(){
x=$(this);
http://git-wip-us.apache.org/repos/asf/isis/blob/3b6fa937/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/spinning-icon.gif
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/spinning-icon.gif b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/spinning-icon.gif
new file mode 100644
index 0000000..0e2b686
Binary files /dev/null and b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/spinning-icon.gif differ