Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/SedLoadOffEpochPanel.java @ 7966:d1cfd23e35cd
Set identifier for listgridfields and resized columns.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 25 Jun 2014 15:40:44 +0200 |
parents | 3a9c65dd8963 |
children | f54c4b858213 |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.client.client.ui.minfo; import java.util.ArrayList; 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.types.SelectionAppearance; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; 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.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.services.SedimentLoadInfoService; import org.dive4elements.river.client.client.services.SedimentLoadInfoServiceAsync; import org.dive4elements.river.client.client.ui.PeriodPanel; import org.dive4elements.river.client.shared.model.ArtifactDescription; import org.dive4elements.river.client.shared.model.Data; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.DataList; import org.dive4elements.river.client.shared.model.DefaultData; import org.dive4elements.river.client.shared.model.DefaultDataItem; import org.dive4elements.river.client.shared.model.SedimentLoadInfoObject; import org.dive4elements.river.client.shared.model.SedimentLoadInfoRecord; /** Show input to select an official epoch. */ public class SedLoadOffEpochPanel extends PeriodPanel { protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class); private ListGrid sedLoadTable; /** Creates layout with title. */ public Canvas createWidget(DataList data) { VLayout root = new VLayout(); Label title = new Label(data.get(0).getDescription()); title.setHeight("25px"); root.addMember(title); return root; } /** Create layout for data entered previously. */ @Override public Canvas createOld(DataList dataList) { HLayout layout = new HLayout(); layout.setWidth("400px"); VLayout vLayout = new VLayout(); vLayout.setWidth(130); Label label = new Label(dataList.getLabel()); label.setWidth("200px"); label.setHeight(25); List<Data> items = dataList.getAll(); Data str = getData(items, "epochs"); DataItem[] strItems = str.getItems(); String[] pairs = strItems[0].getLabel().split(";"); for (int i = 0; i < pairs.length; i++) { String[] vals = pairs[i].split(","); Label dateLabel = new Label(vals[0] + " - " + vals[1]); dateLabel.setHeight(20); vLayout.addMember(dateLabel); } Canvas back = getBackButton(dataList.getState()); layout.addMember(label); layout.addMember(vLayout); layout.addMember(back); return layout; } @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; } /** Creates the helper grid in which off epochs can be selected. */ protected 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); sedLoadTable.setSelectionAppearance(SelectionAppearance.CHECKBOX); ListGridField date = new ListGridField("date", MSG.year()); date.setType(ListGridFieldType.TEXT); date.setWidth(100); sedLoadTable.setFields(date); return sedLoadTable; } /** Get data via listgrid selection. */ @Override public Data[] getData() { List<Data> data = new ArrayList<Data>(); ListGridRecord[] lgr = sedLoadTable.getSelectedRecords(); if (lgr.length == 0) { return new Data[0]; } String d = ""; for (int i = 0; i < lgr.length; i++) { Record r = (Record) lgr[i]; String date = r.getAttribute("date"); String[] range = date.split(" - "); d += range[0] + "," + range[1]; d += ";"; } DataItem item = new DefaultDataItem("epochs", null, d); data.add(new DefaultData( "epochs", null, null, new DataItem[] { item })); return data.toArray(new Data[data.size()]); } /** Fetch load info from service and populate table. */ 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, "off_epoch", km[0], km[1], new AsyncCallback<SedimentLoadInfoObject[]>() { public void onFailure(Throwable caught) { GWT.log("Could not receive sediment load informations."); SC.warn(caught.getMessage()); } public void onSuccess(SedimentLoadInfoObject[] sedLoad) { int num = sedLoad != null ? sedLoad.length :0; GWT.log("Received " + num + " sediment load informations."); if (num == 0) { return; } addSedimentLoadInfo(sedLoad); } } ); } /** Add record to input helper listgrid. */ protected void addSedimentLoadInfo (SedimentLoadInfoObject[] sedLoad) { for(SedimentLoadInfoObject sl: sedLoad) { SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl); sedLoadTable.addData(rec); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :