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 :