ingo@787: package de.intevation.flys.client.client.ui; ingo@787: ingo@787: import com.google.gwt.core.client.GWT; ingo@787: ingo@787: import com.smartgwt.client.widgets.Canvas; ingo@787: import com.smartgwt.client.widgets.Label; christian@4131: import com.smartgwt.client.widgets.form.validator.CustomValidator; ingo@791: import com.smartgwt.client.widgets.form.validator.Validator; ingo@787: import com.smartgwt.client.widgets.layout.VLayout; ingo@787: christian@4131: import de.intevation.flys.client.client.FLYSConstants; ingo@787: import de.intevation.flys.client.shared.model.Data; ingo@787: import de.intevation.flys.client.shared.model.DataList; ingo@787: ingo@787: ingo@787: /** ingo@787: * @author Ingo Weinzierl ingo@787: */ ingo@787: public class AutoIntegerPanel extends TextProvider { ingo@787: christian@4131: private static final long serialVersionUID = -6525461829035465820L; christian@4131: ingo@791: public static final String FIELD_NAME = "integer_field"; ingo@791: ingo@874: public static final String FIELD_DEFAULT_VALUE = "auto"; ingo@874: ingo@791: ingo@787: protected static FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@787: ingo@787: protected String dataName; ingo@787: ingo@787: ingo@787: @Override ingo@787: public Canvas create(DataList dataList) { ingo@787: Data data = dataList.get(0); ingo@787: this.dataName = data.getLabel(); ingo@787: ingo@787: Canvas label = new Label(data.getDescription()); ingo@791: Canvas form = createForm(getTitle()); ingo@787: Canvas submit = getNextButton(); ingo@787: ingo@787: VLayout layout = new VLayout(); ingo@787: layout.setHeight(35); ingo@787: label.setHeight(35); ingo@787: ingo@787: layout.addMember(label); ingo@787: layout.addMember(form); ingo@787: layout.addMember(submit); ingo@787: layout.setMembersMargin(10); ingo@787: ingo@794: initDefaultValues(dataList); ingo@794: ingo@787: return layout; ingo@787: } ingo@787: ingo@787: ingo@874: @Override ingo@874: protected void initDefaultValues(DataList dataList) { ingo@874: super.initDefaultValues(dataList); ingo@874: ingo@874: String def = getValueAsString(); ingo@874: ingo@874: if (def == null || def.length() == 0) { ingo@874: form.setValue(getFieldName(), FIELD_DEFAULT_VALUE); ingo@874: } ingo@874: } ingo@874: ingo@874: ingo@791: protected String getTitle() { ingo@791: return MSG.uesk_profile_distance(); ingo@791: } ingo@791: ingo@791: ingo@787: @Override ingo@791: protected String getDataName() { ingo@791: return dataName; ingo@791: } ingo@791: ingo@791: ingo@791: @Override ingo@791: protected String getValueAsString() { ingo@791: String v = (String) form.getValue(getFieldName()); ingo@791: return v.toLowerCase(); ingo@791: } ingo@791: ingo@791: ingo@791: @Override ingo@791: protected Validator getValidator() { ingo@791: Validator v = new AutoIntegerValidator(); ingo@791: v.setValidateOnChange(false); ingo@791: ingo@791: return v; ingo@791: } ingo@791: ingo@791: ingo@791: public class AutoIntegerValidator extends CustomValidator { ingo@791: @Override ingo@791: protected boolean condition(Object value) { ingo@791: String v = (String) value; ingo@791: ingo@791: if (v == null || v.length() == 0) { ingo@791: return false; ingo@791: } ingo@791: ingo@791: if (v.trim().equalsIgnoreCase("auto")) { ingo@791: return true; ingo@791: } ingo@791: ingo@791: try { christian@4131: Integer.parseInt(v); ingo@791: return true; ingo@791: } ingo@791: catch (NumberFormatException nfe) { ingo@791: return false; ingo@791: } ingo@791: } ingo@787: } ingo@787: } ingo@787: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :