📄 home.java
字号:
/* * 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.threadtest.apps.app1;import java.net.MalformedURLException;import java.net.URL;import java.util.Arrays;import java.util.Date;import java.util.List;import java.util.Locale;import org.apache.wicket.AttributeModifier;import org.apache.wicket.markup.html.WebMarkupContainer;import org.apache.wicket.markup.html.WebPage;import org.apache.wicket.markup.html.basic.Label;import org.apache.wicket.markup.html.form.Check;import org.apache.wicket.markup.html.form.CheckBox;import org.apache.wicket.markup.html.form.CheckGroup;import org.apache.wicket.markup.html.form.ChoiceRenderer;import org.apache.wicket.markup.html.form.DropDownChoice;import org.apache.wicket.markup.html.form.Form;import org.apache.wicket.markup.html.form.ImageButton;import org.apache.wicket.markup.html.form.ListMultipleChoice;import org.apache.wicket.markup.html.form.Radio;import org.apache.wicket.markup.html.form.RadioChoice;import org.apache.wicket.markup.html.form.RadioGroup;import org.apache.wicket.markup.html.form.TextField;import org.apache.wicket.markup.html.image.Image;import org.apache.wicket.markup.html.link.Link;import org.apache.wicket.markup.html.list.ListItem;import org.apache.wicket.markup.html.list.ListView;import org.apache.wicket.markup.html.panel.FeedbackPanel;import org.apache.wicket.markup.html.panel.Panel;import org.apache.wicket.markup.repeater.Item;import org.apache.wicket.markup.repeater.data.DataView;import org.apache.wicket.model.AbstractReadOnlyModel;import org.apache.wicket.model.CompoundPropertyModel;import org.apache.wicket.model.IModel;import org.apache.wicket.model.Model;import org.apache.wicket.model.PropertyModel;import org.apache.wicket.protocol.http.WebRequest;import org.apache.wicket.util.convert.ConversionException;import org.apache.wicket.util.convert.IConverter;import org.apache.wicket.util.convert.MaskConverter;import org.apache.wicket.validation.validator.NumberValidator;import org.apache.wicket.version.undo.Change;public class Home extends WebPage{ private class ActionPanel extends Panel { /** * @param id * component id * @param model * model for contact */ public ActionPanel(String id, IModel model) { super(id, model); add(new Link("select") { public void onClick() { Home.this.selected = (Contact)getParent().getModelObject(); } }); } } /** * Form for collecting input. */ private class InputForm extends Form { /** * Construct. * * @param name * Component name */ public InputForm(String name) { super(name, new CompoundPropertyModel(new FormInputModel())); add(new LocaleDropDownChoice("localeSelect")); add(new Link("defaultLocaleLink") { public void onClick() { WebRequest request = (WebRequest)getRequest(); setLocale(request.getLocale()); } }); TextField stringTextField = new TextField("stringProperty"); stringTextField.setLabel(new Model("String")); add(stringTextField); TextField integerTextField = new TextField("integerProperty", Integer.class); add(integerTextField.add(NumberValidator.POSITIVE)); add(new TextField("doubleProperty", Double.class)); WebMarkupContainer dateLabel = new WebMarkupContainer("dateLabel"); add(dateLabel); TextField datePropertyTextField = new TextField("dateProperty", Date.class); add(datePropertyTextField); add(new TextField("integerInRangeProperty", Integer.class).add(NumberValidator.range(0, 100))); add(new CheckBox("booleanProperty")); RadioChoice rc = new RadioChoice("numberRadioChoice", NUMBERS).setSuffix(""); rc.setLabel(new Model("number")); add(rc); RadioGroup group = new RadioGroup("numbersGroup"); add(group); ListView persons = new ListView("numbers", NUMBERS) { protected void populateItem(ListItem item) { item.add(new Radio("radio", item.getModel())); item.add(new Label("number", item.getModelObjectAsString())); }; }; group.add(persons); CheckGroup checks = new CheckGroup("numbersCheckGroup"); add(checks); ListView checksList = new ListView("numbers", NUMBERS) { protected void populateItem(ListItem item) { item.add(new Check("check", item.getModel())); item.add(new Label("number", item.getModelObjectAsString())); }; }; checks.add(checksList); add(new ListMultipleChoice("siteSelection", SITES)); add(new TextField("urlProperty", URL.class) { public IConverter getConverter(Class clazz) { return new IConverter() { /** * @see org.apache.wicket.util.convert.IConverter#convertToObject(java.lang.String, * java.util.Locale) */ public Object convertToObject(String value, Locale locale) { try { return new URL(value.toString()); } catch (MalformedURLException e) { throw new ConversionException("'" + value + "' is not a valid URL"); } } /** * @see org.apache.wicket.util.convert.IConverter#convertToString(java.lang.Object, * java.util.Locale) */ public String convertToString(Object value, Locale locale) { return value != null ? value.toString() : null; } }; } }); add(new TextField("phoneNumberUS", UsPhoneNumber.class) { public IConverter getConverter(Class clazz) { return new MaskConverter("(###) ###-####", UsPhoneNumber.class); } }); add(new LinesListView("lines")); add(new ImageButton("saveButton")); add(new Link("resetButtonLink") { public void onClick() { InputForm.this.modelChanged(); } }.add(new Image("resetButtonImage"))); } /** * @see org.apache.wicket.markup.html.form.Form#onSubmit() */ public void onSubmit() { info("Saved model " + getModelObject()); } } /** list view to be nested in the form. */ private static final class LinesListView extends ListView { /** * Construct. * * @param id */ public LinesListView(String id) { super(id); setReuseItems(true); } protected void populateItem(ListItem item) { item.add(new TextField("lineEdit", new PropertyModel(item.getModel(), "text"))); } } /** * Choice for a locale. */ private final class LocaleChoiceRenderer extends ChoiceRenderer { /** * Constructor. */ public LocaleChoiceRenderer() { } /** * @see org.apache.wicket.markup.html.form.IChoiceRenderer#getDisplayValue(Object) */ public Object getDisplayValue(Object object) { Locale locale = (Locale)object; String display = locale.getDisplayName(getLocale()); return display; } } /** * Dropdown with Locales. */ private final class LocaleDropDownChoice extends DropDownChoice { /** * Construct. * * @param id * component id */ public LocaleDropDownChoice(String id) { super(id, LOCALES, new LocaleChoiceRenderer()); setModel(new PropertyModel(Home.this, "locale")); } /** * @see org.apache.wicket.markup.html.form.DropDownChoice#onSelectionChanged(java.lang.Object) */ public void onSelectionChanged(Object newSelection) { } /** * @see org.apache.wicket.markup.html.form.DropDownChoice#wantOnSelectionChangedNotifications() */ protected boolean wantOnSelectionChangedNotifications() { return true; } } /** Relevant locales wrapped in a list. */ private static final List LOCALES = Arrays.asList(new Locale[] { Locale.ENGLISH, new Locale("nl"), Locale.GERMAN, Locale.SIMPLIFIED_CHINESE, Locale.JAPANESE, new Locale("pt", "BR"), new Locale("fa", "IR"), new Locale("da", "DK") }); /** available sites for the multiple select. */ private static final List SITES = Arrays.asList(new String[] { "The Server Side", "Java Lobby", "Java.Net" }); /** available numbers for the radio selection. */ static final List NUMBERS = Arrays.asList(new String[] { "1", "2", "3" }); private Contact selected; public Home() { add(new Link("link") { int i = 0; @Override public void onClick() { i++; addStateChange(new Change() { @Override public void undo() { } }); } }); add(new Label("selectedLabel", new PropertyModel(this, "selectedContactLabel"))); add(new DataView("simple", new ContactDataProvider()) { protected void populateItem(final Item item) { Contact contact = (Contact)item.getModelObject(); item.add(new ActionPanel("actions", item.getModel())); item.add(new Label("contactid", String.valueOf(contact.getId()))); item.add(new Label("firstname", contact.getFirstName())); item.add(new Label("lastname", contact.getLastName())); item.add(new Label("homephone", contact.getHomePhone())); item.add(new Label("cellphone", contact.getCellPhone())); item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel() { public Object getObject() { return (item.getIndex() % 2 == 1) ? "even" : "odd"; } })); } }); final FeedbackPanel feedback = new FeedbackPanel("feedback"); add(feedback); add(new InputForm("inputForm")); } /** * @return string representation of selceted contact property */ public String getSelectedContactLabel() { if (selected == null) { return "No Contact Selected"; } else { return selected.getFirstName() + " " + selected.getLastName(); } } /** * Sets locale for the user's session (getLocale() is inherited from * Component) * * @param locale * The new locale */ public void setLocale(Locale locale) { if (locale != null) { getSession().setLocale(locale); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -