teichmann@5861: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
teichmann@5861: * Software engineering by Intevation GmbH
teichmann@5861: *
teichmann@5993: * This file is Free Software under the GNU AGPL (>=v3)
teichmann@5861: * and comes with ABSOLUTELY NO WARRANTY! Check out the
teichmann@5993: * documentation coming with Dive4Elements River for details.
teichmann@5861: */
teichmann@5861:
teichmann@5835: package org.dive4elements.river.client.client.ui;
bjoern@4202:
bjoern@4202: import com.google.gwt.core.client.GWT;
bjoern@4202: import com.google.gwt.i18n.client.NumberFormat;
rrenkert@7933: import com.smartgwt.client.types.Alignment;
rrenkert@7933: import com.smartgwt.client.types.VerticalAlignment;
rrenkert@7933: import com.smartgwt.client.widgets.Label;
rrenkert@6272: import com.smartgwt.client.widgets.form.DynamicForm;
rrenkert@7933: import com.smartgwt.client.widgets.layout.HLayout;
christian@6418:
christian@6418: import org.dive4elements.river.client.client.Config;
christian@6418: import org.dive4elements.river.client.client.FLYS;
christian@6418: import org.dive4elements.river.client.client.FLYSConstants;
christian@6418: import org.dive4elements.river.client.shared.model.RiverInfo;
christian@6418:
bjoern@4202: /**
felix@4980: * Panel to display information about a river.
bjoern@4202: * @author Björn Ricks
bjoern@4202: */
rrenkert@7933: public class RiverInfoPanel extends HLayout {
bjoern@4202:
bh@6192: /** The flys instance */
bh@6192: protected FLYS flys;
bh@6192:
bjoern@4202: /** The message class that provides i18n strings.*/
bjoern@4202: protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
bjoern@4202:
bjoern@4202: public final static int HEIGHT = 30;
bjoern@4202: public final static int BORDER_WIDTH = 3;
bjoern@4202: public final static int PADDING = 8;
bjoern@4202: public final static int MARGIN = 10;
bjoern@4202:
bh@6192: public RiverInfoPanel(FLYS flys, RiverInfo riverinfo) {
bh@6192: this.flys = flys;
bh@6192:
bjoern@4202: setStyleName("riverinfopanel");
rrenkert@7933: setHeight(HEIGHT + "px");
rrenkert@7933: setAlign(VerticalAlignment.CENTER);
rrenkert@7933: setAlign(Alignment.LEFT);
bjoern@4202: setRiverInfo(riverinfo);
bjoern@4202: }
bjoern@4202:
bjoern@4202: public void setRiverInfo(RiverInfo riverinfo) {
bjoern@4202: GWT.log("RiverInfoPanel - setRiverInfo");
bjoern@4202:
bjoern@4202: NumberFormat nf = NumberFormat.getDecimalFormat();
bjoern@4202:
rrenkert@7933: //removeAllLabels();
bjoern@4202:
bjoern@4202: addLabel(riverinfo.getName(), false);
bjoern@4202:
bjoern@4202: String kmtext = "";
bjoern@4202: Double start = riverinfo.getKmStart();
bjoern@4202: Double end = riverinfo.getKmEnd();
bjoern@4202:
bjoern@4202: if (!riverinfo.isKmUp()) {
bjoern@4202: Double tmp = end;
bjoern@4202: end = start;
bjoern@4202: start = tmp;
bjoern@4202: }
bjoern@4202: if (end != null) {
bjoern@4202: kmtext += nf.format(end);
bjoern@4202: kmtext += " - ";
bjoern@4202: }
bjoern@4202: if (start != null) {
bjoern@4202: kmtext += nf.format(start);
bjoern@4202: }
bjoern@4202: kmtext += " km";
bjoern@4202:
bjoern@4202: addLabel(kmtext, false);
bjoern@4202:
bjoern@4202: String qtext = "";
bjoern@4202: Double qmin = riverinfo.getMinQ();
bjoern@4202: Double qmax = riverinfo.getMaxQ();
bjoern@4202: if (qmin != null) {
bjoern@4202: qtext += nf.format(qmin);
bjoern@4202: qtext += " " + MSG.gauge_q_unit();
bjoern@4202: qtext += " - ";
bjoern@4202: }
bjoern@4202: if (qmax != null) {
bjoern@4202: qtext += nf.format(qmax);
bjoern@4202: qtext += " " + MSG.gauge_q_unit();
bjoern@4202: }
bjoern@4202:
bjoern@4202: addLabel(qtext, false);
bjoern@4202:
bjoern@4202: Long number = riverinfo.getOfficialNumber();
bjoern@4202: String url = number != null ?
bjoern@4202: MSG.gauge_river_url() + number :
bjoern@4202: MSG.gauge_river_url();
christian@6418: String wikiBaseUrl = Config.getInstance().getWikiUrl();
christian@6546: DynamicForm infoLink = WikiLinks.linkDynamicForm(this.flys, wikiBaseUrl + url,
rrenkert@6272: MSG.gauge_river_info_link());
rrenkert@6272: infoLink.setTop(5);
rrenkert@7933: infoLink.setMargin(5);
rrenkert@7933: addMember(infoLink);
bjoern@4202: }
bjoern@4202:
bjoern@4202: public static int getStaticHeight() {
bjoern@4202: return RiverInfoPanel.HEIGHT +
bjoern@4202: (2 * RiverInfoPanel.BORDER_WIDTH) +
bjoern@4202: (2 * RiverInfoPanel.PADDING) +
bjoern@4202: (2 * RiverInfoPanel.MARGIN);
bjoern@4202: }
bjoern@4202:
bjoern@4202: private void addLabel(String text, boolean wordwrap) {
rrenkert@7933: Label label = new Label("" + text + "");
rrenkert@7933: label.setWrap(wordwrap);
rrenkert@7933: label.setMargin(5);
rrenkert@7933: addMember(label);
bjoern@4202: }
bjoern@4202: }