ingo@1523: package de.intevation.flys.client.client.ui;
ingo@1523:
ingo@1523: import java.util.ArrayList;
ingo@1523: import java.util.List;
ingo@1523:
ingo@1523: import com.smartgwt.client.data.DataSource;
ingo@1523: import com.smartgwt.client.data.DataSourceField;
ingo@1523: import com.smartgwt.client.types.Alignment;
ingo@1523: import com.smartgwt.client.types.FieldType;
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@1523: import de.intevation.flys.client.shared.model.DataList;
ingo@1523: import de.intevation.flys.client.shared.model.Data;
ingo@1523:
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:
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@1523: protected DynamicForm lowerForm;
ingo@1523: protected DynamicForm upperForm;
ingo@1523:
ingo@1524: protected String dataName;
ingo@1524:
ingo@1523:
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@1523: return root;
ingo@1523: }
ingo@1523:
ingo@1523:
ingo@1523: @Override
ingo@1523: public Canvas createOld(DataList data) {
ingo@1523: // TODO IMPLEMENT ME
ingo@1523: return new Canvas();
ingo@1523: }
ingo@1523:
ingo@1523:
ingo@1523: @Override
ingo@1523: protected Data[] getData() {
ingo@1523: return new Data[0];
ingo@1523: }
ingo@1523:
ingo@1523:
ingo@1523: @Override
ingo@1523: public List validate() {
ingo@1523: List errors = new ArrayList();
ingo@1523:
ingo@1523: if (!lowerForm.validate()) {
ingo@1523: errors.add("LOWER ERRORS");
ingo@1523: }
ingo@1523:
ingo@1523: if (!upperForm.validate()) {
ingo@1523: errors.add("UPPER ERRORS");
ingo@1523: }
ingo@1523:
ingo@1523: return errors;
ingo@1523: }
ingo@1523:
ingo@1523:
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@1524: public String getUpper() {
ingo@1524: return upperForm.getValueAsString(FIELD_UPPER);
ingo@1524: }
ingo@1524:
ingo@1524:
ingo@1523: protected Canvas createLabel(DataList dataList) {
ingo@1523: Label label = new Label(dataList.getLabel());
ingo@1523:
ingo@1523: label.setWidth(100);
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 :