view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java @ 9559:ba0561906f81

Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author gernotbelger
date Wed, 24 Oct 2018 18:40:38 +0200
parents 709a73badd48
children 839b2aa84dd0
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.InundationWMSInputPanel;
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.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")) {
            // THIS CASE IS UNUSED AND SHOULD BE DELETED
            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("uinfo.inundation.wms_year")) {
            return new InundationWMSInputPanel(getMSG(), "year_epoch_select", getMSG().year(), null, true);
        } else if (uiProvider.equals("uinfo.inundation.wms_epoch")) {
            return new InundationWMSInputPanel(getMSG(), "year_epoch_select", getMSG().epoch(), null, false);
        } 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.inundation.szenario")) {
            return new InundationWMSInputPanel(getMSG(), "inundation_scenario", getMSG().uinfo_inundation_scenario_old_msg(), "cm", false);
        } 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