diff flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadEpochPanel.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
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadEpochPanel.java	Mon Oct 29 13:13:23 2012 +0100
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadEpochPanel.java	Mon Oct 29 13:16:03 2012 +0100
@@ -4,8 +4,10 @@
 import java.util.List;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.smartgwt.client.data.Record;
 import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.util.SC;
 import com.smartgwt.client.widgets.Button;
 import com.smartgwt.client.widgets.Canvas;
 import com.smartgwt.client.widgets.Label;
@@ -22,20 +24,30 @@
 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.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 SedLoadEpochPanel
 extends AbstractUIProvider
 {
+    protected SedimentLoadInfoServiceAsync sedLoadInfoService =
+        GWT.create(SedimentLoadInfoService.class);
+
     protected ListGrid elements;
     private TextItem start;
     private TextItem end;
+    private ListGrid sedLoadTable;
 
     public Canvas createWidget(DataList data) {
         HLayout input = new HLayout();
@@ -129,9 +141,9 @@
 
         return root;
     }
+
     @Override
     public Canvas createOld(DataList dataList) {
-        GWT.log("old............................");
         HLayout layout = new HLayout();
         layout.setWidth("400px");
         VLayout vLayout = new VLayout();
@@ -162,14 +174,43 @@
     @Override
     public Canvas create(DataList data) {
         VLayout layout = new VLayout();
+        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;
+    }
+
     @Override
     protected Data[] getData() {
         List<Data> data = new ArrayList<Data>();
@@ -194,4 +235,43 @@
         return data.toArray(new Data[data.size()]);
     }
 
+    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