You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2013/10/28 09:16:28 UTC
[12/47] git commit: WICKET-5331 make HTML5 attributes optional
WICKET-5331 make HTML5 attributes optional
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/deb502c7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/deb502c7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/deb502c7
Branch: refs/heads/wicket-4997
Commit: deb502c7cb059c479319ddb8148cac7321921b19
Parents: e9df859
Author: svenmeier <sv...@meiers.net>
Authored: Mon Sep 2 15:56:29 2013 +0200
Committer: svenmeier <sv...@meiers.net>
Committed: Mon Sep 2 15:56:29 2013 +0200
----------------------------------------------------------------------
.../wicket/markup/html/HTML5Attributes.java | 133 +++++++++++++++++++
.../markup/html/form/AbstractTextComponent.java | 13 +-
.../wicket/markup/html/form/FormComponent.java | 3 +-
.../wicket/markup/html/form/TextAreaTest.java | 9 +-
.../wicket/markup/html/form/TextFieldTest.java | 2 +
.../validation/HomePage1_ExpectedResult.html | 2 +-
6 files changed, 146 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java
new file mode 100644
index 0000000..718f4ab
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java
@@ -0,0 +1,133 @@
+/*
+ * 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.wicket.markup.html;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.application.IComponentInstantiationListener;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidatorAdapter;
+import org.apache.wicket.validation.validator.PatternValidator;
+
+/**
+ * Behavior which renders HTML5 attributes.
+ *
+ * @see #onInput(AbstractTextComponent, ComponentTag)
+ * @see #onButton(Button, ComponentTag)
+ */
+public class HTML5Attributes extends Behavior
+{
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onComponentTag(Component component, ComponentTag tag)
+ {
+ if (component instanceof AbstractTextComponent)
+ {
+ onInput((AbstractTextComponent<?>)component, tag);
+ }
+ else if (component instanceof Button)
+ {
+ onButton((Button)component, tag);
+ }
+ }
+
+ /**
+ * Writes HTML5 attributes for {@link AbstractTextComponent} inputs:
+ *
+ * <ul>
+ * <li>{@code required} if component {@link AbstractTextComponent#isRequired()}</li>
+ * <li>{@code placeholder} for {@link AbstractTextComponent#getLabel()}</li>
+ * <li>{@code pattern} for {@link AbstractTextComponent}s with a {@link PatternValidator}</li>
+ * <ul>
+ *
+ * @param input
+ * input component
+ * @param tag
+ * component tag
+ */
+ protected void onInput(AbstractTextComponent<?> input, ComponentTag tag)
+ {
+ if (input.isRequired())
+ {
+ tag.put("required", "required");
+ }
+
+ IModel<String> label = input.getLabel();
+ if (label != null && label.getObject() != null)
+ {
+ tag.put("placeholder", label.getObject());
+ }
+
+ for (IValidator<?> validator : input.getValidators())
+ {
+ if (validator instanceof ValidatorAdapter)
+ {
+ validator = ((ValidatorAdapter<?>)validator).getValidator();
+ }
+
+ if (validator instanceof PatternValidator)
+ {
+ tag.put("pattern", ((PatternValidator)validator).getPattern().toString());
+ }
+ }
+ }
+
+ /**
+ * Writes HTML5 attributes for {@link Button}s:
+ *
+ * <ul>
+ * <li>{@code formnovalidate} if {@link Button#getDefaultFormProcessing()} returns {@code false}
+ * </li>
+ * <ul>
+ *
+ * @param button
+ * button component
+ * @param tag
+ * component tag
+ */
+ protected void onButton(Button button, ComponentTag tag)
+ {
+ if (!button.getDefaultFormProcessing())
+ {
+ tag.put("formnovalidate", "formnovalidate");
+ }
+ }
+
+ /**
+ * A listener to instantiations of {@link FormComponent}s to add HTML5 attributes.
+ */
+ public static class InstantiationListener implements IComponentInstantiationListener
+ {
+ /**
+ * Adds {@link HTML5Attributes} to all {@link FormComponent}s.
+ */
+ @Override
+ public void onInstantiation(Component component)
+ {
+ if (component instanceof FormComponent)
+ {
+ component.add(new HTML5Attributes());
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractTextComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractTextComponent.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractTextComponent.java
index 175fbd5..c7f5972 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractTextComponent.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractTextComponent.java
@@ -19,7 +19,6 @@ package org.apache.wicket.markup.html.form;
import java.text.SimpleDateFormat;
import org.apache.wicket.Component;
-import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.IObjectClassAwareModel;
import org.apache.wicket.util.string.Strings;
@@ -190,13 +189,5 @@ public abstract class AbstractTextComponent<T> extends FormComponent<T>
{
setFlag(FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, flag);
return this;
- }
-
- @Override
- protected void onRequired(ComponentTag tag)
- {
- super.onRequired(tag);
-
- tag.put("required", "required");
- }
-}
+ };
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
index 00e883f..e31944a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
@@ -1423,10 +1423,11 @@ public abstract class FormComponent<T> extends LabeledWebMarkupContainer
/**
* Called by {@link #onComponentTag(ComponentTag)} when the component is required.
- *
+ *
* @param tag
* the tag that is being rendered
*/
+ @Deprecated
protected void onRequired(final ComponentTag tag)
{
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java
index 0f479e9..36fd413 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java
@@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.HTML5Attributes;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -42,6 +43,7 @@ public class TextAreaTest extends WicketTestCase
testPage.textArea.setOutputMarkupId(true);
testPage.textArea.setType(String.class);
testPage.textArea.setRequired(true);
+ testPage.textArea.add(new HTML5Attributes());
tester.startPage(testPage);
TagTester tagTester = tester.getTagById(testPage.textArea.getMarkupId());
@@ -55,7 +57,7 @@ public class TextAreaTest extends WicketTestCase
private static final long serialVersionUID = 1L;
Form<Void> form;
TextArea<String> textArea;
- IModel<String> textModel = Model.of((String) null);
+ IModel<String> textModel = Model.of((String)null);
/** */
public TestPage()
@@ -66,9 +68,10 @@ public class TextAreaTest extends WicketTestCase
@Override
public IResourceStream getMarkupResourceStream(MarkupContainer container,
- Class<?> containerClass)
+ Class<?> containerClass)
{
- return new StringResourceStream("<html><body>"
+ return new StringResourceStream(
+ "<html><body>"
+ "<form wicket:id=\"form\"><textarea wicket:id=\"textarea\"></textarea></form></body></html>");
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java
index d5ac8cc..940778d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java
@@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.HTML5Attributes;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -90,6 +91,7 @@ public class TextFieldTest extends WicketTestCase
testPage.textField.setOutputMarkupId(true);
testPage.textField.setType(String.class);
testPage.textField.setRequired(true);
+ testPage.textField.add(new HTML5Attributes());
tester.startPage(testPage);
TagTester tagTester = tester.getTagById(testPage.textField.getMarkupId());
http://git-wip-us.apache.org/repos/asf/wicket/blob/deb502c7/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html
index da0cdf6..8851ded 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html
@@ -11,7 +11,7 @@
<form wicket:id="form" id="form8" method="post" action="../page?1-1.IFormSubmitListener-bug-form"><div style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden"><input type="hidden" name="form8_hf_0" id="form8_hf_0" /></div>
<div wicket:id="border"><wicket:border>
<wicket:body>
- <input wicket:id="name" value="" name="border:border_body:name" required="required"/>
+ <input wicket:id="name" value="" name="border:border_body:name"/>
<div wicket:id="feedback"><wicket:panel>
</wicket:panel></div>