Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/DoubleArrayPanel.java @ 211:b92281182c6b
Removed the FLYSMessages interface and replaced it with a FLYSConstants interface - this interface has the ability to lookup i18n strings with given keys.
flys-client/trunk@1645 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 05 Apr 2011 08:13:48 +0000 |
parents | a3d235c63195 |
children | 137daff2c732 |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.Map; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.NumberFormat; import com.smartgwt.client.types.TitleOrientation; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.form.fields.TextItem; import com.smartgwt.client.widgets.form.fields.events.BlurHandler; import de.intevation.flys.client.client.FLYSConstants; public class DoubleArrayPanel extends DynamicForm { /** The message class that provides i18n strings.*/ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); /** The constant input field name.*/ public static final String FIELD_NAME = "doublearray"; /** * Creates a new form with a single input field that displays an array of * double values. * * @param name The name of the TextItem. * @param title The title of the TextItem. * @param values The double values that should be displayed initially. * @param handler The BlurHandler that is used to valide the input. */ public DoubleArrayPanel( String title, double[] values, BlurHandler handler) { TextItem ti = new TextItem(FIELD_NAME); StaticTextItem sti = new StaticTextItem("staticarray"); ti.setShowTitle(false); sti.setShowTitle(false); sti.setValue(title); ti.addBlurHandler(handler); setFields(ti, sti); setTitleOrientation(TitleOrientation.RIGHT); setNumCols(2); if (values == null) { return; } NumberFormat f = NumberFormat.getDecimalFormat(); StringBuilder text = new StringBuilder(); boolean firstItem = true; for (double val: values) { if (!firstItem) { text.append(" "); } text.append(f.format(val)); firstItem = false; } ti.setValue(text.toString()); } /** * This method validates the entered text in the location input field. If * there are values that doesn't represent a valid location, an error is * displayed. * * @param item The FormItem. */ protected boolean validateForm(FormItem item) { if (item instanceof StaticTextItem) { return true; } boolean valid = true; String value = (String) item.getValue(); if (value == null) { return valid; } String[] parts = value.split(" "); if (parts == null) { return valid; } NumberFormat f = NumberFormat.getDecimalFormat(); Map errors = getErrors(); try { for (String part: parts) { double location = f.parse(part); } errors.remove(item.getFieldName()); } catch (NumberFormatException nfe) { errors.put(item.getFieldName(), MESSAGES.wrongFormat()); valid = false; } setErrors(errors, true); return valid; } /** * This method returns the double array that has been entered in * <i>item</i>. * * @param item The item that contains the desired values. * * @return the values as double array. */ public double[] getInputValues(FormItem item) { String value = (String) item.getValue(); if (value == null) { return null; } String[] parts = value.split(" "); if (parts == null) { return null; } double[] values = new double[parts.length]; NumberFormat f = NumberFormat.getDecimalFormat(); int i = 0; for (String part: parts) { try { values[i++] = f.parse(part); } catch (NumberFormatException nfe) { // do nothing } } return values; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :