# HG changeset patch # User Ingo Weinzierl # Date 1310034809 0 # Node ID 9b1499a65aaa80805bc34ae834adba52cd33bbac # Parent 3fa8583434b28ce8725b8b8e4c2d7d6b77b3e6b6 Finished the panel that allows integers and the string 'auto'. flys-client/trunk@2298 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 3fa8583434b2 -r 9b1499a65aaa flys-client/ChangeLog --- a/flys-client/ChangeLog Wed Jul 06 15:34:38 2011 +0000 +++ b/flys-client/ChangeLog Thu Jul 07 10:33:29 2011 +0000 @@ -1,3 +1,18 @@ +2011-07-07 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/client/ui/TextProvider.java: + Made methods in this class much smaller to override them easily in + subclasses. In addition, the TextItem has been replaced with a + DataSourceField which seems to be more easily to change in subclasses. + + * src/main/java/de/intevation/flys/client/client/ui/AutoIntegerPanel.java: + Override required methods of TextProvider. This panel now accepts + integer values and the string "auto". An inner class + AutoIntegerValidator is used to validate the user input. + + * src/main/webapp/FLYS.css: Set style for html label elements. Those label + elements are used in forms to label items. + 2011-07-06 Ingo Weinzierl * src/main/java/de/intevation/flys/client/client/event/ParameterChangeEvent.java: diff -r 3fa8583434b2 -r 9b1499a65aaa flys-client/src/main/java/de/intevation/flys/client/client/ui/AutoIntegerPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/AutoIntegerPanel.java Wed Jul 06 15:34:38 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/AutoIntegerPanel.java Thu Jul 07 10:33:29 2011 +0000 @@ -4,12 +4,11 @@ import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.form.validator.Validator; +import com.smartgwt.client.widgets.form.validator.CustomValidator; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Data; -import de.intevation.flys.client.shared.model.DataItem; -import de.intevation.flys.client.shared.model.DefaultData; -import de.intevation.flys.client.shared.model.DefaultDataItem; import de.intevation.flys.client.shared.model.DataList; import de.intevation.flys.client.client.FLYSConstants; @@ -20,6 +19,9 @@ */ public class AutoIntegerPanel extends TextProvider { + public static final String FIELD_NAME = "integer_field"; + + protected static FLYSConstants MSG = GWT.create(FLYSConstants.class); protected String dataName; @@ -31,7 +33,7 @@ this.dataName = data.getLabel(); Canvas label = new Label(data.getDescription()); - Canvas form = createForm(MSG.uesk_profile_distance()); + Canvas form = createForm(getTitle()); Canvas submit = getNextButton(); VLayout layout = new VLayout(); @@ -47,13 +49,55 @@ } + protected String getTitle() { + return MSG.uesk_profile_distance(); + } + + @Override - protected Data[] getData() { - GWT.log("+++ RETURN DATA FOR STATE: " + dataName + " +++"); - String value = "TODO:FIND VALUE"; - DataItem item = new DefaultDataItem(dataName, dataName, value); - return new Data[] { new DefaultData( - dataName, null, null, new DataItem[] { item }) }; + protected String getDataName() { + return dataName; + } + + + @Override + protected String getValueAsString() { + String v = (String) form.getValue(getFieldName()); + return v.toLowerCase(); + } + + + @Override + protected Validator getValidator() { + Validator v = new AutoIntegerValidator(); + v.setValidateOnChange(false); + + return v; + } + + + public class AutoIntegerValidator extends CustomValidator { + @Override + protected boolean condition(Object value) { + String v = (String) value; + + if (v == null || v.length() == 0) { + return false; + } + + if (v.trim().equalsIgnoreCase("auto")) { + return true; + } + + try { + Integer anInt = Integer.parseInt(v); + + return true; + } + catch (NumberFormatException nfe) { + return false; + } + } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 3fa8583434b2 -r 9b1499a65aaa flys-client/src/main/java/de/intevation/flys/client/client/ui/TextProvider.java --- 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 Ingo Weinzierl */ -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 validate() { + List errors = new ArrayList(); + + 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 : diff -r 3fa8583434b2 -r 9b1499a65aaa flys-client/src/main/webapp/FLYS.css --- a/flys-client/src/main/webapp/FLYS.css Wed Jul 06 15:34:38 2011 +0000 +++ b/flys-client/src/main/webapp/FLYS.css Thu Jul 07 10:33:29 2011 +0000 @@ -99,3 +99,11 @@ border-bottom: 1px solid black; padding: 5px; } + +label { + font-family: Arial,Verdana,sans-serif; + font-size: 11px; + font-style: normal; + font-weight: 400; + color: #000000; +}