You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/03/21 23:52:09 UTC

isis git commit: ISIS-1047 The focus should be on the first field of an action parameter dialog

Repository: isis
Updated Branches:
  refs/heads/master 63d26a7b2 -> 797e36a20


ISIS-1047 The focus should be on the first field of an action parameter dialog


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

Branch: refs/heads/master
Commit: 797e36a202c5f198b46b72c71002a501b36fc9b6
Parents: 63d26a7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Mar 22 00:51:24 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Mar 22 00:51:24 2015 +0200

----------------------------------------------------------------------
 .../actionprompt/ActionPromptModalWindow.java   | 10 +++++
 .../linkandlabel/ActionLinkFactoryAbstract.java | 40 --------------------
 .../ui/pages/jquery.isis.wicket.viewer.js       |  9 ++++-
 3 files changed, 18 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/797e36a2/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
index 0cdac52..8c0bc85 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
@@ -16,6 +16,8 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.actionprompt;
 
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.ModalDialog;
@@ -47,4 +49,12 @@ public class ActionPromptModalWindow extends ModalDialog<Void> {
     public ActionPromptModalWindow(String id) {
         super(id);
     }
+
+    @Override
+    public void renderHead(IHeaderResponse response) {
+        super.renderHead(response);
+
+        response.render(OnDomReadyHeaderItem.forScript(
+                String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_ACTION_PARAMETER, '%s')", getMarkupId())));
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/797e36a2/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 b0e37c3..6eaee96 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
@@ -22,16 +22,12 @@ package org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 
 import org.apache.wicket.Application;
-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.AjaxLink;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.util.visit.IVisit;
-import org.apache.wicket.util.visit.IVisitor;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -44,7 +40,6 @@ 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.ActionPromptHeaderPanel;
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 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;
@@ -84,44 +79,9 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
                     actionPrompt.setPanel(actionPanel, target);
                     actionPanel.setActionPrompt(actionPrompt);
                     actionPrompt.showPrompt(target);
-
-                    focusOnFirstParameter(target, actionPanel);
                 }
             }
 
-            private void focusOnFirstParameter(AjaxRequestTarget target, ActionPanel actionPanel) {
-
-                // first, force all parameters to build themselves...
-                actionPanel.visitChildren(new IVisitor<Component, Component>() {
-                    @Override
-                    public void component(Component object, IVisit<Component> visit) {
-                        if (object instanceof ScalarPanelAbstract) {
-                            ScalarPanelAbstract spa = (ScalarPanelAbstract) object;
-                            spa.forceBuildGui();
-                            visit.dontGoDeeper();
-                        }
-                    }
-                });
-
-                // second, go searching for the first <input> in the action panel.
-                final Component actionPanelFirstParam = actionPanel.visitChildren(new IVisitor<Component, Component>() {
-                    @Override
-                    public void component(Component object, IVisit<Component> visit) {
-                        if (object instanceof FormComponent &&
-                            !"scalarIfCompact".equals(object.getId()) &&
-                            object.getOutputMarkupId()) {
-                            // there are components for 'compact' and 'regular'; we want the 'regular' one
-                            // also double check that has outputMarkupId enabled (prereq for setting focus)
-                            visit.stop(object);
-                        }
-                    }
-                });
-
-                // third, if found then use Wicket API to focus on this component
-                if(actionPanelFirstParam != null) {
-                    target.focusComponent(actionPanelFirstParam);
-                }
-            }
 
             @Override
             protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {

http://git-wip-us.apache.org/repos/asf/isis/blob/797e36a2/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index 84f718a..512a499 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -26,7 +26,8 @@ $(function() {
 
     window.Isis = {
         Topic: {
-            OPEN_IN_NEW_TAB: 'openInNewTab'
+            OPEN_IN_NEW_TAB: 'openInNewTab',
+            FOCUS_FIRST_ACTION_PARAMETER: 'focusFirstActionParameter'
         },
         copyModalShown: false
     };
@@ -77,6 +78,12 @@ $(function() {
         if(win) { win.focus(); }
     });
 
+    Wicket.Event.subscribe(Isis.Topic.FOCUS_FIRST_ACTION_PARAMETER, function(jqEvent, modalWindowId) {
+        setTimeout(function() {
+            $('#'+modalWindowId).find('.inputFormTable.parameters').find('input,textarea,select').filter(':visible:first').focus();
+        }, 0);
+    });
+
     /* for modal dialogs */
     Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_BEFORE_SEND, function(jqEvent, attributes, jqXHR, settings) {
         if (attributes.c !== window && !$('#'+attributes.c).hasClass('noVeil')) {