Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java @ 8619:156980fb3cb9
Try to find "default" data items for start and end in period panel
This is not using the DefaultValue mechanismn which also exists
as the DefaultValue mechanism is deprecated and a candidate for
removal.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 25 Mar 2015 19:18:43 +0100 |
parents | 4f6892d9dff5 |
children | 5e38e2924c07 |
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.stationinfo; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.RecordClickEvent; import com.smartgwt.client.widgets.grid.events.RecordClickHandler; import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.FLYS; import org.dive4elements.river.client.client.services.ArtifactService; import org.dive4elements.river.client.client.services.ArtifactServiceAsync; import org.dive4elements.river.client.client.services.CreateCollectionService; import org.dive4elements.river.client.client.services.CreateCollectionServiceAsync; import org.dive4elements.river.client.client.services.StepForwardService; import org.dive4elements.river.client.client.services.StepForwardServiceAsync; import org.dive4elements.river.client.client.ui.CollectionView; import org.dive4elements.river.client.shared.model.Artifact; import org.dive4elements.river.client.shared.model.Collection; import org.dive4elements.river.client.shared.model.Data; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.DefaultData; import org.dive4elements.river.client.shared.model.DefaultDataItem; import org.dive4elements.river.client.shared.model.MeasurementStation; import org.dive4elements.river.client.shared.model.RiverInfo; import java.util.List; /** * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> */ public class MeasurementStationListGrid extends InfoListGrid implements RecordClickHandler { /** The ArtifactService used to communicate with the Artifact server. */ protected ArtifactServiceAsync artifactService = GWT.create(ArtifactService.class); /** The StepForwardService used to put data into an existing artifact. */ protected StepForwardServiceAsync forwardService = GWT.create(StepForwardService.class); /** The ArtifactService used to communicate with the Artifact server. */ protected CreateCollectionServiceAsync createCollectionService = GWT.create(CreateCollectionService.class); public MeasurementStationListGrid(FLYS flys) { super(flys); ListGridField nfield = new ListGridField("name", "Messtelle"); ListGridField mfield = new ListGridField("measurementtype", "Messstellenart"); ListGridField sfield = new ListGridField("kmstart", "Start [km]", 60); ListGridField efield = new ListGridField("kmend", "Ende [km]", 60); ListGridField lfield = new ListGridField("infolink", "Info"); ListGridField cfield = new ListGridField("curvelink", "Feststofftransport-Abfluss-Beziehung"); cfield.addRecordClickHandler(this); this.setShowRecordComponents(true); this.setShowRecordComponentsByCell(true); this.setFields(nfield, mfield, sfield, efield, lfield, cfield); } /** * Resets the items of the tree. * If the list of gauges is empty or null the tree will be empty. */ @Override public void setRiverInfo(RiverInfo riverinfo) { List<MeasurementStation> stations = riverinfo.getMeasurementStations(); GWT.log("MeasurmentStationListGrid - setRiverInfo " + stations); if (stations != null && !stations.isEmpty()) { if (!riverinfo.isKmUp()) { for (MeasurementStation station : stations) { addStation(station); } } else { for (int i = stations.size()-1; i >= 0; i--) { MeasurementStation station = stations.get(i); addStation(station); } } } } private void addStation(MeasurementStation station) { ListGridRecord record = new MeasurementStationRecord(station); this.addData(record); } @Override public void open() { } @Override protected Canvas getExpandPanel(ListGridRecord record) { MeasurementStationRecord station = (MeasurementStationRecord)record; return new MeasurementStationInfoPanel(station); } @Override public void onRecordClick(RecordClickEvent event) { final MeasurementStationRecord station = (MeasurementStationRecord)event.getRecord(); Config config = Config.getInstance(); final String locale = config.getLocale(); createCollectionService.create( locale, flys.getCurrentUser().identifier(), new AsyncCallback<Collection>() { @Override public void onFailure(Throwable caught) { GWT.log("Could not create the new collection."); SC.warn(FLYS.getExceptionString(MSG, caught)); } @Override public void onSuccess(Collection collection) { GWT.log("Successfully created a new collection."); createArtifact(collection, locale, station); } } ); } private void createArtifact( final Collection collection, final String locale, final MeasurementStationRecord station ) { artifactService.create( locale, "staticsqrelation", null, new AsyncCallback<Artifact>() { @Override public void onFailure(Throwable caught) { GWT.log("Could not create the new artifact."); SC.warn(FLYS.getExceptionString(MSG, caught)); } @Override public void onSuccess(Artifact artifact) { GWT.log("Successfully created a new artifact."); DataItem riverItem = new DefaultDataItem( "river", "river", station.getRiverName()); Data river = new DefaultData( "river", null, null, new DataItem[]{riverItem}); DataItem refItem = new DefaultDataItem( "station", "station", station.getID().toString()); Data ref = new DefaultData( "station", null, null, new DataItem[]{refItem}); DataItem nameItem = new DefaultDataItem( "station_name", "station_name", station.getName().toString()); Data name = new DefaultData( "station_name", null, null, new DataItem[]{nameItem}); DataItem locationItem = new DefaultDataItem( "ld_locations", "ld_locations", station.getKmStart().toString()); Data location = new DefaultData( "ld_locations", null, null, new DataItem[]{locationItem}); Data[] data = new Data[]{river, ref, name, location}; forwardService.go(locale, artifact, data, new AsyncCallback<Artifact>() { @Override public void onFailure(Throwable caught) { GWT.log("Could not feed the artifact."); SC.warn(caught.getMessage()); } @Override public void onSuccess(Artifact artifact) { GWT.log("Successfully feed the artifact."); CollectionView view = new CollectionView( flys, collection, artifact); flys.getWorkspace().addView( collection.identifier(), view); view.addArtifactToCollection(artifact); } }); } }); } @Override public String getCellCSSText(ListGridRecord record, int rowNum, int colNum) { if (colNum == 6) { return "text-decoration: underline; color: #0000EE; cursor: pointer;"; } else { return super.getCellCSSText(record, rowNum, colNum); } } }