Mercurial > dive4elements > river
diff flys-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java @ 5834:f507086aa94b
Repaired internal references.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:31:32 +0200 |
parents | flys-client/src/main/java/de/intevation/flys/client/client/ui/TableDataPanel.java@03de5c424f95 |
children | 821a02bbfb4e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java Thu Apr 25 12:31:32 2013 +0200 @@ -0,0 +1,166 @@ +package de.intevation.flys.client.client.ui; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.user.client.rpc.AsyncCallback; + +import com.smartgwt.client.types.ListGridFieldType; +import com.smartgwt.client.util.SC; +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.grid.ListGrid; +import com.smartgwt.client.widgets.grid.ListGridField; +import com.smartgwt.client.widgets.grid.ListGridRecord; +import com.smartgwt.client.widgets.layout.VLayout; + +import de.intevation.flys.client.client.Config; +import de.intevation.flys.client.client.FLYSConstants; +import de.intevation.flys.client.client.services.CSVExportService; +import de.intevation.flys.client.client.services.CSVExportServiceAsync; +import de.intevation.flys.client.shared.model.DataList; + +import java.util.List; + +/** + * This UIProvider creates a widget that displays calculated data in a table. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class TableDataPanel +{ + /** The message class that provides i18n strings. */ + protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); + + protected CSVExportServiceAsync exportService = + GWT.create(CSVExportService.class); + + /** A container that will contain the location or the distance panel. */ + protected VLayout container; + + /** The export type. */ + protected String name; + + /** The UUID of the collection. */ + protected String uuid; + + /** The table. */ + protected ListGrid dataTable; + + + /** + * Creates a new LocationDistancePanel instance. + */ + public TableDataPanel() { + container = new VLayout(); + dataTable = new ListGrid(); + name = ""; + } + + + /** + * This method creates a widget that contains a table. + * + * @return a panel. + */ + public Canvas create() { + Config config = Config.getInstance(); + String locale = config.getLocale (); + dataTable.setEmptyMessage(MESSAGES.empty_table()); + dataTable.setShowHeaderContextMenu(false); + dataTable.setCanDragSelectText(true); + + exportService.getCSV(locale, uuid, name, + new AsyncCallback<List<String[]>>() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Could not recieve csv."); + SC.warn(caught.getMessage()); + } + + @Override + public void onSuccess(List<String[]> l) { + GWT.log("Recieved csv with " + l.size() + " lines."); + setData(l); + } + } + ); + + container.addMember(dataTable); + + return container; + } + + + public void setName(String name) { + this.name = name; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + + public Canvas createOld(DataList dataList) { + return null; + } + + + protected Canvas createWidget(DataList data) { + return null; + } + + + /** + * This method sets the data to a dynamic table. + * + * @param list List if String[] containing the data. + */ + public void setData(List<String[]> list) { + if (list == null || list.size() < 2) { + dataTable.setEmptyMessage(MESSAGES.error_no_calc_result()); + dataTable.redraw(); + return; + } + + Config config = Config.getInstance(); + String locale = config.getLocale(); + + NumberFormat nf; + if (locale.equals("de")) { + nf = NumberFormat.getFormat("#,##"); + } + else { + nf = NumberFormat.getFormat("#.##"); + } + + String[] header = list.get(0); + String[] firstValues = list.get(1); + + ListGridField[] fields = new ListGridField[header.length]; + + for(int i = 0; i < header.length; i++) { + ListGridField f = new ListGridField(String.valueOf(i)); + fields[i] = f; + f.setTitle(header[i]); + + try { + nf.parse(firstValues[i]); + f.setType(ListGridFieldType.FLOAT); + } + catch (NumberFormatException nfe) { + f.setType(ListGridFieldType.TEXT); + } + } + + dataTable.setFields(fields); + + for(int i = 1; i < list.size(); i++) { + String[] sItem = list.get(i); + ListGridRecord r = new ListGridRecord(); + for(int j = 0; j < sItem.length; j++) { + r.setAttribute(String.valueOf(j), sItem[j]); + } + dataTable.addData(r); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :