You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2013/06/10 14:24:14 UTC
git commit: WICKET-5220 editable label prevent default on enter key
Updated Branches:
refs/heads/master 16629ed9f -> 66aceb954
WICKET-5220 editable label prevent default on enter key
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/66aceb95
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/66aceb95
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/66aceb95
Branch: refs/heads/master
Commit: 66aceb954cdf8381300d2508a03c170f9ced36b0
Parents: 16629ed
Author: svenmeier <sv...@meiers.net>
Authored: Mon Jun 10 14:22:37 2013 +0200
Committer: svenmeier <sv...@meiers.net>
Committed: Mon Jun 10 14:22:37 2013 +0200
----------------------------------------------------------------------
.../ajax/builtin/EditableLabelPage.html | 3 ++
.../ajax/builtin/EditableLabelPage.java | 20 ++++---
.../ajax/markup/html/AjaxEditableLabel.java | 56 ++++++++++----------
3 files changed, 42 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/66aceb95/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.html
index a9962d4..778f93a 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.html
@@ -4,6 +4,8 @@
span.inline-edit { border: 1px solid green; padding: 4px; }
span.inline-edit input { border:0; margin:0; padding:0; }
</style>
+
+<form wicket:id="form">
<br/>
Click on the area with a green outline to begin an inplace edit. Press enter or outside the area to save, pless esc to cancel.
<br/><br/>
@@ -16,5 +18,6 @@ click to select another site: <span wicket:id="site">[[site selection]]</span>
<br/><br/>
This page has been refreshed: <span wicket:id="refresh-counter">[[refresh count]]</span> times.
<a href="#" wicket:id="refresh-link">refresh</a>
+</form>
</wicket:extend>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/66aceb95/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.java
index bdee0a6..8073cb7 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EditableLabelPage.java
@@ -23,6 +23,7 @@ import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableChoiceLabel;
import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableMultiLineLabel;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.CompoundPropertyModel;
@@ -36,7 +37,8 @@ import org.apache.wicket.model.CompoundPropertyModel;
public class EditableLabelPage extends BasePage
{
/** available sites for the multiple select. */
- private static final List<String> SITES = Arrays.asList("The Server Side", "Java Lobby", "Java.Net");
+ private static final List<String> SITES = Arrays.asList("The Server Side", "Java Lobby",
+ "Java.Net");
private String site = SITES.get(0);
private String text1 = "fox";
private String text2 = "dog";
@@ -48,13 +50,15 @@ public class EditableLabelPage extends BasePage
*/
public EditableLabelPage()
{
- setDefaultModel(new CompoundPropertyModel<EditableLabelPage>(this));
- add(new AjaxEditableLabel("text1"));
- add(new AjaxEditableLabel("text2"));
- add(new AjaxEditableMultiLineLabel("text3"));
- add(new AjaxEditableChoiceLabel("site", SITES));
+ Form form = new Form("form", new CompoundPropertyModel<EditableLabelPage>(this));
+ add(form);
- add(new Label("refresh-counter", new AbstractReadOnlyModel<String>()
+ form.add(new AjaxEditableLabel("text1"));
+ form.add(new AjaxEditableLabel("text2"));
+ form.add(new AjaxEditableMultiLineLabel("text3"));
+ form.add(new AjaxEditableChoiceLabel("site", SITES));
+
+ form.add(new Label("refresh-counter", new AbstractReadOnlyModel<String>()
{
@Override
public String getObject()
@@ -63,7 +67,7 @@ public class EditableLabelPage extends BasePage
}
}));
- add(new Link("refresh-link")
+ form.add(new Link("refresh-link")
{
@Override
public void onClick()
http://git-wip-us.apache.org/repos/asf/wicket/blob/66aceb95/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
index 661ae76..df62188 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
@@ -167,22 +167,22 @@ public class AjaxEditableLabel<T> extends Panel
}
/**
- * Gives a chance to the specializations to modify the Ajax attributes for
- * the request when this component switches from an editor to a label.
- *
+ * Gives a chance to the specializations to modify the Ajax attributes for the request when this
+ * component switches from an editor to a label.
+ *
* @param attributes
- * The Ajax attributes to modify
+ * The Ajax attributes to modify
*/
protected void updateLabelAjaxAttributes(AjaxRequestAttributes attributes)
{
}
/**
- * Gives a chance to the specializations to modify the Ajax attributes for
- * the request when this component switches from a label to an editor.
- *
+ * Gives a chance to the specializations to modify the Ajax attributes for the request when this
+ * component switches from a label to an editor.
+ *
* @param attributes
- * The Ajax attributes to modify
+ * The Ajax attributes to modify
*/
protected void updateEditorAjaxAttributes(AjaxRequestAttributes attributes)
{
@@ -334,31 +334,27 @@ public class AjaxEditableLabel<T> extends Panel
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
super.updateAjaxAttributes(attributes);
- attributes.setEventNames("blur", "keyup");
+ attributes.setEventNames("blur", "keyup", "keydown");
- CharSequence dynamicExtraParameters = "var result = [], "
- + "kc=Wicket.Event.keyCode(attrs.event),"
- + "evtType=attrs.event.type;"
- + "if (evtType === 'keyup') {"
- +
- // ESCAPE key
- "if (kc===27) { result.push( { name: 'save', value: false } ); }"
- +
-
- // ENTER key
- "else if (kc===13) { result = Wicket.Form.serializeElement(attrs.c); result.push( { name: 'save', value: true } ); }"
- + "}"
- + "else if (evtType==='blur') { result = Wicket.Form.serializeElement(attrs.c); result.push( { name: 'save', value: true } ); }"
- + "return result;";
- attributes.getDynamicExtraParameters().add(dynamicExtraParameters);
+ // Note: preventDefault is handled selectively below
+ attributes.setPreventDefault(false);
+ // Note: escape can be detected on keyup, enter can be detected on keyup
CharSequence precondition = "var kc=Wicket.Event.keyCode(attrs.event),"
+ "evtType=attrs.event.type,"
+ "ret=false;"
- + "if(evtType==='blur' || (evtType==='keyup' && (kc===27 || kc===13))) ret = true;"
+ + "if (evtType==='blur' || (evtType==='keyup' && kc===27) || (evtType==='keydown' && kc===13)) {attrs.event.preventDefault(); ret = true;}"
+ "return ret;";
AjaxCallListener ajaxCallListener = new AjaxCallListener();
ajaxCallListener.onPrecondition(precondition);
+
+ CharSequence dynamicExtraParameters = "var result = [],"
+ + "evtType=attrs.event.type;"
+ + "if (evtType === 'keyup') { result.push( { name: 'save', value: false } ); }"
+ + "else { result = Wicket.Form.serializeElement(attrs.c); result.push( { name: 'save', value: true } ); }"
+ + "return result;";
+ attributes.getDynamicExtraParameters().add(dynamicExtraParameters);
+
attributes.getAjaxCallListeners().add(ajaxCallListener);
}
@@ -492,8 +488,9 @@ public class AjaxEditableLabel<T> extends Panel
label.setVisible(false);
editor.setVisible(true);
target.add(AjaxEditableLabel.this);
- String selectScript = String.format("(function(){var el = Wicket.$('%s'); if (el.select) el.select();})()",
- editor.getMarkupId());
+ String selectScript = String.format(
+ "(function(){var el = Wicket.$('%s'); if (el.select) el.select();})()",
+ editor.getMarkupId());
target.appendJavaScript(selectScript);
target.focusComponent(editor);
}
@@ -512,8 +509,9 @@ public class AjaxEditableLabel<T> extends Panel
target.appendJavaScript("window.status='" +
JavaScriptUtils.escapeQuotes(errorMessage.toString()) + "';");
}
- String selectAndFocusScript = String.format("(function(){var el=Wicket.$('%s'); if (el.select) el.select(); el.focus();})()",
- editor.getMarkupId());
+ String selectAndFocusScript = String.format(
+ "(function(){var el=Wicket.$('%s'); if (el.select) el.select(); el.focus();})()",
+ editor.getMarkupId());
target.appendJavaScript(selectAndFocusScript);
}