Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/TextProvider.java @ 791:9b1499a65aaa
Finished the panel that allows integers and the string 'auto'.
flys-client/trunk@2298 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 07 Jul 2011 10:33:29 +0000 |
parents | 4e0b73b7113b |
children | 40269a176cd2 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/TextProvider.java Wed Jul 06 15:34:38 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/TextProvider.java Thu Jul 07 10:33:29 2011 +0000 @@ -1,32 +1,52 @@ package de.intevation.flys.client.client.ui; +import java.util.ArrayList; +import java.util.List; + import com.google.gwt.core.client.GWT; +import com.smartgwt.client.data.DataSource; +import com.smartgwt.client.data.DataSourceField; +import com.smartgwt.client.types.Alignment; +import com.smartgwt.client.types.FieldType; +import com.smartgwt.client.types.TitleOrientation; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; -import com.smartgwt.client.widgets.form.fields.TextItem; +import com.smartgwt.client.widgets.form.events.ItemChangedEvent; +import com.smartgwt.client.widgets.form.events.ItemChangedHandler; +import com.smartgwt.client.widgets.form.validator.Validator; import com.smartgwt.client.widgets.layout.HLayout; import de.intevation.flys.client.shared.model.Data; import de.intevation.flys.client.shared.model.DataItem; import de.intevation.flys.client.shared.model.DataList; +import de.intevation.flys.client.shared.model.DefaultData; +import de.intevation.flys.client.shared.model.DefaultDataItem; + +import de.intevation.flys.client.client.FLYSConstants; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ -public class TextProvider extends AbstractUIProvider { +public class TextProvider +extends AbstractUIProvider +implements ItemChangedHandler +{ - public static final String FIELD_NAME = "textprovider_inputfield"; + public static final String FIELD_NAME = "textprovider_inputfield"; + public static final int FORM_WIDTH = 400; + public static final int TITLE_WIDTH = 75; + + + protected static FLYSConstants MSG = GWT.create(FLYSConstants.class); protected DynamicForm form; @Override public Canvas create(DataList dataList) { - GWT.log("CREATE NEW TEXTPROVIDER PANEL"); - return createForm(); } @@ -37,23 +57,69 @@ protected Canvas createForm(String title) { - HLayout layout = new HLayout(); + form = new DynamicForm(); + form.addItemChangedHandler(this); + form.setTitlePrefix(""); + form.setTitleSuffix(": "); + form.setTitleAlign(Alignment.LEFT); + form.setTitleOrientation(TitleOrientation.LEFT); + form.setTitleWidth(getTitleWidth()); + form.setWidth(getFormWidth()); - if (title != null && title.length() > 0) { - Label label = new Label(title); - label.setHeight(25); - layout.addMember(label); + DataSourceField item = createField(); + item.setTitle(title); + + Validator validator = getValidator(); + if (validator != null) { + item.setValidators(validator); } - form = new DynamicForm(); - layout.addMember(form); + DataSource source = new DataSource(); + source.setFields(item); - TextItem item = new TextItem(FIELD_NAME); - item.setShowTitle(false); + form.setDataSource(source); - form.setFields(item); + return form; + } - return layout; + + protected DataSourceField createField() { + return new DataSourceField(getFieldName(), getFieldType()); + } + + + protected String getFieldName() { + return FIELD_NAME; + } + + + protected FieldType getFieldType() { + return FieldType.TEXT; + } + + + protected Validator getValidator() { + return null; + } + + + protected int getFormWidth() { + return FORM_WIDTH; + } + + + protected int getTitleWidth() { + return TITLE_WIDTH; + } + + + protected String getDataName() { + return null; + } + + + protected String getValueAsString() { + return (String) form.getValue(getFieldName()); } @@ -79,8 +145,31 @@ @Override + public List<String> validate() { + List<String> errors = new ArrayList<String>(); + + if (!form.validate()) { + errors.add(MSG.wrongFormat()); + } + + return errors; + } + + + @Override protected Data[] getData() { - return new Data[0]; + String value = getValueAsString(); + String name = getDataName(); + + DataItem item = new DefaultDataItem(name, name, value); + return new Data[] { new DefaultData( + name, null, null, new DataItem[] { item }) }; + } + + + @Override + public void onItemChanged(ItemChangedEvent event) { + form.validate(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :