/*
* Copyright 2009 Richard Nichols.
*
* Licensed 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.
* under the License.
*/
package com.visural.wicket.examples.inputhint;
import com.visural.common.DateUtil;
import com.visural.wicket.aturl.At;
import com.visural.wicket.behavior.dateinput.DateInputBehavior;
import com.visural.wicket.behavior.dateinput.DateInputFormat;
import com.visural.wicket.behavior.inputhint.InputHintBehavior;
import com.visural.wicket.behavior.jsr303.JSR303ValidatedForm;
import com.visural.wicket.examples.BasePage;
import java.io.Serializable;
import java.util.Date;
import java.util.Locale;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import org.apache.wicket.markup.html.form.SubmitLink;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.util.convert.IConverter;
import org.hibernate.validator.constraints.Email;
/**
* @version $Id: DropDownExamplePage.java 94 2010-02-20 09:21:18Z tibes80@gmail.com $
* @author Richard Nichols
*/
@At(url="/input-hint")
public class InputHintExamplePage extends BasePage {
public InputHintExamplePage() {
add(new InputHintForm("jsrForm"));
}
@Override
public String getPageTitle() {
return "Input Hint Example";
}
private class InputHintForm extends JSR303ValidatedForm<ModelBean> {
private ModelBean model = new ModelBean();
// Notice how I didn't add any validation?
// It will get picked up automatically from the model bean
public InputHintForm(String id) {
super(id);
setDefaultModel(new CompoundPropertyModel(model));
add(new FeedbackPanel("feedback"));
add(new TextField("name").add(new InputHintBehavior(this, "At least 20 characters", "color: #aaa;")));
add(new TextField("age").add(new InputHintBehavior(this, "Years ( > 0 )", "color: #aaa;")));
add(new TextField("dateOfBirth") {
@Override
public IConverter getConverter(Class<?> type) {
if (Date.class.isAssignableFrom(type)) {
return new IConverter() {
public Object convertToObject(String value, Locale locale) {
return DateUtil.parseDate(value, "yyyy-MM-dd");
}
public String convertToString(Object value, Locale locale) {
return DateUtil.formatDate((Date)value, "yyyy-MM-dd");
}
};
}
return super.getConverter(type);
}
}.add(new DateInputBehavior().setDateFormat(DateInputFormat.YYYY_MM_DD))
.add(new InputHintBehavior(this, "Must be in the past", "color: #aaa;")));
add(new TextField("email").add(new InputHintBehavior(this, "user@domain", "color: #aaa;")));
add(new SubmitLink("submit"));
}
}
class ModelBean implements Serializable {
private @NotNull @Size(min=20, max=100) String name;
private @Min(0) @Max(120) Long age;
private @Past Date dateOfBirth;
private @Email @Size(max=200) String email;
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}