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')) {