raimund@256: package de.intevation.flys.client.client.ui;
raimund@256:
raimund@256: import java.util.List;
raimund@256:
raimund@256: import com.google.gwt.core.client.GWT;
raimund@256: import com.google.gwt.user.client.rpc.AsyncCallback;
raimund@256:
ingo@550: import com.smartgwt.client.util.SC;
raimund@256: import com.smartgwt.client.widgets.Canvas;
raimund@256: import com.smartgwt.client.widgets.Label;
raimund@256: import com.smartgwt.client.widgets.layout.VLayout;
raimund@256: import com.smartgwt.client.widgets.grid.ListGrid;
raimund@256: import com.smartgwt.client.widgets.grid.ListGridField;
raimund@256: import com.smartgwt.client.widgets.grid.ListGridRecord;
raimund@256:
raimund@256: import de.intevation.flys.client.shared.model.DataList;
raimund@256:
raimund@256: import de.intevation.flys.client.client.FLYSConstants;
raimund@256: import de.intevation.flys.client.client.Config;
raimund@256:
raimund@256: import de.intevation.flys.client.client.services.CSVExportService;
raimund@256: import de.intevation.flys.client.client.services.CSVExportServiceAsync;
raimund@256:
raimund@256: /**
raimund@256: * This UIProvider creates a widget that displays calculated data in a table.
raimund@256: *
raimund@256: * @author Raimund Renkert
raimund@256: */
raimund@256: public class TableDataPanel
raimund@256: {
raimund@256: /** The message class that provides i18n strings.*/
raimund@256: protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
raimund@256:
raimund@256: /** The DistanceInfoService used to retrieve locations about rivers.*/
raimund@256: protected CSVExportServiceAsync exportService =
raimund@256: GWT.create(CSVExportService.class);
raimund@256:
raimund@256: /** A container that will contain the location or the distance panel.*/
raimund@256: protected VLayout container;
raimund@256:
raimund@256: /** The export type.*/
raimund@256: protected String name;
raimund@256:
raimund@256: /** The UUID of the collection */
raimund@256: protected String uuid;
raimund@256:
raimund@256: /** The table*/
raimund@256: protected ListGrid dataTable;
raimund@256:
raimund@256:
raimund@256: /**
raimund@256: * Creates a new LocationDistancePanel instance.
raimund@256: */
raimund@256: public TableDataPanel() {
raimund@256: container = new VLayout();
raimund@256: dataTable = new ListGrid();
raimund@256: name = "";
raimund@256: }
raimund@256:
raimund@256:
raimund@256: /**
raimund@256: * This method creates a widget that contains a table
raimund@256: *
raimund@256: * @param data The data that might be inserted.//Use this?
raimund@256: *
raimund@256: * @return a panel.
raimund@256: */
raimund@256: public Canvas create() {
raimund@256: Config config = Config.getInstance();
raimund@256: String url = config.getServerUrl();
raimund@256: String locale = config.getLocale ();
raimund@263: dataTable.setEmptyMessage(MESSAGES.empty_table());
raimund@284: dataTable.setShowHeaderContextMenu(false);
raimund@256:
raimund@256: exportService.getCSV(url, locale, uuid, name,
ingo@550: new AsyncCallback>() {
raimund@256: public void onFailure(Throwable caught) {
raimund@256: GWT.log("Could not recieve csv.");
ingo@550: SC.warn(caught.getMessage());
raimund@256: }
raimund@256:
ingo@550: public void onSuccess(List l) {
raimund@256: GWT.log("Recieved csv with " + l.size() + " lines.");
raimund@256: setData(l);
raimund@256: }
raimund@256: }
raimund@256: );
raimund@256:
raimund@256: Label l = new Label (MESSAGES.calcTableTitle());
raimund@256: l.setHeight(20);
raimund@256:
raimund@256: container.addMember(l);
raimund@256: container.addMember(dataTable);
raimund@256:
raimund@256: return container;
raimund@256: }
raimund@256:
raimund@256:
raimund@256: public void setName(String name) {
raimund@256: this.name = name;
raimund@256: }
raimund@256:
raimund@256: public void setUuid(String uuid) {
raimund@256: this.uuid = uuid;
raimund@256: }
raimund@256:
raimund@256:
raimund@256: public Canvas createOld(DataList dataList) {
raimund@256: return null;
raimund@256: }
raimund@256:
raimund@256:
raimund@256: protected Canvas createWidget(DataList data) {
raimund@256: return null;
raimund@256: }
raimund@256:
raimund@259:
raimund@259: /**
raimund@259: * This method sets the data to a dynmic table.
raimund@259: *
raimund@259: * @param list List if String[] containing the data.
raimund@259: */
raimund@259: public void setData(List list) {
raimund@259: String[] header = (String[])list.get(0);
raimund@259: ListGridField[] fields = new ListGridField[header.length];
raimund@259: for(int i = 0; i < header.length; i++) {
raimund@259: ListGridField f = new ListGridField(String.valueOf(i));
raimund@259: fields[i] = f;
raimund@259: f.setTitle(header[i]);
raimund@259: }
raimund@259:
raimund@259: if (header.length == 2) {
raimund@259: dataTable.setFields(fields[0], fields[1]);
raimund@259: }
raimund@259: else if(header.length == 3) {
raimund@259: dataTable.setFields(fields[0], fields[1], fields[2]);
raimund@259: }
raimund@259: else if(header.length == 4) {
raimund@259: dataTable.setFields(fields[0], fields[1], fields[2], fields[3]);
raimund@259: }
raimund@259: else if(header.length == 5) {
raimund@259: dataTable.setFields(
raimund@259: fields[0],
raimund@259: fields[1],
raimund@259: fields[2],
raimund@259: fields[3],
raimund@259: fields[4]);
raimund@259: }
raimund@259:
raimund@259: for(int i = 1; i < list.size(); i++) {
raimund@259: String[] sItem = (String[])list.get(i);
raimund@256: ListGridRecord r = new ListGridRecord();
raimund@259: for(int j = 0; j < sItem.length; j++) {
raimund@259: r.setAttribute(String.valueOf(j), sItem[j]);
raimund@256: }
raimund@256: dataTable.addData(r);
raimund@256: }
raimund@256: }
raimund@256: }
raimund@256: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :