Mercurial > dive4elements > river
changeset 4269:0c766c475805
Add Panel and Tree UI classes for dispayling the measurement station info
The new ui classes are using the new extracted base class InfoPanel and InfoTree
which are in common with the gauge info.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 26 Oct 2012 12:22:06 +0200 |
parents | f75968f0ce80 |
children | cde9a6fe1844 |
files | flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties flys-client/src/main/java/de/intevation/flys/client/client/ui/MeasurementStationPanel.java flys-client/src/main/java/de/intevation/flys/client/client/ui/MeasurementStationTree.java |
diffstat | 6 files changed, 283 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Fri Oct 26 12:19:54 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Fri Oct 26 12:22:06 2012 +0200 @@ -236,6 +236,8 @@ String gaugePanelTitle(); + String measurementStationPanelTitle(); + String wqTitle(); String wqadaptedTitle(); @@ -1062,6 +1064,12 @@ String gauge_discharge_curve_at_export(); + // Measurement Station Info + + String measurement_station_type(); + + String measurement_station_operator(); + String discharge_timeranges(); String discharge_chart();
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Fri Oct 26 12:19:54 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Fri Oct 26 12:22:06 2012 +0200 @@ -158,6 +158,7 @@ calcTableTitle = Calculated Output helperPanelTitle = Input Support gaugePanelTitle = Gauge Information +measurementStationPanelTitle = Measurement Station Information wqW = W at Gauge [cm] wqQ = Q [m\u00b3/s] wqWFree = W free position [m+NHN] @@ -553,4 +554,7 @@ gauge_river_url = https://flys-intern.intevation.de/GewaesserInfo/ gauge_curve_link = Dischargecurve discharge_timeranges = DC-Timeranges -discharge_chart = DC-Chart \ No newline at end of file +discharge_chart = DC-Chart + +measurement_station_type = Type of Measurement Station +measurement_station_operator = Operator
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Fri Oct 26 12:19:54 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Fri Oct 26 12:22:06 2012 +0200 @@ -144,6 +144,7 @@ calcTableTitle = Berechnungsausgabe helperPanelTitle = Eingabeunterst\u00fctzung gaugePanelTitle = Gew\u00e4sser/Pegel-Info +measurementStationPanelTitle = Gew\u00e4sser/Messstellen-Info wqW = W am Pegel [cm] wqQ = Q [m\u00b3/s] wqWFree = W auf freier Strecke [m+NHN] @@ -551,4 +552,7 @@ gauge_river_url = https://flys-intern.intevation.de/GewaesserInfo/ gauge_curve_link = Abflusskurve discharge_timeranges = AK-Zeitr\u00e4ume -discharge_chart = AK-Diagramm \ No newline at end of file +discharge_chart = AK-Diagramm + +measurement_station_type = Typ der Messstelle +measurement_station_operator = Operator
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Fri Oct 26 12:19:54 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Fri Oct 26 12:22:06 2012 +0200 @@ -158,6 +158,7 @@ calcTableTitle = Calculated Output helperPanelTitle = Input Support gaugePanelTitle = Gauge Information +measurementStationPanelTitle = Measurement Station Information wqW = W at Gauge [cm] wqQ = Q [m\u00b3/s] wqWFree = W at free position [m+NHN] @@ -552,4 +553,7 @@ gauge_river_url = https://flys-intern.intevation.de/GewaesserInfo/ gauge_curve_link = Dischargecurve discharge_timeranges = DC-Timeranges -discharge_chart = DC-Chart \ No newline at end of file +discharge_chart = DC-Chart + +measurement_station_type = Type of Measurement Station +measurement_station_operator = Operator
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/MeasurementStationPanel.java Fri Oct 26 12:22:06 2012 +0200 @@ -0,0 +1,55 @@ +package de.intevation.flys.client.client.ui; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; +import de.intevation.flys.client.client.FLYS; +import de.intevation.flys.client.shared.model.RiverInfo; + +/** + * A Panel to show info about the MeasurementStations of a river + * + * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> + */ +public class MeasurementStationPanel extends InfoPanel { + + /** + * MeasurementStationPanel loads the MeasurementStations from the + * RiverInfoService and displays them in a tree underneath a RiverInfoPanel + * + * @param flys The FLYS object + */ + public MeasurementStationPanel(FLYS flys) { + super(new MeasurementStationTree(flys)); + } + + /** + * Returns the title which should be displayed in the section + */ + @Override + public String getSectionTitle() { + return MSG.measurementStationPanelTitle(); + } + + /** + * Loads the river info and renders it afterwards + */ + @Override + public void refresh() { + contract(); + + riverInfoService.getMeasurementStations(this.river, + new AsyncCallback<RiverInfo>() { + @Override + public void onFailure(Throwable e) { + GWT.log("Could not load the river info." + e); + } + + @Override + public void onSuccess(RiverInfo riverinfo) { + GWT.log("Loaded river info"); + render(riverinfo); + expand(); + } + }); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/MeasurementStationTree.java Fri Oct 26 12:22:06 2012 +0200 @@ -0,0 +1,205 @@ +package de.intevation.flys.client.client.ui; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.user.client.ui.Anchor; +import com.google.gwt.user.client.ui.DecoratorPanel; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Tree; +import com.google.gwt.user.client.ui.TreeItem; + +import com.smartgwt.client.widgets.layout.HLayout; + +import de.intevation.flys.client.client.FLYS; +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.MeasurementStation; +import de.intevation.flys.client.shared.model.RiverInfo; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> + */ +public class MeasurementStationTree extends InfoTree { + + public MeasurementStationTree(FLYS flys) { + this.flys = flys; + tree = new Tree(); + setWidget(tree); + } + + /** + * 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) { + tree.clear(); + + List<MeasurementStation> stations = riverinfo.getMeasurementStations(); + + if (stations != null && !stations.isEmpty()) { + + ArrayList<MeasurementStation> emptystations = + new ArrayList<MeasurementStation>(); + + if (!riverinfo.isKmUp()) { + for (MeasurementStation station : stations) { + addStation(station, emptystations); + } + } + else { + for (int i = stations.size()-1; i >= 0; i--) { + MeasurementStation station = stations.get(i); + addStation(station, emptystations); + } + } + + // put empty stations to the end + for (MeasurementStation station : emptystations) { + addStation(station); + } + } + } + + private void addStation(MeasurementStation station, + List<MeasurementStation> empty) { + if (station.getKmStart() != null && station.getKmEnd() != null) { + addStation(station); + } + else { + empty.add(station); + } + } + + private void addStation(MeasurementStation station) { + MeasurementStationItem sitem = + new MeasurementStationItem(flys, station); + tree.addItem(sitem); + } + + class MeasurementStationItem extends TreeItem { + + private MeasurementStation station; + + public MeasurementStationItem(FLYS flys, MeasurementStation station) { + MeasurementStationHead head = + new MeasurementStationHead(flys, station); + MeasurementStationDecoratorPanel + panel = new MeasurementStationDecoratorPanel(station); + setWidget(head); + addItem(panel); + this.station = station; + } + + public Double getStart() { + return station.getKmStart(); + } + + public Double getEnd() { + return station.getKmEnd(); + } + + public Integer getID() { + return station.getID(); + } + } + + class MeasurementStationHead extends HLayout { + + public MeasurementStationHead(FLYS flys, MeasurementStation station) { + setStyleName("infohead"); + setAutoHeight(); + setAutoWidth(); + + NumberFormat nf = NumberFormat.getDecimalFormat(); + + Label label = new Label(station.getName(), true); + addMember(label); + + Double start; + Double end; + + if (!station.isKmUp()) { + start = station.getKmStart(); + end = station.getKmEnd(); + } + else { + start = station.getKmEnd(); + end = station.getKmStart(); + } + + String kmtext = ""; + if (start != null) { + kmtext += nf.format(start); + kmtext += " - "; + } + if (end != null) { + kmtext += nf.format(end); + } + if (start != null || end != null) { + kmtext += " km"; + } + + label = new Label(kmtext); + + addMember(label); + + Double dstation = station.getStation(); + if (dstation != null) { + String stext = nf.format(dstation); + stext += " km"; + label = new Label(stext); + addMember(label); + } + + /* Long number = gauge.getOfficialNumber(); */ + /* String url = number != null ? */ + /* MSG.gauge_url() + number : */ + /* MSG.gauge_url(); */ + /* Anchor anchor = new Anchor(MSG.gauge_info_link(), url, "_blank"); */ + /* addMember(anchor); */ + } + } + + class MeasurementStationDecoratorPanel extends DecoratorPanel { + + public MeasurementStationDecoratorPanel(MeasurementStation station) { + setStyleName("infopanel"); + Grid grid = new Grid(4, 2); + + NumberFormat nf = NumberFormat.getDecimalFormat(); + + String riverside = station.getRiverSide(); + if (riverside != null) { + grid.setText(0, 0, MSG.riverside()); + grid.setText(0, 1, riverside); + } + + String type = station.getMeasurementType(); + if (type != null) { + grid.setText(1, 0, MSG.measurement_station_type()); + grid.setText(1, 1, type); + } + + String moperator = station.getOperator(); + if (moperator != null) { + grid.setText(2, 0, MSG.measurement_station_operator()); + grid.setText(2, 1, moperator); + } + + setWidget(grid); + } + } + + @Override + public void open() { + } +}