Repository: wicket Updated Branches: refs/heads/master aedb98764 -> bcd55813b
WICKET-6299 Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bcd55813 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bcd55813 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bcd55813 Branch: refs/heads/master Commit: bcd55813b3afbccb5675096930aee6281c5cba3a Parents: aedb987 Author: Tobias Soloschenko <[email protected]> Authored: Tue Dec 20 20:15:42 2016 +0100 Committer: Tobias Soloschenko <[email protected]> Committed: Tue Dec 20 20:15:42 2016 +0100 ---------------------------------------------------------------------- .../html/form/AutoCompleteAddressType.java | 56 ++++ .../markup/html/form/AutoCompleteBuilder.java | 170 ++++++++++++ .../markup/html/form/AutoCompleteContact.java | 77 ++++++ .../html/form/AutoCompleteContactBuilder.java | 38 +++ .../html/form/AutoCompleteContactDetails.java | 102 +++++++ .../markup/html/form/AutoCompleteFields.java | 272 +++++++++++++++++++ .../apache/wicket/markup/html/form/Form.java | 14 + .../wicket/markup/html/form/TextField.java | 14 + .../wicket/markup/html/form/FormTest.java | 39 +++ .../wicket/markup/html/form/TextFieldTest.java | 23 +- 10 files changed, 803 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteAddressType.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteAddressType.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteAddressType.java new file mode 100644 index 0000000..6123053 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteAddressType.java @@ -0,0 +1,56 @@ +/* + * 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.form; + +/** + * Auto completion address type according to the whatwg specification. + * + * @author Tobias Soloschenko + * + * @see <a href= + * "https://html.spec.whatwg.org/multipage/forms.html">https://html.spec.whatwg.org/multipage/forms.html</a> + * + */ +public enum AutoCompleteAddressType { + + /** + * Meaning the field is part of the shipping address or contact information + */ + SHIPPING("shipping"), + + /** + * meaning the field is part of the billing address or contact information + */ + BILLING("billing"); + + private String value; + + private AutoCompleteAddressType(String value) + { + this.value = value; + } + + /** + * Gets the address type value + * + * @return the value of the address type + */ + public String getValue() + { + return value; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteBuilder.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteBuilder.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteBuilder.java new file mode 100644 index 0000000..a3b64cd --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteBuilder.java @@ -0,0 +1,170 @@ +/* + * 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.form; + +/** + * The auto complete builder is used to build the corresponding attribute for form and input tags. + * To use the auto completion just open the autofill options within your browser. In chrome for + * example it is accessed with the following URL: + * <a href="chrome://settings/autofillEditAddress">chrome://settings/autofillEditAddress</a> + * + * @author Tobias Soloschenko + * + * @since 8.0.0 + * + */ +public class AutoCompleteBuilder implements AutoCompleteContactBuilder +{ + /** + * The section prefix specificed by the whatwg standard + */ + public static final String SECTION_PREFIX = "section-"; + + private String sectionName; + + private AutoCompleteAddressType addressType; + + private AutoCompleteFields field; + + private AutoCompleteContact contact; + + private AutoCompleteContactDetails contactDetail; + + private boolean empty; + + /** + * Initializes a new auto complete builder + * + * @return the auto complete builder + */ + public static AutoCompleteBuilder init() + { + return new AutoCompleteBuilder(); + } + + /** + * Empties out the autocomplete outcome + * + * @return the auto complete builder + */ + public AutoCompleteBuilder empty() + { + this.empty = true; + return this; + } + + /** + * Applies a section to the auto completion field + * + * @param sectionName + * the name of the section + * @return the auto complete builder itself + */ + public AutoCompleteBuilder withSection(String sectionName) + { + this.sectionName = sectionName; + return this; + } + + /** + * Assigns the auto completion to a specific address type + * + * @param addressType + * the auto completion address type + * @return the auto complete builder itself + */ + public AutoCompleteBuilder forAddressType(AutoCompleteAddressType addressType) + { + this.addressType = addressType; + return this; + } + + /** + * Applies the field to the autocomplete attribute + * + * @param field + * the field + * @return the auto complete builder + */ + public AutoCompleteBuilder forField(AutoCompleteFields field) + { + this.field = field; + return this; + } + + /** + * Applies the contact information to the autocomplete attribute + * + * @param contact + * the contact information are going to be applied to + * @return the auto complete builder + */ + public AutoCompleteContactBuilder forContact(AutoCompleteContact contact) + { + this.contact = contact; + return this; + } + + /** + * @see {@link AutoCompleteContactBuilder} + */ + @Override + public AutoCompleteContactBuilder forField(AutoCompleteContactDetails contactDetail) + { + this.contactDetail = contactDetail; + return (AutoCompleteContactBuilder)this; + } + + /** + * Builds the attribute string + * + * @return the attribute content in the right order + */ + @Override + public String toString() + { + StringBuilder stringBuilder = new StringBuilder(); + if (!empty) + { + if (sectionName != null) + { + stringBuilder.append(SECTION_PREFIX); + stringBuilder.append(sectionName); + stringBuilder.append(" "); + } + if (addressType != null) + { + stringBuilder.append(addressType.getValue()); + stringBuilder.append(" "); + } + if (field != null) + { + stringBuilder.append(field.getValue()); + } + else + { + if (contact != null) + { + stringBuilder.append(contact.getValue()); + stringBuilder.append(" "); + } + stringBuilder.append(contactDetail.getValue()); + } + } + return stringBuilder.toString(); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContact.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContact.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContact.java new file mode 100644 index 0000000..cbf86a5 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContact.java @@ -0,0 +1,77 @@ +/* + * 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.form; + +/** + * Auto completion contact according to the whatwg specification. + * + * @author Tobias Soloschenko + * + * @see <a href= + * "https://html.spec.whatwg.org/multipage/forms.html">https://html.spec.whatwg.org/multipage/forms.html</a> + * + */ +public enum AutoCompleteContact { + + /** + * meaning the field is for contacting someone at their residence + */ + HOME("home"), + + /** + * meaning the field is for contacting someone at their workplace + */ + WORK("work"), + + /** + * meaning the field is for contacting someone regardless of location + */ + MOBILE("mobile"), + + /** + * meaning the field describes a fax machine's contact details + */ + FAX("fax"), + + /** + * meaning the field describes a pager's or beeper's contact details + */ + PAGER("pager"); + + private String value; + + /** + * Creates an auto completion contact with the given value + * + * @param value + * the value of the contact + */ + private AutoCompleteContact(String value) + { + this.value = value; + } + + /** + * Gets the value of the auto completion contact + * + * @return the value of the auto completion contact + */ + public String getValue() + { + return value; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactBuilder.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactBuilder.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactBuilder.java new file mode 100644 index 0000000..07324ff --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactBuilder.java @@ -0,0 +1,38 @@ +/* + * 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.form; + +/** + * The auto complete contact builder shrinks down the possibilities to the contact details + * + * @author Tobias Soloschenko + * + * @since 8.0.0 + * + */ +public interface AutoCompleteContactBuilder +{ + /** + * Applies the contact details information to the auto complete field + * + * @param contactDetail + * the contact detail + * @return the auto complete builder contact + */ + AutoCompleteContactBuilder forField(AutoCompleteContactDetails contactDetail); + +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactDetails.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactDetails.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactDetails.java new file mode 100644 index 0000000..e4d5e44 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteContactDetails.java @@ -0,0 +1,102 @@ +/* + * 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.form; + +/** + * Auto completion contact detail according to the whatwg specification. + * + * @author Tobias Soloschenko + * + * @see <a href= + * "https://html.spec.whatwg.org/multipage/forms.html">https://html.spec.whatwg.org/multipage/forms.html</a> + * + */ +public enum AutoCompleteContactDetails { + + /** + * +1 617 253 5702 + */ + TEL("tel"), + + /** + * +1 + */ + TEL_COUNTRY_CODE("tel-country-code"), + + /** + * 617 253 5702 + */ + TEL_NATIONAL("tel-national"), + + /** + * 617 + */ + TEL_AREA_CODE("tel-area-code"), + + /** + * 2535702 + */ + TEL_LOCAL("tel-local"), + + /** + * 253 + */ + TEL_LOCAL_PREFIX("tel-local-prefix"), + + /** + * 5702 + */ + TEL_LOCAL_SUFFIX("tel-local-suffix"), + + /** + * 1000 + */ + TEL_EXTENSION("tel-extension"), + + /** + * [email protected] + */ + EMAIL("email"), + + /** + * irc://example.org/timbl,isuser + */ + IMPP("impp"); + + private String value; + + /** + * Creates an auto completion contact detail with the given value + * + * @param value + * the value of the contact detail + */ + private AutoCompleteContactDetails(String value) + { + this.value = value; + } + + /** + * Gets the value of the auto completion contact detail + * + * @return the value of the auto completion contact detail + */ + public String getValue() + { + return value; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteFields.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteFields.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteFields.java new file mode 100644 index 0000000..8f794c4 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AutoCompleteFields.java @@ -0,0 +1,272 @@ +/* + * 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.form; + +/** + * Auto completion personal data according to the whatwg specification. + * + * @author Tobias Soloschenko + * + * @see <a href= + * "https://html.spec.whatwg.org/multipage/forms.html">https://html.spec.whatwg.org/multipage/forms.html</a> + * + */ +public enum AutoCompleteFields { + + /** + * Simply turns on the auto completion + */ + ON("on"), + + /** + * Simply turns off the auto completion + */ + OFF("off"), + + /** + * Sir Timothy John Berners-Lee, OM, KBE, FRS, FREng, FRSA + */ + NAME("name"), + + /** + * Sir + */ + HONORIFIC_PREFIX("honorific-prefix"), + + /** + * Timothy + */ + GIVEN_NAME("given-name"), + + /** + * John + */ + ADDITIONAL_NAME("additional-name"), + + /** + * Berners-Lee + */ + FAMILY_NAME("family-name"), + + /** + * OM, KBE, FRS, FREng, FRSA + */ + HONORIFIC_SUFFIX("honorific-suffix"), + + /** + * Tim + */ + NICKNAME("nickname"), + + /** + * timbl + */ + USERNAME("username"), + + /** + * GUMFXbadyrS3 + */ + NEW_PASSWORD("new-password"), + + /** + * qwerty + */ + CURRENT_PASSWORD("current-password"), + + /** + * Professor + */ + ORGANIZATION_TITLE("organization-title"), + + /** + * World Wide Web Consortium + */ + ORGANIZATION("organization"), + + /** + * Multiple lines 32 Vassar Street MIT Room 32-G524 + */ + STREET_ADDRESS("street-address"), + + /** + * 32 Vassar Street + */ + ADDRESS_LINE1("address-line1"), + + /** + * MIT Room 32-G524 + */ + ADDRESS_LINE2("address-line2"), + + /** + * See {@link AutoComplete.ADRESS_LINE2} + */ + ADDRESS_LINE3("address-line3"), + + /** + * The most fine-grained administrative level, in addresses with four administrative levels + */ + ADDRESS_LEVEL4("address-level4"), + + /** + * The third administrative level, in addresses with three or more administrative levels + */ + ADDRESS_LEVEL3("address-level3"), + + /** + * Cambridge + */ + ADDRESS_LEVEL2("address-level2"), + + /** + * MA + */ + ADDRESS_LEVEL1("address-level1"), + + /** + * US + */ + COUNTRY("country"), + + /** + * US + */ + COUNTRY_NAME("country-name"), + + /** + * 02139 + */ + POSTAL_CODE("postal-code"), + + /** + * Tim Berners-Lee + */ + CC_NAME("cc-name"), + + /** + * Tim + */ + CC_GIVEN_NAME("cc-given-name"), + + /** + * - + */ + CC_ADDITIONAL_NAME("cc-additional-name"), + + /** + * Berners-Lee + */ + CC_FAMILY_NAME("cc-family-name"), + + /** + * 4114360123456785 + */ + CC_NUMBER("cc-number"), + + /** + * 2014-12 + */ + CC_EXP("cc-exp"), + + /** + * 12 + */ + CC_EXP_MONTH("cc-exp-month"), + + /** + * 2014 + */ + CC_EXP_YEAR("cc-exp-year"), + + /** + * 419 + */ + CC_CSC("cc-csc"), + + /** + * Visa + */ + CC_TYPE("cc-type"), + + /** + * GBP + */ + TRANSACTION_CURRENCY("transaction-currency"), + + /** + * 401.00 + */ + TRANSACTION_AMOUNT("transaction-amount"), + + /** + * en + */ + LANGUAGE("language"), + + /** + * 1955-06-08 + */ + BDAY("bday"), + + /** + * 8 + */ + BDAY_DAY("bday-day"), + + /** + * 6 + */ + BDAY_MONTH("bday-month"), + + /** + * 1955 + */ + BDAY_YEAR("bday-year"), + + /** + * Male + */ + SEX("sex"), + + /** + * https://www.w3.org/People/Berners-Lee/ + */ + URL("url"), + + /** + * https://www.w3.org/Press/Stock/Berners-Lee/2001-europaeum-eighth.jpg + */ + PHOTO("photo"); + + private String value; + + private AutoCompleteFields(String value) + { + this.value = value; + } + + /** + * Gets the value of the auto completion + * + * @return the value of the auto completion + */ + public String getValue() + { + return value; + } + +} http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java index e8b61e7..1d3284a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java @@ -1352,6 +1352,14 @@ public class Form<T> extends WebMarkupContainer } /** + * Gets the value of the autocomplete attribute. The default behavior is that it is turned off + * @return AutoCompleteBuilder the builder to generate the autocomplete attribute information + */ + protected AutoCompleteBuilder getAutoCompleteBuilder(){ + return AutoCompleteBuilder.init().empty(); + } + + /** * * @see org.apache.wicket.Component#getStatelessHint() */ @@ -1633,6 +1641,12 @@ public class Form<T> extends WebMarkupContainer setMultiPart(true); } } + + // Auto completion support + String autocompleteValue = getAutoCompleteBuilder().toString(); + if(!autocompleteValue.isEmpty()){ + tag.put("autocomplete", autocompleteValue); + } } else { http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/main/java/org/apache/wicket/markup/html/form/TextField.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/TextField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/TextField.java index 81dc828..719560c 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/TextField.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/TextField.java @@ -107,6 +107,12 @@ public class TextField<T> extends AbstractTextComponent<T> tag.put("value", getValue()); + // Auto completion support + String autocompleteValue = getAutoCompleteBuilder().toString(); + if(!autocompleteValue.isEmpty()){ + tag.put("autocomplete", autocompleteValue); + } + // Default handling for component tag super.onComponentTag(tag); } @@ -121,4 +127,12 @@ public class TextField<T> extends AbstractTextComponent<T> { return null; } + + /** + * Gets the value of the autocomplete attribute. The default behavior is that it is turned off + * @return AutoCompleteBuilder the builder to generate the autocomplete attribute information + */ + protected AutoCompleteBuilder getAutoCompleteBuilder(){ + return AutoCompleteBuilder.init().empty(); + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormTest.java index 05344a5..2ee420a 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormTest.java @@ -53,6 +53,39 @@ public class FormTest extends WicketTestCase }; } + /** + * Test auto complete functionality + */ + @Test + public void testAutoComplete(){ + class TestPage extends WebPage implements IMarkupResourceStreamProvider + { + boolean shouldFail, submit, error; + + public TestPage() + { + add(new Form<Void>("form") + { + @Override + protected AutoCompleteBuilder getAutoCompleteBuilder() + { + return AutoCompleteBuilder.init().forAddressType(AutoCompleteAddressType.BILLING).forField(AutoCompleteFields.GIVEN_NAME); + } + }); + } + + @Override + public IResourceStream getMarkupResourceStream(final MarkupContainer container, + Class<?> containerClass) + { + return new StringResourceStream("<form wicket:id='form'></form>"); + } + } + + TestPage testPage = new TestPage(); + tester.startPage(testPage); + assertTrue(tester.getLastResponseAsString().contains("autocomplete=\"billing given-name\"")); + } /** * @throws Exception @@ -115,6 +148,12 @@ public class FormTest extends WicketTestCase { error = true; } + + @Override + protected AutoCompleteBuilder getAutoCompleteBuilder() + { + return AutoCompleteBuilder.init().forAddressType(AutoCompleteAddressType.BILLING).forField(AutoCompleteFields.GIVEN_NAME); + } }); } http://git-wip-us.apache.org/repos/asf/wicket/blob/bcd55813/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 5af5917..2c215e5 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 @@ -36,7 +36,20 @@ import org.junit.Test; */ public class TextFieldTest extends WicketTestCase { - /** */ + + /** + * Test auto complete feature + */ + @Test + public void testAutoComplete(){ + TestPage testPage = new TestPage(); + tester.startPage(testPage); + assertTrue(tester.getLastResponseAsString().contains("autocomplete=\"section-blue billing name\"")); + } + + /** + * Test that inputs are converted to null + * */ @Test public void emptyInputConvertedToNull() { @@ -111,7 +124,13 @@ public class TextFieldTest extends WicketTestCase public TestPage() { add(form = new Form<>("form")); - form.add(textField = new TextField<>("text", textModel)); + form.add(textField = new TextField<String>("text", textModel){ + @Override + protected AutoCompleteBuilder getAutoCompleteBuilder() + { + return AutoCompleteBuilder.init().withSection("blue").forAddressType(AutoCompleteAddressType.BILLING).forField(AutoCompleteFields.NAME); + } + }); } @Override
