teichmann@5835: package org.dive4elements.river.client.client.ui.chart; christian@3983: christian@3983: import com.google.gwt.json.client.JSONArray; christian@3983: import com.google.gwt.json.client.JSONBoolean; christian@3983: import com.google.gwt.json.client.JSONNumber; christian@3983: import com.google.gwt.json.client.JSONString; christian@3983: import com.google.gwt.json.client.JSONValue; christian@3983: christian@3983: import com.smartgwt.client.widgets.grid.ListGridRecord; christian@3983: christian@3983: /** Simple record to store points. */ christian@3983: public class PointRecord extends ListGridRecord { christian@3983: protected static final String ATTRIBUTE_X = "X"; christian@3983: protected static final String ATTRIBUTE_Y = "Y"; christian@3983: protected static final String ATTRIBUTE_NAME = "name"; christian@3983: protected static final String ATTRIBUTE_ACTIVE = "active"; christian@3983: christian@3983: /** From a JSON-encoded point, create a PointRecord. */ christian@3983: public static PointRecord fromJSON(JSONArray jsonArray) { christian@3983: JSONValue x = jsonArray.get(0); christian@3983: JSONNumber y = (JSONNumber) jsonArray.get(1); christian@3983: JSONString s = (JSONString) jsonArray.get(2); christian@3983: JSONBoolean b = (JSONBoolean)jsonArray.get(3); christian@3983: christian@3983: if(x instanceof JSONNumber) { christian@3983: return new PointRecord( christian@3983: b.booleanValue(), ((JSONNumber)x).doubleValue(), christian@3983: y.doubleValue(), s.stringValue()); christian@3983: } christian@3983: else { christian@3983: return new PointRecord( christian@3983: b.booleanValue(), ((JSONString)x).stringValue(), christian@3983: y.doubleValue(), s.stringValue()); christian@3983: } christian@3983: } christian@3983: christian@3983: protected boolean isTimeseriesPoint = false; christian@3983: christian@3983: public PointRecord(boolean isActive, double x, double y, String name) { christian@3983: setActive(isActive); christian@3983: setName(name); christian@3983: setX(x); christian@3983: setY(y); christian@3983: } christian@3983: christian@3983: /** christian@3983: * Constructor taking the x axis value as String representing a Date value. christian@3983: * @param isActive christian@3983: * @param x christian@3983: * @param y christian@3983: * @param name christian@3983: */ christian@3983: public PointRecord(boolean isActive, String x, double y, String name) { christian@3983: setActive(isActive); christian@3983: setName(name); christian@3983: setX(x); christian@3983: setY(y); christian@3983: christian@3983: this.isTimeseriesPoint = true; christian@3983: } christian@3983: christian@3983: public void setActive(boolean isActive) { christian@3983: setAttribute(ATTRIBUTE_ACTIVE, isActive); christian@3983: } christian@3983: christian@3983: public boolean isActive() { christian@3983: return getAttributeAsBoolean(ATTRIBUTE_ACTIVE); christian@3983: } christian@3983: christian@3983: public boolean isTimeseriesPoint() { christian@3983: return this.isTimeseriesPoint; christian@3983: } christian@3983: christian@3983: public void setName(String name) { christian@3983: setAttribute(ATTRIBUTE_NAME, name); christian@3983: } christian@3983: christian@3983: public String getName() { christian@3983: return getAttributeAsString(ATTRIBUTE_NAME); christian@3983: } christian@3983: christian@3983: public void setX(double x) { christian@3983: setAttribute(ATTRIBUTE_X, x); christian@3983: } christian@3983: christian@3983: public void setX(String date) { christian@3983: setAttribute(ATTRIBUTE_X, date); christian@3983: } christian@3983: christian@3983: public void setY(double y) { christian@3983: setAttribute(ATTRIBUTE_Y, y); christian@3983: } christian@3983: christian@3983: public double getX() { christian@3983: return getAttributeAsDouble(ATTRIBUTE_X); christian@3983: } christian@3983: christian@3983: public String getXAsDate() { christian@3983: return getAttributeAsString(ATTRIBUTE_X); christian@3983: } christian@3983: christian@3983: public double getY() { christian@3983: return getAttributeAsDouble(ATTRIBUTE_Y); christian@3983: } christian@3983: }