ingo@787: package de.intevation.flys.client.client.ui;
ingo@787:
ingo@787: import com.google.gwt.core.client.GWT;
ingo@787:
ingo@791: import com.smartgwt.client.data.DataSource;
ingo@791: import com.smartgwt.client.data.DataSourceField;
ingo@791: import com.smartgwt.client.types.Alignment;
ingo@791: import com.smartgwt.client.types.FieldType;
ingo@791: import com.smartgwt.client.types.TitleOrientation;
ingo@787: import com.smartgwt.client.widgets.Canvas;
ingo@787: import com.smartgwt.client.widgets.Label;
ingo@787: import com.smartgwt.client.widgets.form.DynamicForm;
ingo@791: import com.smartgwt.client.widgets.form.events.ItemChangedEvent;
ingo@791: import com.smartgwt.client.widgets.form.events.ItemChangedHandler;
ingo@791: import com.smartgwt.client.widgets.form.validator.Validator;
ingo@787: import com.smartgwt.client.widgets.layout.HLayout;
ingo@787:
christian@4184: 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.DataItem;
ingo@787: import de.intevation.flys.client.shared.model.DataList;
ingo@791: import de.intevation.flys.client.shared.model.DefaultData;
ingo@791: import de.intevation.flys.client.shared.model.DefaultDataItem;
ingo@791:
christian@4184: import java.util.ArrayList;
christian@4184: import java.util.List;
ingo@787:
ingo@787:
ingo@787: /**
ingo@787: * @author Ingo Weinzierl
ingo@787: */
ingo@791: public class TextProvider
ingo@791: extends AbstractUIProvider
ingo@791: implements ItemChangedHandler
ingo@791: {
christian@4184: private static final long serialVersionUID = -6868303464989138497L;
ingo@787:
ingo@791: public static final String FIELD_NAME = "textprovider_inputfield";
ingo@791: public static final int FORM_WIDTH = 400;
ingo@791: public static final int TITLE_WIDTH = 75;
ingo@791:
ingo@791:
ingo@791: protected static FLYSConstants MSG = GWT.create(FLYSConstants.class);
ingo@787:
ingo@787: protected DynamicForm form;
ingo@787:
ingo@787:
ingo@787: @Override
ingo@787: public Canvas create(DataList dataList) {
ingo@794: Canvas form = createForm();
ingo@794:
ingo@794: initDefaultValues(dataList);
ingo@794:
ingo@794: return form;
ingo@787: }
ingo@787:
ingo@787:
ingo@787: protected Canvas createForm() {
ingo@787: return createForm(null);
ingo@787: }
ingo@787:
ingo@787:
ingo@787: protected Canvas createForm(String title) {
ingo@791: form = new DynamicForm();
ingo@791: form.addItemChangedHandler(this);
ingo@791: form.setTitlePrefix("");
ingo@791: form.setTitleSuffix(": ");
ingo@791: form.setTitleAlign(Alignment.LEFT);
ingo@791: form.setTitleOrientation(TitleOrientation.LEFT);
ingo@791: form.setTitleWidth(getTitleWidth());
ingo@791: form.setWidth(getFormWidth());
ingo@787:
ingo@791: DataSourceField item = createField();
ingo@791: item.setTitle(title);
ingo@791:
ingo@791: Validator validator = getValidator();
ingo@791: if (validator != null) {
ingo@791: item.setValidators(validator);
ingo@787: }
ingo@787:
ingo@791: DataSource source = new DataSource();
ingo@791: source.setFields(item);
ingo@787:
ingo@791: form.setDataSource(source);
ingo@787:
ingo@791: return form;
ingo@791: }
ingo@787:
ingo@791:
ingo@794: protected void initDefaultValues(DataList dataList) {
ingo@794: Data data = dataList.get(0);
ingo@794: DataItem item = data.getDefault();
ingo@794:
ingo@794: String value = item.getStringValue();
ingo@794:
ingo@794: form.setValue(getFieldName(), value);
ingo@794: }
ingo@794:
ingo@794:
ingo@791: protected DataSourceField createField() {
ingo@791: return new DataSourceField(getFieldName(), getFieldType());
ingo@791: }
ingo@791:
ingo@791:
felix@1296: /**
felix@1296: * Get field name.
felix@1296: * @return fields name (developer-centric).
felix@1296: */
ingo@791: protected String getFieldName() {
ingo@791: return FIELD_NAME;
ingo@791: }
ingo@791:
ingo@791:
felix@1296: /**
felix@1296: * Get field type.
felix@1296: * @return fields type.
felix@1296: */
ingo@791: protected FieldType getFieldType() {
ingo@791: return FieldType.TEXT;
ingo@791: }
ingo@791:
ingo@791:
ingo@791: protected Validator getValidator() {
ingo@791: return null;
ingo@791: }
ingo@791:
ingo@791:
ingo@791: protected int getFormWidth() {
ingo@791: return FORM_WIDTH;
ingo@791: }
ingo@791:
ingo@791:
ingo@791: protected int getTitleWidth() {
ingo@791: return TITLE_WIDTH;
ingo@791: }
ingo@791:
ingo@791:
felix@1296: /** @return null. */
ingo@791: protected String getDataName() {
ingo@791: return null;
ingo@791: }
ingo@791:
ingo@791:
ingo@791: protected String getValueAsString() {
ingo@791: return (String) form.getValue(getFieldName());
ingo@787: }
ingo@787:
ingo@787:
ingo@787: @Override
ingo@787: public Canvas createOld(DataList dataList) {
ingo@787: Data data = dataList.get(0);
ingo@787: DataItem[] items = data.getItems();
ingo@787:
ingo@787: HLayout layout = new HLayout();
ingo@787: Label label = new Label(dataList.getLabel());
ingo@787: Label value = new Label(items[0].getLabel());
ingo@787:
ingo@787: layout.setHeight(35);
ingo@787: layout.setWidth(400);
ingo@787: label.setWidth(200);
ingo@787:
ingo@787: layout.addMember(label);
ingo@787: layout.addMember(value);
ingo@787: layout.addMember(getBackButton(dataList.getState()));
ingo@787:
ingo@787: return layout;
ingo@787: }
ingo@787:
ingo@787:
ingo@787: @Override
ingo@791: public List validate() {
ingo@791: List errors = new ArrayList();
ingo@791:
ingo@791: if (!form.validate()) {
ingo@791: errors.add(MSG.wrongFormat());
ingo@791: }
ingo@791:
ingo@791: return errors;
ingo@791: }
ingo@791:
ingo@791:
ingo@791: @Override
ingo@787: protected Data[] getData() {
ingo@791: String value = getValueAsString();
ingo@791: String name = getDataName();
ingo@791:
ingo@791: DataItem item = new DefaultDataItem(name, name, value);
ingo@791: return new Data[] { new DefaultData(
ingo@791: name, null, null, new DataItem[] { item }) };
ingo@791: }
ingo@791:
ingo@791:
ingo@791: @Override
ingo@791: public void onItemChanged(ItemChangedEvent event) {
ingo@791: form.validate();
ingo@787: }
ingo@787: }
ingo@787: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :