package org.vaadin.viritin.v7.fields;
import com.vaadin.event.FieldEvents;
import org.apache.commons.lang3.StringUtils;
/**
* An field to edit integers.
*
* The actual field implementation uses HTML5 input type "number" so you'll have
* up/down arrows available in addition to simply typing the value. The client
* side also prevent non numeric characters to be typed. Some of these advanced
* UX helpers may work in modern browsers only, but the field should be
* perfectly usable with older browsers as well.
*
* @author Matti Tahvonen
*/
public class IntegerField extends AbstractNumberField<Integer> {
private static final long serialVersionUID = 377246000306551089L;
public IntegerField() {
setSizeUndefined();
}
public IntegerField(String caption) {
setCaption(caption);
}
@Override
protected void userInputToValue(String str) {
if (StringUtils.isNotBlank(str)) {
setValue(Integer.parseInt(str));
} else {
setValue(null);
}
}
@Override
public Class<? extends Integer> getType() {
return Integer.class;
}
public IntegerField withCaption(String caption) {
setCaption(caption);
return this;
}
public IntegerField withId(String id) {
setId(id);
return this;
}
public IntegerField withFullWidth() {
setWidth("100%");
return this;
}
public IntegerField withWidth(float width, Unit unit) {
setWidth(width, unit);
return this;
}
public IntegerField withWidth(String width) {
setWidth(width);
return this;
}
@Override
public IntegerField withBlurListener(FieldEvents.BlurListener listener) {
return (IntegerField) super.withBlurListener(listener);
}
@Override
public IntegerField withFocusListener(FieldEvents.FocusListener listener) {
return (IntegerField) super.withFocusListener(listener);
}
}