ingo@1523: package de.intevation.flys.client.client.ui; ingo@1523: ingo@1606: import com.google.gwt.core.client.GWT; ingo@1606: ingo@1523: import com.smartgwt.client.types.Alignment; ingo@1523: import com.smartgwt.client.widgets.Canvas; ingo@1523: import com.smartgwt.client.widgets.Label; ingo@1523: import com.smartgwt.client.widgets.form.DynamicForm; ingo@1523: import com.smartgwt.client.widgets.form.fields.FormItem; ingo@1523: import com.smartgwt.client.widgets.form.fields.TextItem; ingo@1523: import com.smartgwt.client.widgets.form.validator.Validator; ingo@1523: import com.smartgwt.client.widgets.layout.HLayout; ingo@1523: import com.smartgwt.client.widgets.layout.VLayout; ingo@1523: ingo@1606: import de.intevation.flys.client.client.FLYSConstants; ingo@1523: import de.intevation.flys.client.shared.model.Data; ingo@1554: import de.intevation.flys.client.shared.model.DataItem; christian@4184: import de.intevation.flys.client.shared.model.DataList; ingo@1554: import de.intevation.flys.client.shared.model.RangeData; ingo@1523: christian@4184: import java.util.ArrayList; christian@4184: import java.util.List; christian@4184: ingo@1523: ingo@1523: /** ingo@1523: * An UIProvider for inserting ranges. ingo@1523: * ingo@1523: * @author Ingo Weinzierl ingo@1523: */ ingo@1523: public abstract class RangePanel extends AbstractUIProvider { ingo@1523: christian@4184: private static final long serialVersionUID = -9213089589150335651L; christian@4184: ingo@1523: public static final String FIELD_LOWER = "field_lower"; ingo@1523: public static final String FIELD_UPPER = "field_upper"; ingo@1523: ingo@1523: ingo@1606: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@1606: ingo@1523: protected DynamicForm lowerForm; ingo@1523: protected DynamicForm upperForm; ingo@1523: ingo@1524: protected String dataName; ingo@1524: ingo@1523: ingo@1606: public abstract Object getMaxLower(); ingo@1606: ingo@1606: public abstract Object getMaxUpper(); ingo@1606: ingo@1606: ingo@1606: ingo@1523: @Override ingo@1523: public Canvas create(DataList data) { ingo@1524: setDataName(data); ingo@1524: ingo@1523: VLayout root = new VLayout(); ingo@1523: ingo@1523: root.addMember(createLabel(data)); ingo@1523: root.addMember(createForm(data)); ingo@1523: root.addMember(getNextButton()); ingo@1523: ingo@1566: initDefaults(data); ingo@1566: ingo@1523: return root; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: @Override ingo@1554: public Canvas createOld(DataList dataList) { ingo@1554: Data data = dataList.get(0); ingo@1554: DataItem[] items = data.getItems(); ingo@1554: ingo@1554: HLayout layout = new HLayout(); ingo@1554: ingo@1554: Label label = new Label(dataList.getLabel()); ingo@1554: label.setWidth(200); ingo@1554: label.setHeight(20); ingo@1554: ingo@1554: Label value = new Label(items[0].getLabel()); ingo@1554: value.setHeight(20); ingo@1554: ingo@1554: layout.addMember(label); ingo@1554: layout.addMember(value); ingo@1554: layout.addMember(getBackButton(dataList.getState())); ingo@1554: ingo@1554: return layout; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: @Override ingo@1606: public List validate() { ingo@1606: List errors = new ArrayList(); ingo@1606: ingo@1606: if (!lowerForm.validate()) { ingo@1606: String msg = MSG.error_validate_range(); ingo@1606: msg = msg.replace("$1", getLower()); ingo@1606: msg = msg.replace("$2", String.valueOf(getMaxLower())); ingo@1606: msg = msg.replace("$3", String.valueOf(getMaxLower())); ingo@1606: errors.add(msg); ingo@1606: } ingo@1606: ingo@1606: if (!upperForm.validate()) { ingo@1606: String msg = MSG.error_validate_range(); ingo@1606: msg = msg.replace("$1", getUpper()); ingo@1606: msg = msg.replace("$2", String.valueOf(getMaxLower())); ingo@1606: msg = msg.replace("$3", String.valueOf(getMaxUpper())); ingo@1606: errors.add(msg); ingo@1606: } ingo@1606: ingo@1606: return errors; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: @Override ingo@1606: protected Data[] getData() { ingo@1606: return new Data[0]; ingo@1523: } ingo@1523: ingo@1523: ingo@1566: protected void initDefaults(DataList dataList) { ingo@1566: RangeData data = findRangeData(dataList); ingo@1566: ingo@1566: if (data != null) { ingo@1566: setLower(String.valueOf(data.getDefaultLower())); ingo@1566: setUpper(String.valueOf(data.getDefaultUpper())); ingo@1566: } ingo@1566: } ingo@1566: ingo@1566: ingo@1554: protected RangeData findRangeData(DataList dataList) { ingo@1554: for (int i = 0, n = dataList.size(); i < n; i++) { ingo@1554: Data tmp = dataList.get(i); ingo@1554: ingo@1554: if (tmp instanceof RangeData) { ingo@1554: return (RangeData) tmp; ingo@1554: } ingo@1554: } ingo@1554: return null; ingo@1554: } ingo@1554: ingo@1554: ingo@1524: protected void setDataName(DataList dataList) { ingo@1524: Data data = dataList.get(0); ingo@1524: ingo@1524: this.dataName = data.getLabel(); ingo@1524: } ingo@1524: ingo@1524: ingo@1524: public String getDataName() { ingo@1524: return dataName; ingo@1524: } ingo@1524: ingo@1524: ingo@1524: public String getLower() { ingo@1524: return lowerForm.getValueAsString(FIELD_LOWER); ingo@1524: } ingo@1524: ingo@1524: ingo@1566: public void setLower(String lower) { ingo@1566: lowerForm.setValue(FIELD_LOWER, lower); ingo@1566: } ingo@1566: ingo@1566: ingo@1524: public String getUpper() { ingo@1524: return upperForm.getValueAsString(FIELD_UPPER); ingo@1524: } ingo@1524: ingo@1524: ingo@1566: public void setUpper(String upper) { ingo@1566: upperForm.setValue(FIELD_UPPER, upper); ingo@1566: } ingo@1566: ingo@1566: ingo@1523: protected Canvas createLabel(DataList dataList) { ingo@1554: RangeData rangeData = findRangeData(dataList); ingo@1523: ingo@1554: if (rangeData == null) { ingo@1554: return new Canvas(); ingo@1554: } ingo@1554: ingo@1554: Label label = new Label(rangeData.getDescription()); ingo@1554: ingo@1554: label.setWidth100(); ingo@1523: label.setHeight(25); ingo@1523: ingo@1523: return label; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected Canvas createForm(DataList dataList) { ingo@1523: lowerForm = createLowerForm(dataList); ingo@1523: upperForm = createUpperForm(dataList); ingo@1523: ingo@1523: HLayout formLayout = new HLayout(); ingo@1523: formLayout.addMember(lowerForm); ingo@1523: formLayout.addMember(createSpacer()); ingo@1523: formLayout.addMember(upperForm); ingo@1523: ingo@1523: return formLayout; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected DynamicForm newForm() { ingo@1523: DynamicForm form = new DynamicForm(); ingo@1523: form.setTitlePrefix(""); ingo@1523: form.setTitleSuffix(""); ingo@1523: form.setTitle(""); ingo@1523: form.setTitleField(""); ingo@1523: ingo@1523: return form; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected FormItem newFormItem(String name) { ingo@1523: TextItem item = new TextItem(name, ""); ingo@1523: item.setShowTitle(false); ingo@1523: ingo@1523: return item; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected DynamicForm createLowerForm(DataList dataList) { ingo@1523: DynamicForm lowerForm = newForm(); ingo@1523: FormItem lower = createLowerField(dataList); ingo@1523: ingo@1523: lowerForm.setFields(lower); ingo@1523: ingo@1523: return lowerForm; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected DynamicForm createUpperForm(DataList dataList) { ingo@1523: DynamicForm upperForm = newForm(); ingo@1523: FormItem upper = createUpperField(dataList); ingo@1523: ingo@1523: upperForm.setFields(upper); ingo@1523: ingo@1523: return upperForm; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected Canvas createSpacer() { ingo@1523: Label spacer = new Label("-"); ingo@1523: spacer.setWidth(25); ingo@1523: spacer.setHeight(25); ingo@1523: spacer.setAlign(Alignment.CENTER); ingo@1523: ingo@1523: return spacer; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected FormItem createLowerField(DataList dataList) { ingo@1523: return createField(FIELD_LOWER, createLowerValidators(dataList)); ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected FormItem createUpperField(DataList dataList) { ingo@1523: return createField(FIELD_UPPER, createUpperValidators(dataList)); ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected FormItem createField(String name, Validator[] validators) { ingo@1523: FormItem field = newFormItem(name); ingo@1523: ingo@1523: if (validators != null && validators.length > 0) { ingo@1523: field.setValidators(validators); ingo@1523: } ingo@1523: ingo@1523: return field; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected Validator[] createLowerValidators(DataList dataList) { ingo@1523: return null; ingo@1523: } ingo@1523: ingo@1523: ingo@1523: protected Validator[] createUpperValidators(DataList dataList) { ingo@1523: return null; ingo@1523: } ingo@1523: } ingo@1523: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :