ISIS-1603: adds workaround for 
https://issues.apache.org/jira/browse/WICKET-6364 so do not tab to hidden input 
fields.


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

Branch: refs/heads/master
Commit: 9b41e1147afafa4b85f6c7829f72f119758d24b8
Parents: 5bfd652
Author: Dan Haywood <[email protected]>
Authored: Mon May 1 15:38:09 2017 +0100
Committer: Dan Haywood <[email protected]>
Committed: Mon May 1 15:38:09 2017 +0100

----------------------------------------------------------------------
 .../ui/panels/PromptFormPanelAbstract.java      | 30 ++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9b41e114/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
----------------------------------------------------------------------
diff --git 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
index 140862e..2ed2bdb 100644
--- 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
+++ 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
@@ -37,6 +37,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.util.string.AppendingStringBuffer;
 
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -78,6 +79,9 @@ public abstract class PromptFormPanelAbstract<T extends 
IModel<?> & FormExecutor
         private final WicketViewerSettings settings;
         private final T formExecutorContext;
 
+        private final AjaxButton okButton;
+        private final AjaxButton cancelButton;
+
         public FormAbstract(
                 final String id,
                 final Component parentPanel,
@@ -94,8 +98,8 @@ public abstract class PromptFormPanelAbstract<T extends 
IModel<?> & FormExecutor
             FormFeedbackPanel formFeedback = new 
FormFeedbackPanel(ID_FEEDBACK);
             addOrReplace(formFeedback);
 
-            AjaxButton okButton = addOkButton();
-            final AjaxButton cancelButton = addCancelButton();
+            okButton = addOkButton();
+            cancelButton = addCancelButton();
             configureButtons(okButton, cancelButton);
         }
 
@@ -291,6 +295,28 @@ public abstract class PromptFormPanelAbstract<T extends 
IModel<?> & FormExecutor
 
         }
 
+        private AjaxButton defaultSubmittingComponent() {
+            return okButton;
+        }
+
+        // workaround for https://issues.apache.org/jira/browse/WICKET-6364
+        @Override
+        protected void appendDefaultButtonField() {
+            AppendingStringBuffer buffer = new AppendingStringBuffer();
+            buffer.append("<div 
style=\"width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden\">");
+            buffer.append("<input type=\"text\" tabindex=\"-1\" 
autocomplete=\"off\"/>");
+            Component submittingComponent = 
(Component)this.defaultSubmittingComponent();
+            buffer.append("<input type=\"submit\" tabindex=\"-1\" name=\"");
+            buffer.append(this.defaultSubmittingComponent().getInputName());
+            buffer.append("\" onclick=\" var b=document.getElementById(\'");
+            buffer.append(submittingComponent.getMarkupId());
+            buffer.append("\'); if 
(b!=null&amp;&amp;b.onclick!=null&amp;&amp;typeof(b.onclick) != \'undefined\') 
{  var r = Wicket.bind(b.onclick, b)(); if (r != false) b.click(); } else { 
b.click(); };  return false;\" ");
+            buffer.append(" />");
+            buffer.append("</div>");
+            this.getResponse().write(buffer);
+        }
+
+
     }
 
 

Reply via email to