# HG changeset patch # User Christian Lins # Date 1348754964 0 # Node ID 62332fa199bfd78187578f908bf6c782337577ed # Parent 87e7571970e6abcaea50374e13c80dfb31d59642 Work on "Date" support for ManualPointsEditor. flys-client/trunk@5621 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 87e7571970e6 -r 62332fa199bf flys-client/ChangeLog --- a/flys-client/ChangeLog Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/ChangeLog Thu Sep 27 14:09:24 2012 +0000 @@ -1,3 +1,14 @@ +2012-09-27 Christian Lins + + * src/main/java/de/intevation/flys/client/client/ui/chart/ManualPointsEditor.java, + src/main/java/de/intevation/flys/client/shared/model/DoubleProperty.java, + src/main/java/de/intevation/flys/client/shared/model/PropertySetting.java, + src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java: + Add "Date" support for Manual Points editor (not finished yet). + + * src/main/java/de/intevation/flys/client/shared/model/MapMode.java: + Add comment. + 2012-09-27 Sascha L. Teichmann * src/main/java/de/intevation/flys/client/shared/model/MapMode.java, diff -r 87e7571970e6 -r 62332fa199bf flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ManualPointsEditor.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ManualPointsEditor.java Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ManualPointsEditor.java Thu Sep 27 14:09:24 2012 +0000 @@ -72,6 +72,8 @@ /** The listGrid showing point entries. */ protected ListGrid listGrid; + protected ListGridFieldType fieldTypeX = ListGridFieldType.FLOAT; + /** Service handle to clone and add artifacts to collection. */ LoadArtifactServiceAsync loadArtifactService = GWT.create( de.intevation.flys.client.client.services.LoadArtifactService.class); @@ -170,52 +172,6 @@ listGrid.setCanEdit(true); listGrid.setShowHeaderContextMenu(false); - CellFormatter doubleFormat = new CellFormatter() { - public String format(Object value, ListGridRecord record, int rowNum, int colNum) { - if(value != null) { - NumberFormat nf = NumberFormat.getDecimalFormat(); - try { - double d = Double.valueOf(value.toString()).doubleValue(); - return nf.format(d); - } catch (Exception e) { - return value.toString(); - } - } else { - return null; - } - }}; - - CellEditValueParser cevp = new CellEditValueParser() { - public Object parse(Object value, ListGridRecord record, int rowNum, int colNum) { - if (value == null) - return null; - try { - NumberFormat nf = NumberFormat.getDecimalFormat(); - double d = nf.parse(value.toString()); - return (new Double(d)).toString(); - } - catch(NumberFormatException nfe) { - return value; - } - } - }; - - CellEditValueFormatter cevf = new CellEditValueFormatter() { - public Object format(Object value, ListGridRecord record, int rowNum, int colNum) { - if (value == null) { - return ""; - } - NumberFormat nf = NumberFormat.getDecimalFormat(); - try { - double d = Double.valueOf(value.toString()).doubleValue(); - return nf.format(d); - } - catch(NumberFormatException nfe) { - return value; - } - } - }; - // Use X and Y as default fallback. String xAxis = "X"; String yAxis = "Y"; @@ -226,6 +182,7 @@ if(axes != null) { for (Property p: axes) { PropertyGroup pg = (PropertyGroup)p; + GWT.log(pg.toString()); StringProperty id = (StringProperty)pg.getPropertyByName("id"); if(id.getValue().equals("X")) { @@ -240,18 +197,29 @@ } } } + + CellFormatter format = createCellFormatter(); + CellEditValueParser cevp = createCellEditValueParser(); + CellEditValueFormatter cevf = createCellEditValueFormatter(); + ListGridField xField = - new ListGridField(PointRecord.ATTRIBUTE_X, xAxis); - xField.setType(ListGridFieldType.FLOAT); - xField.setCellFormatter(doubleFormat); - xField.setEditValueParser(cevp); - xField.setEditValueFormatter(cevf); - + new ListGridField(PointRecord.ATTRIBUTE_X, xAxis); + if(xAxis.equalsIgnoreCase("date") || xAxis.equalsIgnoreCase("Datum")) { + // FIXME: This is a hack for the special axis with Date type + xField.setType(ListGridFieldType.DATE); + this.fieldTypeX = ListGridFieldType.DATE; + } + else { + xField.setType(ListGridFieldType.FLOAT); + xField.setCellFormatter(format); + xField.setEditValueParser(cevp); + xField.setEditValueFormatter(cevf); + } ListGridField yField = new ListGridField(PointRecord.ATTRIBUTE_Y, yAxis); yField.setType(ListGridFieldType.FLOAT); - yField.setCellFormatter(doubleFormat); + yField.setCellFormatter(format); yField.setEditValueParser(cevp); yField.setEditValueFormatter(cevf); @@ -326,6 +294,61 @@ } + protected CellFormatter createCellFormatter() { + return new CellFormatter() { + public String format(Object value, ListGridRecord record, int rowNum, int colNum) { + if(value != null) { + NumberFormat nf = NumberFormat.getDecimalFormat(); + try { + double d = Double.valueOf(value.toString()).doubleValue(); + return nf.format(d); + } catch (Exception e) { + return value.toString(); + } + } else { + return null; + } + }}; + } + + + protected CellEditValueParser createCellEditValueParser() { + return new CellEditValueParser() { + public Object parse(Object value, ListGridRecord record, int rowNum, int colNum) { + if (value == null) + return null; + try { + NumberFormat nf = NumberFormat.getDecimalFormat(); + double d = nf.parse(value.toString()); + return (new Double(d)).toString(); + } + catch(NumberFormatException nfe) { + return value; + } + } + }; + } + + + protected CellEditValueFormatter createCellEditValueFormatter() { + return new CellEditValueFormatter() { + public Object format(Object value, ListGridRecord record, int rowNum, int colNum) { + if (value == null) { + return ""; + } + NumberFormat nf = NumberFormat.getDecimalFormat(); + try { + double d = Double.valueOf(value.toString()).doubleValue(); + return nf.format(d); + } + catch(NumberFormatException nfe) { + return value; + } + } + }; + } + + /** Create JSON representation of the points present in the list grid. */ protected JSONArray jsonArrayFromListGrid() { JSONArray list = new JSONArray(); @@ -357,8 +380,13 @@ nameString = xString + "/" + yString; } - data.set(0, new JSONNumber(record. - getAttributeAsDouble(PointRecord.ATTRIBUTE_X))); + if(fieldTypeX.equals(ListGridFieldType.DATE)) { + data.set(0, new JSONString(record.getAttribute(PointRecord.ATTRIBUTE_X))); + } + else { + data.set(0, new JSONNumber(record. + getAttributeAsDouble(PointRecord.ATTRIBUTE_X))); + } data.set(1, new JSONNumber(record. getAttributeAsDouble(PointRecord.ATTRIBUTE_Y))); data.set(2, new JSONString(nameString)); @@ -471,8 +499,6 @@ protected static final String ATTRIBUTE_NAME = "name"; protected static final String ATTRIBUTE_ACTIVE = "active"; - private PointRecord() {;} - public PointRecord(boolean b, double x, double y, String name) { setActive(b); setName(name); @@ -518,9 +544,14 @@ protected boolean isDialogValid() { boolean valid = true; for (ListGridRecord record : listGrid.getRecords()) { - if (record.getAttributeAsDouble(PointRecord.ATTRIBUTE_X) == null - || record.getAttributeAsDouble(PointRecord.ATTRIBUTE_Y) == null) { - return false; + try { + if (record.getAttribute(PointRecord.ATTRIBUTE_X) == null + || record.getAttribute(PointRecord.ATTRIBUTE_Y) == null) { + return false; + } + } + catch(IllegalArgumentException ex) { + } } if (listGrid.hasErrors()) { diff -r 87e7571970e6 -r 62332fa199bf flys-client/src/main/java/de/intevation/flys/client/shared/model/DoubleProperty.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/DoubleProperty.java Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/DoubleProperty.java Thu Sep 27 14:09:24 2012 +0000 @@ -1,10 +1,10 @@ package de.intevation.flys.client.shared.model; +import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.NumberFormat; + import java.util.HashMap; -import com.google.gwt.i18n.client.NumberFormat; -import com.google.gwt.core.client.GWT; - /** * @author Raimund Renkert */ @@ -74,6 +74,7 @@ return nf.format(dv); } + @Override public Object clone() { DoubleProperty clone = new DoubleProperty(this.getName(), this.getValue()); @@ -82,5 +83,4 @@ } return clone; } - } diff -r 87e7571970e6 -r 62332fa199bf flys-client/src/main/java/de/intevation/flys/client/shared/model/MapMode.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/MapMode.java Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/MapMode.java Thu Sep 27 14:09:24 2012 +0000 @@ -12,6 +12,9 @@ */ public class MapMode extends DefaultOutputMode { + /** + * Default constructor required for serialization. + */ public MapMode() { } diff -r 87e7571970e6 -r 62332fa199bf flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertyGroup.java Thu Sep 27 14:09:24 2012 +0000 @@ -1,9 +1,10 @@ package de.intevation.flys.client.shared.model; +import java.util.ArrayList; import java.util.List; -import java.util.ArrayList; /** + * A group of properties. * @author Raimund Renkert */ public class PropertyGroup implements Property, Cloneable { @@ -14,7 +15,6 @@ protected List properties; public PropertyGroup() { - } public PropertyGroup(String name) { @@ -51,7 +51,7 @@ return null; } - + @Override public Object clone() { PropertyGroup clone = new PropertyGroup(this.getName()); List cloneList = new ArrayList(); @@ -61,4 +61,20 @@ clone.setProperties(cloneList); return clone; } + + @Override + public String toString() { + StringBuilder buf = new StringBuilder(); + + for(Property p : properties) { + buf.append(p.getName()); + buf.append("="); + if(p instanceof PropertySetting) { + buf.append(((PropertySetting)p).getValue().toString()); + } + buf.append(" "); + } + + return buf.toString(); + } } diff -r 87e7571970e6 -r 62332fa199bf flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertySetting.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertySetting.java Thu Sep 27 09:39:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/PropertySetting.java Thu Sep 27 14:09:24 2012 +0000 @@ -1,7 +1,8 @@ package de.intevation.flys.client.shared.model; +import java.util.ArrayList; import java.util.HashMap; -import java.util.ArrayList; +import java.util.List; /** * @author Raimund Renkert @@ -63,11 +64,11 @@ return attributes.get(key); } - public ArrayList getAttributeList() { + public List getAttributeList() { return new ArrayList(attributes.keySet()); } - + @Override public Object clone() { PropertySetting clone = new PropertySetting(this.getName(), this.getValue().toString());