diff flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadPeriodPanel.java @ 4299:abd304085bd4

Added helper panel to sediment load UI to display sediemnt load overviews.
author Raimund Renkert <rrenkert@intevation.de>
date Mon, 29 Oct 2012 13:16:03 +0100
parents 015b219a97af
children b195fede1c3b
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadPeriodPanel.java	Mon Oct 29 13:13:23 2012 +0100
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadPeriodPanel.java	Mon Oct 29 13:16:03 2012 +0100
@@ -4,31 +4,44 @@
 import java.util.List;
 
 import com.google.gwt.core.client.GWT;
+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.Label;
 import com.smartgwt.client.widgets.form.DynamicForm;
 import com.smartgwt.client.widgets.form.fields.TextItem;
 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
 import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
 
+import de.intevation.flys.client.client.Config;
+import de.intevation.flys.client.client.services.SedimentLoadInfoService;
+import de.intevation.flys.client.client.services.SedimentLoadInfoServiceAsync;
 import de.intevation.flys.client.client.ui.AbstractUIProvider;
-import de.intevation.flys.client.client.ui.IntegerRangePanel;
+import de.intevation.flys.client.shared.model.ArtifactDescription;
 import de.intevation.flys.client.shared.model.Data;
 import de.intevation.flys.client.shared.model.DataItem;
 import de.intevation.flys.client.shared.model.DataList;
 import de.intevation.flys.client.shared.model.DefaultData;
 import de.intevation.flys.client.shared.model.DefaultDataItem;
+import de.intevation.flys.client.shared.model.SedimentLoadInfoObject;
+import de.intevation.flys.client.shared.model.SedimentLoadInfoRecord;
 
 
 public class SedLoadPeriodPanel
 extends AbstractUIProvider
-//extends SedLoadPanel
 {
+    protected SedimentLoadInfoServiceAsync sedLoadInfoService =
+        GWT.create(SedimentLoadInfoService.class);
 
     private TextItem start;
     private TextItem end;
 
+    private ListGrid sedLoadTable;
+
     public SedLoadPeriodPanel () {
     }
 
@@ -72,17 +85,43 @@
     public Canvas create(DataList data) {
         VLayout layout = new VLayout();
 
-//        Canvas helper = createHelper();
-//        this.helperContainer.addMember(helper);
+        Canvas helper = createHelper();
+        this.helperContainer.addMember(helper);
 
         Canvas submit = getNextButton();
         Canvas widget = createWidget(data);
 
         layout.addMember(widget);
         layout.addMember(submit);
+
+        fetchSedimentLoadData();
+
         return layout;
     }
 
+    private Canvas createHelper() {
+        sedLoadTable = new ListGrid();
+        sedLoadTable.setShowHeaderContextMenu(false);
+        sedLoadTable.setWidth100();
+        sedLoadTable.setShowRecordComponents(true);
+        sedLoadTable.setShowRecordComponentsByCell(true);
+        sedLoadTable.setHeight100();
+        sedLoadTable.setEmptyMessage(MSG.empty_table());
+        sedLoadTable.setCanReorderFields(false);
+
+        ListGridField date = new ListGridField("date", MSG.year());
+        date.setType(ListGridFieldType.TEXT);
+        date.setWidth(100);
+
+        ListGridField descr =
+            new ListGridField("description", MSG.description());
+        descr.setType(ListGridFieldType.TEXT);
+        descr.setWidth("*");
+
+        sedLoadTable.setFields(date, descr);
+        return sedLoadTable;
+    }
+
     public Canvas createWidget(DataList data) {
         VLayout layout = new VLayout();
 
@@ -149,5 +188,43 @@
         return false;
     }
 
+   protected void fetchSedimentLoadData() {
+        Config config    = Config.getInstance();
+        String locale    = config.getLocale ();
+
+        ArtifactDescription adescr = artifact.getArtifactDescription();
+        DataList[] data = adescr.getOldData();
+
+        double[] km = artifact.getArtifactDescription().getKMRange();
+        String river = artifact.getArtifactDescription().getRiver();
+
+        sedLoadInfoService.getSedimentLoadInfo(locale, river, "single", km[0], km[1],
+            new AsyncCallback<SedimentLoadInfoObject[]>() {
+                public void onFailure(Throwable caught) {
+                    GWT.log("Could not recieve sediment load informations.");
+                    SC.warn(caught.getMessage());
+                }
+
+                public void onSuccess(SedimentLoadInfoObject[] sedLoad) {
+                    int num = sedLoad != null ? sedLoad.length :0;
+                    GWT.log("Recieved " + num + " sediment load informations.");
+
+                    if (num == 0) {
+                        return;
+                    }
+
+                    addSedimentLoadInfo(sedLoad);
+                }
+            }
+        );
+    }
+
+
+    protected void addSedimentLoadInfo (SedimentLoadInfoObject[] sedLoad) {
+        for(SedimentLoadInfoObject sl: sedLoad) {
+            SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl);
+            sedLoadTable.addData(rec);
+        }
+    }
 
 }

http://dive4elements.wald.intevation.org