Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/minfo/SedLoadPeriodPanel.java @ 4433:5b8919ef601d
Backed out changeset e8a4d2fd25cc
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 07 Nov 2012 12:23:41 +0100 |
parents | abd304085bd4 |
children | b195fede1c3b |
line wrap: on
line source
package de.intevation.flys.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.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.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 { protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class); private TextItem start; private TextItem end; private ListGrid sedLoadTable; public SedLoadPeriodPanel () { } @Override public Canvas createOld(DataList dataList) { List<Data> items = dataList.getAll(); Data start = getData(items, "start"); Data end = getData(items, "end"); DataItem[] startItem = start.getItems(); DataItem[] endItem = end.getItems(); String v1 = startItem[0].getStringValue(); String v2 = endItem[0].getStringValue(); int v1i = 0; int v2i = 0; try { v1i = Integer.parseInt(v1); v2i = Integer.parseInt(v2); } catch (NumberFormatException nfe) { GWT.log(nfe.toString()); } Label old = new Label(v1i + " - " + v2i); HLayout layout = new HLayout(); layout.setWidth("400px"); Label label = new Label(dataList.getLabel()); label.setWidth("200px"); Canvas back = getBackButton(dataList.getState()); layout.addMember(label); layout.addMember(old); 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; } 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(); Label title = new Label(data.get(0).getDescription()); title.setHeight("25px"); DynamicForm form = new DynamicForm(); form.setNumCols(4); start = new TextItem(MSG.from()); start.setValidators(new IsIntegerValidator()); end = new TextItem(MSG.to()); end.setValidators(new IsIntegerValidator()); form.setFields(start, end); // inputPanel.setToTitle(MSG.to()); // inputPanel.setFromTitle(MSG.from()); // inputPanel.setShowTitle(false); layout.addMember(title); layout.addMember(form); return layout; } @Override protected Data[] getData() { int v1; int v2; try { v1 = Integer.parseInt(start.getValueAsString()); v2 = Integer.parseInt(end.getValueAsString()); } catch(NumberFormatException nfe) { // warn the user... return new Data[0]; } if (validateRange(v1, v2)) { List<Data> data = new ArrayList<Data>(); DataItem startItem = new DefaultDataItem("start", "start", start.getValueAsString()); DataItem endItem = new DefaultDataItem("end", "end", end.getValueAsString()); data.add(new DefaultData( "start", null, null, new DataItem[] { startItem })); data.add(new DefaultData( "end", null, null, new DataItem[] { endItem })); return data.toArray(new Data[data.size()]); } return new Data[0]; } protected boolean validateRange(int v1, int v2) { // TODO: Set useful years for validation. Current range is between start // of gregorian calendar and a year in the future... if ((v1 > 1582 && v1 < 2100) && (v2 > 1582 && v2 < 2100)) { return true; } 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); } } }