Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/TableDataPanel.java @ 1384:e89303730d00
Bugfix: added missing i18n strings and synced english translation with default translation.
flys-client/trunk@3164 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 04 Nov 2011 11:40:24 +0000 |
parents | e88cd17b3420 |
children | bc06a671ef60 |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.i18n.client.NumberFormat; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.layout.VLayout; 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.types.ListGridFieldType; import de.intevation.flys.client.shared.model.DataList; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.services.CSVExportService; import de.intevation.flys.client.client.services.CSVExportServiceAsync; /** * 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 url = config.getServerUrl(); String locale = config.getLocale (); dataTable.setEmptyMessage(MESSAGES.empty_table()); dataTable.setShowHeaderContextMenu(false); dataTable.setCanDragSelectText(true); exportService.getCSV(url, locale, uuid, name, new AsyncCallback<List<String[]>>() { public void onFailure(Throwable caught) { GWT.log("Could not recieve csv."); SC.warn(caught.getMessage()); } 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 dynmic table. * * @param list List if String[] containing the data. */ public void setData(List list) { if (list == null || list.size() < 2) { dataTable.setEmptyMessage(MESSAGES.error_no_calc_result()); dataTable.redraw(); return; } String[] header = (String[])list.get(0); String[] firstValues = (String[])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]); Config config = Config.getInstance(); String locale = config.getLocale(); try { NumberFormat nf; if (locale.equals("de")) { nf = NumberFormat.getFormat("#,##"); } else { nf = NumberFormat.getFormat("#.##"); } nf.parse(firstValues[i]); f.setType(ListGridFieldType.FLOAT); } catch (NumberFormatException nfe) { f.setType(ListGridFieldType.TEXT); } } if (header.length == 2) { dataTable.setFields(fields[0], fields[1]); } else if(header.length == 3) { dataTable.setFields(fields[0], fields[1], fields[2]); } else if(header.length == 4) { dataTable.setFields(fields[0], fields[1], fields[2], fields[3]); } else if(header.length == 5) { dataTable.setFields( fields[0], fields[1], fields[2], fields[3], fields[4]); } for(int i = 1; i < list.size(); i++) { String[] sItem = (String[])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 :