view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java @ 9416:05405292a7ca

Navigationtheme panel now shows themes of dWt and WQ charts grayed out, if the current station is outside the valid range of the theme.
author gernotbelger
date Thu, 16 Aug 2018 16:28:03 +0200
parents 2da486c7c05f
children 787fc085459b
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;

import org.dive4elements.river.client.client.FLYSConstants;
import org.dive4elements.river.client.client.ui.bundu.BunduWstCalcSelectRadioPanel;
import org.dive4elements.river.client.client.ui.bundu.BunduWstWQPanel;
import org.dive4elements.river.client.client.ui.bundu.CustomFixationChoiceRadioPanel;
import org.dive4elements.river.client.client.ui.bundu.QSeriesLengthPanel;
import org.dive4elements.river.client.client.ui.fixation.BunduFixPeriodPanel;
import org.dive4elements.river.client.client.ui.fixation.FixEventSelect;
import org.dive4elements.river.client.client.ui.fixation.FixFunctionSelect;
import org.dive4elements.river.client.client.ui.fixation.FixGaugeSelectPanel;
import org.dive4elements.river.client.client.ui.fixation.FixLocationPanel;
import org.dive4elements.river.client.client.ui.fixation.FixMultiPeriodPanel;
import org.dive4elements.river.client.client.ui.fixation.FixPeriodPanel;
import org.dive4elements.river.client.client.ui.fixation.FixQSelectPanel;
import org.dive4elements.river.client.client.ui.minfo.BedHeightsDatacagePanel;
import org.dive4elements.river.client.client.ui.minfo.BedMultiPeriodPanel;
import org.dive4elements.river.client.client.ui.minfo.CheckboxPanel;
import org.dive4elements.river.client.client.ui.minfo.SedLoadDistancePanel;
import org.dive4elements.river.client.client.ui.minfo.SedLoadEpochPanel;
import org.dive4elements.river.client.client.ui.minfo.SedLoadPeriodPanel;
import org.dive4elements.river.client.client.ui.minfo.SedLoadSQTiPanel;
import org.dive4elements.river.client.client.ui.sinfo.CollisionLoadEpochPanel;
import org.dive4elements.river.client.client.ui.sinfo.CollisionLoadYearPanel;
import org.dive4elements.river.client.client.ui.sinfo.DiffPairTwinPanel;
import org.dive4elements.river.client.client.ui.sinfo.FlowDepthMinMaxTwinPanel;
import org.dive4elements.river.client.client.ui.sq.SQPeriodPanel;
import org.dive4elements.river.client.client.ui.uinfo.Limit5SalixBehaviour;
import org.dive4elements.river.client.client.ui.uinfo.LoadSedimentHeightPanel;
import org.dive4elements.river.client.client.ui.uinfo.LoadSingleYearPanel;
import org.dive4elements.river.client.client.ui.uinfo.LoadSingleYearPseudoEpochPanel;
import org.dive4elements.river.client.client.ui.uinfo.SingleBehaviour;
import org.dive4elements.river.client.client.ui.uinfo.SupraRegionalTablePanel;
import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTableEditPanel;
import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTablePanel;
import org.dive4elements.river.client.shared.model.User;

import com.google.gwt.core.client.GWT;

/**
 * Depending on the provider the state declared, return a UIProvider.
 *
 * A UIProvider provides widgets and input helpers to guide input to an
 * artifacts state.
 */
public class UIProviderFactory {
    private static FLYSConstants MSG;

    private UIProviderFactory() {
    }

    /**
     * @param uiProvider
     *            uiprovider demanded for by state.
     */
    public static UIProvider getProvider(final String uiProvider, final User user) {
        if (uiProvider == null || uiProvider.equals("")) {
            return new SelectProvider();
        } else if (uiProvider.equals("select_with_map")) {
            return new MapSelection();
        } else if (uiProvider.equals("location_distance_panel")) {
            return new LocationDistancePanel();
        } else if (uiProvider.equals("location_panel")) {
            return new SingleLocationPanel();
        } else if (uiProvider.equals("multi_location_panel")) {
            return new MultipleLocationPanel();
        } else if (uiProvider.equals("distance_panel")) {
            return new DistancePanel();
        } else if (uiProvider.equals("distance_only_panel")) {
            return new DistanceOnlyPanel();
        } else if (uiProvider.equals("distance_only_part_panel")) {
            return new DistanceOnlyPartPanel();
        } else if (uiProvider.equals("distance_only_part_historical_panel")) {
            return new DistanceOnlyPartHistoricalPanel();
        } else if (uiProvider.equals("waterlevel_ground_panel")) {
            return new WaterlevelGroundPanel();
        } else if (uiProvider.equals("wq_panel")) {
            return new WQInputPanel();
        } else if (uiProvider.equals("wq_panel_adapted")) {
            return new WQAdaptedInputPanel();
        } else if (uiProvider.equals("wq_panel_adapted_fixing")) {
            return new WQAdaptedFixingInputPanel();
        } else if (uiProvider.equals("bundu_wst_wq_panel")) {
            return new BunduWstWQPanel();
        } else if (uiProvider.equals("q_segmented_panel")) {
            return new QSegmentedInputPanel();
        } else if (uiProvider.equals("river_panel")) {
            return new LinkSelection();
        } else if (uiProvider.equals("continue")) {
            return new ContinuePanel();
        } else if (uiProvider.equals("uinfo.vegetationzones.table.edit")) {
            return new VegetationzonesTableEditPanel();
        } else if (uiProvider.equals("uinfo.vegetationzones.table")) {
            return new VegetationzonesTablePanel(user);
        } else if (uiProvider.equals("wsp_datacage_panel")) {
            return new WspDatacagePanel(user);
        } else if (uiProvider.equals("dgm_datacage_panel")) {
            return new DemDatacagePanel(user);
        } else if (uiProvider.equals("waterlevel_twin_panel")) {
            return new WaterlevelTwinPanel(user);
        } else if (uiProvider.equals("auto_integer")) {
            return new AutoIntegerPanel();
        } else if (uiProvider.equals("boolean_panel")) {
            return new BooleanPanel();
        } else if (uiProvider.equals("noinput")) {
            return new NoInputPanel();
        } else if (uiProvider.equals("map_digitize")) {
            return new DigitizePanel();
        } else if (uiProvider.equals("timerange")) {
            return new IntegerRangePanel();
        } else if (uiProvider.equals("wq_simple_array")) {
            return new WQSimpleArrayPanel();
        } else if (uiProvider.equals("gaugetimerange")) {
            return new GaugeTimeRangePanel();
        } else if (uiProvider.equals("fix.location_panel")) {
            return new FixLocationPanel();
        } else if (uiProvider.equals("fix.period_panel")) {
            return new FixPeriodPanel();
        }

        else if (uiProvider.equals("bundu.fix.period_panel")) {
            return new BunduFixPeriodPanel();
        }

        else if (uiProvider.equals("bundu.wst.state.load_single_q_series")) {
            return new QSeriesLengthPanel();
        }

        else if (uiProvider.equals("fix.period_ref_panel")) {
            return new FixPeriodPanel("ref_start", "ref_end");
        } else if (uiProvider.equals("fix.period_ana_panel")) {
            return new FixMultiPeriodPanel();
        } else if (uiProvider.equals("fix.qselect_panel")) {
            return new FixQSelectPanel();
        } else if (uiProvider.equals("fix.gaugeselect_panel")) {
            return new FixGaugeSelectPanel();
        } else if (uiProvider.equals("fix.event_panel")) {
            return new FixEventSelect();
        } else if (uiProvider.equals("fix.preprocessing_panel")) {
            return new BooleanPanel();
        } else if (uiProvider.equals("fix.missing_volume_panel")) {
            return new BooleanPanel();
        }

        else if (uiProvider.equals("fix.functionselect")) {
            return new FixFunctionSelect();
        } else if (uiProvider.equals("period_select")) {
            return new PeriodPanel();
        } else if (uiProvider.equals("periods_select")) {
            return new MultiPeriodPanel();
        } else if (uiProvider.equals("sq.period.select")) {
            return new SQPeriodPanel();
        } else if (uiProvider.equals("outliers_input")) {
            return new DoubleInputPanel();
        } else if (uiProvider.equals("percent_input")) {
            return new DoubleInputPanel("percent");
        } else if (uiProvider.equals("parameter-matrix-sounding-multiple")) {
            return new ParameterMatrixPanel(getMSG().getString("name_of_sounding"), ParameterMatrix.Column.SelectionMode.multi);
        } else if (uiProvider.equals("parameter-matrix-sounding-single")) {
            return new ParameterMatrixPanel(getMSG().getString("name_of_sounding"), ParameterMatrix.Column.SelectionMode.single);
        }

        else if (uiProvider.equals("parameter-matrix-flowvelocity")) {
            return new ParameterMatrixPanel(" ", ParameterMatrix.Column.SelectionMode.multi); // TODO minfo.fließgeschwindigkeiten auflusszustand und gerinne
                                                                                              // title
            // erste spalte ausdenken (nur
            // wenn jemand
            // danach fragt, ansonsten ist es old stuff)
        } else if (uiProvider.equals("parameter-matrix-char-diameter")) {
            return new ParameterMatrixPanel(" ", ParameterMatrix.Column.SelectionMode.multi); // TODO minfo.sohlbeschaffenheit ? title erste spalte ausdenken
                                                                                              // (nur wenn jemand
            // danach fragt, ansonsten ist es old stuff)
        }

        else if (uiProvider.equals("minfo.bed.year_epoch")) {// legacy
            return new RadioPanel("ye_select");
        } else if (uiProvider.equals("bundu_calc_choice_radio_panel")) {
            return new BunduWstCalcSelectRadioPanel("calc_choice");
        } else if (uiProvider.equals("collision_yearchoice_radio_panel")) {
            return new RadioPanel("ye_select");
        } else if (uiProvider.equals("inundationduration_yearchoice_radio_panel")) {
            return new RadioPanel("ye_select");
        } else if (uiProvider.equals("salix_yearchoice_radio_panel")) {
            return new RadioPanel("ye_select");
        } else if (uiProvider.equals("salix_scenariotype_radio_panel")) {
            return new RadioPanel("scenario_selection");
        } else if (uiProvider.equals("custom_fixation_radio_panel")) {
            return new CustomFixationChoiceRadioPanel();
        } else if (uiProvider.equals("bedquality_periods_select")) {
            return new BedMultiPeriodPanel();
        } else if (uiProvider.equals("bedheights_twin_panel")) {
            return new BedHeightsDatacagePanel(user);
        } else if (uiProvider.equals("minfo.bed.char_diameter")) {
            return new CheckboxPanel();
        } else if (uiProvider.equals("minfo.sedimentload_unit_select")) {
            return new RadioPanel("unit");
        } else if (uiProvider.equals("riverside_radio_panel")) {
            return new RadioPanel("riverside");
        }

        else if (uiProvider.equals("static_data")) {
            return new StaticDataPanel();
        } else if (uiProvider.equals("minfo.sedimentload_distance_select")) {
            return new SedLoadDistancePanel();
        } else if (uiProvider.equals("minfo.sedimentload_year_select")) {
            return new SedLoadPeriodPanel();
        } else if (uiProvider.equals("minfo.sedimentload_epoch_select")) {
            return new SedLoadEpochPanel();
        } else if (uiProvider.equals("sinfo.collision.load_year_select")) {
            return new CollisionLoadYearPanel(getMSG());
        } else if (uiProvider.equals("sinfo.collision.load_epoch_select")) {
            return new CollisionLoadEpochPanel();
        } else if (uiProvider.equals("common.state.load_single_year_select")) {
            return new LoadSingleYearPanel(getMSG());
        } else if (uiProvider.equals("common.state.load_single_year_select.show_hint")) {
            return new LoadSingleYearPanel(getMSG(), true);
        } else if (uiProvider.equals("uinfo.salix.load_single_year_pseudo_epoch_select")) {
            return new LoadSingleYearPseudoEpochPanel(getMSG());
        } else if (uiProvider.equals("minfo.sedimentload_sqti_select")) {
            return new SedLoadSQTiPanel();
        } else if (uiProvider.equals("uinfo.sedimentheight_select")) {
            return new LoadSedimentHeightPanel(new SingleBehaviour(getMSG()));// Type.single);
        } else if (uiProvider.equals("uinfo.sedimentheight_select.limit5")) {
            return new LoadSedimentHeightPanel(new Limit5SalixBehaviour(getMSG()));
        } else if (uiProvider.equals("hws_datacage_panel")) {
            return new HWSDatacagePanel(user);
        } else if (uiProvider.equals("user_rgd_panel")) {
            return new UserRGDProvider();
        } else if (uiProvider.equals("static_sqrelation")) {
            return new StaticDataPanel();
        } else if (uiProvider.equals("uinfo.salix.supraregional.table")) {
            return new SupraRegionalTablePanel();
        } else if ("sinfo_flowdepth_development_twin_panel".equals(uiProvider))
            return new DiffPairTwinPanel(user, 1, getMSG().sinfo_flow_depth_development_twin_panel_max_count_msg());

        else if ("sinfo_flowdepth_twin_panel".equals(uiProvider))
            return new DiffPairTwinPanel(user, 9999, "");

        else if ("sinfo_flowdepthminmax_twin_panel".equals(uiProvider))
            return new FlowDepthMinMaxTwinPanel(user);

        // GWT.log("Picked default provider.");
        return new SelectProvider();
    }

    private static FLYSConstants getMSG() {
        if (MSG == null) {
            MSG = GWT.create(FLYSConstants.class);
        }
        return MSG;
    }

}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org