view flys-client/src/main/java/de/intevation/flys/client/client/ui/MeasurementStationTree.java @ 4568:bbd82bd8e541

flys-client: Cosmetics and warnings.
author Christian Lins <christian.lins@intevation.de>
date Mon, 19 Nov 2012 00:07:53 +0100
parents 651b93c10dc5
children
line wrap: on
line source
package de.intevation.flys.client.client.ui;

import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
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.MeasurementStation;
import de.intevation.flys.client.shared.model.RiverInfo;

import java.util.ArrayList;
import java.util.Date;
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);
            }

            Integer number = station.getID();
            String url = number != null ?
                MSG.measurement_station_url() + number :
                MSG.measurement_station_url();
            Anchor anchor = new Anchor(MSG.measurement_station_info_link(),
                    url, "_blank");
            addMember(anchor);
        }
    }

    class MeasurementStationDecoratorPanel extends DecoratorPanel {

        public MeasurementStationDecoratorPanel(MeasurementStation station) {
            setStyleName("infopanel");
            Grid grid = new Grid(5, 2);

            String type = station.getMeasurementType();
            if (type != null) {
                grid.setText(0, 0, MSG.measurement_station_type());
                grid.setText(0, 1, type);
            }

            String riverside = station.getRiverSide();
            if (riverside != null) {
                grid.setText(1, 0, MSG.riverside());
                grid.setText(1, 1, riverside);
            }

            String gaugename = station.getGaugeName();
            if (gaugename != null) {
               grid.setText(2, 0, MSG.measurement_station_gauge_name());
               grid.setText(2, 1, gaugename);
            }

            DateTimeFormat df = DateTimeFormat.getFormat(
                    PredefinedFormat.DATE_MEDIUM);

            Date starttime = station.getStartTime();
            if (starttime != null) {
               grid.setText(3, 0, MSG.measurement_station_start_time());
               grid.setText(3, 1, df.format(starttime));
            }

            String moperator = station.getOperator();
            if (moperator != null) {
                grid.setText(4, 0, MSG.measurement_station_operator());
                grid.setText(4, 1, moperator);
            }

            setWidget(grid);
        }
    }

    @Override
    public void open() {
    }
}

http://dive4elements.wald.intevation.org