teichmann@5861: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5861: * Software engineering by Intevation GmbH teichmann@5861: * teichmann@5993: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5861: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5993: * documentation coming with Dive4Elements River for details. teichmann@5861: */ teichmann@5861: teichmann@5835: package org.dive4elements.river.client.client.ui.wq; ingo@580: felix@7588: import java.util.Date; felix@7588: ingo@580: import com.google.gwt.core.client.GWT; felix@7588: import com.google.gwt.i18n.client.DateTimeFormat; ingo@1498: import com.google.gwt.i18n.client.NumberFormat; ingo@580: ingo@580: import com.smartgwt.client.types.ListGridFieldType; ingo@580: import com.smartgwt.client.types.SelectionStyle; ingo@1498: import com.smartgwt.client.widgets.grid.CellFormatter; ingo@580: import com.smartgwt.client.widgets.grid.ListGrid; ingo@580: import com.smartgwt.client.widgets.grid.ListGridField; ingo@1498: import com.smartgwt.client.widgets.grid.ListGridRecord; ingo@580: teichmann@5835: import org.dive4elements.river.client.client.FLYSConstants; ingo@580: ingo@580: /** felix@6666: * Table showing W main values. felix@6666: * TODO becomes very similiar to QDTable. Probably mergeable. ingo@580: * @author Ingo Weinzierl ingo@580: */ ingo@580: public class WTable extends ListGrid { ingo@580: ingo@580: /** The message class that provides i18n strings.*/ ingo@580: protected FLYSConstants MESSAGE = GWT.create(FLYSConstants.class); ingo@580: ingo@580: ingo@580: public WTable() { felix@6666: String baseUrl = GWT.getHostPageBaseURL(); felix@6666: ingo@580: setWidth100(); ingo@580: setHeight100(); ingo@580: setSelectionType(SelectionStyle.NONE); ingo@580: setSelectionType(SelectionStyle.NONE); ingo@580: setShowHeaderContextMenu(false); ingo@580: setShowRecordComponents(true); ingo@580: setShowRecordComponentsByCell(true); ingo@580: setEmptyMessage(MESSAGE.empty_table()); ingo@580: ingo@580: ListGridField name = new ListGridField("name", MESSAGE.name()); ingo@580: name.setType(ListGridFieldType.TEXT); ingo@580: name.setWidth("*"); ingo@580: felix@7565: ListGridField type = new ListGridField("type", MESSAGE.type()); felix@7565: type.setType(ListGridFieldType.TEXT); felix@7565: type.setWidth("50"); felix@7565: tom@8856: ListGridField startTime = createYearListGridField( tom@8856: "starttime", MESSAGE.starttime()); felix@7557: tom@8856: ListGridField stopTime = createYearListGridField( tom@8856: "stoptime", MESSAGE.stoptime()); ingo@580: ingo@1498: final NumberFormat nf = NumberFormat.getDecimalFormat(); ingo@1498: ingo@2460: ListGridField value = new ListGridField("value", MESSAGE.wq_value_w()); raimund@903: value.setType(ListGridFieldType.FLOAT); ingo@1498: value.setCellFormatter(new CellFormatter() { ingo@1498: @Override ingo@1498: public String format(Object v, ListGridRecord r, int row, int col) { ingo@1498: if (v == null) { ingo@1498: return null; ingo@1498: } ingo@1498: ingo@1498: try { ingo@1498: double value = Double.valueOf(v.toString()); ingo@1498: return nf.format(value); ingo@1498: } ingo@1498: catch (NumberFormatException nfe) { ingo@1498: return v.toString(); ingo@1498: } ingo@1498: } ingo@1498: }); ingo@580: felix@6666: ListGridField select = new ListGridField("select", MESSAGE.selection()); felix@6666: select.setType(ListGridFieldType.ICON); felix@7590: select.setWidth(60); felix@6666: select.setCellIcon(baseUrl + MESSAGE.markerGreen()); felix@6666: felix@7587: setFields(select, name, startTime, stopTime, type, value); felix@6666: hideField("select"); felix@6666: } felix@6666: felix@6666: public void showSelect() { felix@6666: showField("select"); felix@6666: } felix@6666: felix@7588: public static ListGridField createYearListGridField( felix@7588: final String propertyName, String displayName) { tom@8856: ListGridField listGridField = new ListGridField( tom@8856: propertyName, displayName); felix@7588: listGridField.setType(ListGridFieldType.DATE); felix@7590: listGridField.setWidth("50"); felix@7588: listGridField.setCellFormatter(createYearDateFormatter(propertyName)); felix@7588: return listGridField; felix@7588: } felix@7588: tom@8856: /** Create CellFormatter that prints just the year of a date tom@8856: * stored in attributeName. */ tom@8856: private static CellFormatter createYearDateFormatter( tom@8856: final String attributeName tom@8856: ) { felix@7588: return new CellFormatter() { felix@7588: @Override tom@8856: public String format( tom@8856: Object arg0, ListGridRecord record, int arg2, int arg3) { felix@7588: Date date = record.getAttributeAsDate(attributeName); felix@7588: if (date == null) { felix@7588: return ""; felix@7588: } felix@7588: DateTimeFormat fmt = DateTimeFormat.getFormat("yyyy"); felix@7588: return fmt.format(date); felix@7588: } felix@7588: }; felix@7588: } felix@7588: felix@6666: felix@6666: /** felix@6666: * Search all records for one with attribute name equals to given name. felix@6666: * @return null if none found. felix@6666: * */ felix@6666: public Double findRecordValue(String name) { felix@6666: for (ListGridRecord record : getRecords()) { felix@6666: if (record.getAttribute("name").equals(name)) { felix@6666: return record.getAttributeAsDouble("value"); felix@6666: } felix@6666: } felix@6666: return null; ingo@580: } ingo@580: } ingo@580: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :