package org.gcube.portlets.user.performfishanalytics.client.viewbinder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.gcube.portlets.user.performfishanalytics.client.controllers.PerformFishAnalyticsController; import org.gcube.portlets.user.performfishanalytics.client.event.LoadPopulationTypeEvent; import org.gcube.portlets.user.performfishanalytics.client.event.PerformFishFieldFormChangedEvent; import org.gcube.portlets.user.performfishanalytics.client.event.SelectedPopulationTypeEvent; import org.gcube.portlets.user.performfishanalytics.shared.Area; import org.gcube.portlets.user.performfishanalytics.shared.Period; import org.gcube.portlets.user.performfishanalytics.shared.Population; import org.gcube.portlets.user.performfishanalytics.shared.PopulationType; import org.gcube.portlets.user.performfishanalytics.shared.Quarter; import org.gcube.portlets.user.performfishanalytics.shared.Species; import com.github.gwtbootstrap.client.ui.Alert; import com.github.gwtbootstrap.client.ui.CheckBox; import com.github.gwtbootstrap.client.ui.ControlGroup; import com.github.gwtbootstrap.client.ui.ListBox; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.github.gwtbootstrap.client.ui.constants.ControlGroupType; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.DomEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** * The Class PerformFishAnalitycsFormView. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * Jan 22, 2019 */ public class PerformFishAnalitycsFormView extends Composite { /** The ui binder. */ private static PerformFishAnalitycsFormViewUiBinder uiBinder = GWT.create(PerformFishAnalitycsFormViewUiBinder.class); /** * The Interface CreateFolderConfigurationToThreddsSyncUiBinder. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 14, * 2018 */ interface PerformFishAnalitycsFormViewUiBinder extends UiBinder { } /** The pager. */ // @UiField // Pager pager; @UiField public ListBox field_select_population; @UiField protected ListBox field_select_population_type; @UiField ListBox field_select_species; @UiField ListBox field_select_quarter; @UiField ListBox field_select_area; @UiField ListBox field_select_period; @UiField ControlGroup cg_select_population; @UiField ControlGroup cg_select_population_type; @UiField ControlGroup cg_select_species; @UiField ControlGroup cg_select_quarter; @UiField ControlGroup cg_select_area; @UiField ControlGroup cg_select_period; @UiField VerticalPanel errorPanel; @UiField CheckBox uib_check_all_period; @UiField CheckBox uib_check_all_area; @UiField CheckBox uib_check_all_quarter; // @UiField // Fieldset fieldset_add_catalogue_bean; /** The folder id. */ private String folderId; private Map> mapPopulation = new HashMap>(); private Map mapPopulationType = new HashMap(); /** * Instantiates a new perform fish analitycs form view. */ public PerformFishAnalitycsFormView() { initWidget(uiBinder.createAndBindUi(this)); field_select_population.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { // String scope = field_select_scope.getSelectedItemText(); String value = field_select_population.getSelectedValue(); GWT.log("Selected POPULATION: " + value); PerformFishAnalyticsController.eventBus.fireEvent(new LoadPopulationTypeEvent(value, null)); //PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_population)); } }); field_select_population_type.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { String populatioTypeSelected = field_select_population_type.getSelectedValue(); GWT.log("Selected population type: " + populatioTypeSelected); PopulationType opt = mapPopulationType.get(populatioTypeSelected); PerformFishAnalyticsController.eventBus.fireEvent(new SelectedPopulationTypeEvent(opt)); fillSpecies(opt.getListSpecies()); fillQuarter(opt.getListQuarter()); fillArea(opt.getListArea()); fillPeriod(opt.getListPeriod()); PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_population_type)); } }); field_select_period.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { hideError(cg_select_period, false); PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_period)); } }); field_select_quarter.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { hideError(cg_select_quarter, false); PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_quarter)); } }); field_select_area.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { hideError(cg_select_area, false); PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_area)); } }); uib_check_all_period.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { boolean isChecked = uib_check_all_period.getValue(); selectAllFields(field_select_period, isChecked); } }); uib_check_all_quarter.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { boolean isChecked = uib_check_all_quarter.getValue(); selectAllFields(field_select_quarter, isChecked); } }); uib_check_all_area.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { boolean isChecked = uib_check_all_area.getValue(); selectAllFields(field_select_area, isChecked); } }); } /** * Select all fields. * * @param listBox the list box * @param selected the selected */ private void selectAllFields(ListBox listBox, boolean selected){ for (int i=0; i result, Population population) { mapPopulation.put(populationName, result); fillPopulationType(populationName, result, population); } /** * Fill species. * * @param listSpecies * the list species */ private void fillSpecies(List listSpecies) { field_select_species.clear(); if (listSpecies != null && listSpecies.size() > 0) { field_select_species.setEnabled(true); for (Species species : listSpecies) { field_select_species.addItem(species.getName(), species.getId()); } } else { field_select_species.setEnabled(false); } } /** * Fill area. * * @param listArea * the list area */ private void fillArea(List listArea) { field_select_area.clear(); if (listArea != null && listArea.size() > 0) { field_select_area.setEnabled(true); for (Area area : listArea) { field_select_area.addItem(area.getName(), area.getId()); } } else { field_select_area.setEnabled(false); } } /** * Fill period. * * @param listPeriod * the list period */ private void fillPeriod(List listPeriod) { field_select_period.clear(); if (listPeriod != null && listPeriod.size() > 0) { field_select_period.setEnabled(true); for (Period period : listPeriod) { field_select_period.addItem(period.getName(), period.getId()); } } else { field_select_period.setEnabled(false); } } /** * Fill quarter. * * @param listQuarter * the list quarter */ private void fillQuarter(List listQuarter) { field_select_quarter.clear(); if (listQuarter != null && listQuarter.size() > 0) { field_select_quarter.setEnabled(true); for (Quarter quarter : listQuarter) { field_select_quarter.addItem(quarter.getName(), quarter.getId()); } } else { field_select_quarter.setEnabled(false); } } /** * Fill population type. * * @param populationName * the population name * @param result * the result * @param population * the population */ private void fillPopulationType( String populationName, List result, Population population) { field_select_population_type.clear(); if (result != null && result.size() > 0) { field_select_population_type.setEnabled(true); mapPopulationType.clear(); for (PopulationType popType : result) { field_select_population_type.addItem( popType.getName(), popType.getId()); mapPopulationType.put(popType.getId(), popType); // if(thCatalogueBean.isDefault()){ // field_select_catalogue_name.setSelectedValue(thCatalogueBean.getName()); // } } // field_select_population_type.setSelectedValue(thCatalogueBean.getName()); field_select_population_type.setSelectedValue(result.get(0).getName()); DomEvent.fireNativeEvent( Document.get().createChangeEvent(), field_select_population_type); field_select_population.addItem( population.getName(), population.getId()); } } /** * Validate form. * * @return true, if successful */ public boolean validateForm() { cg_select_quarter.setType(ControlGroupType.NONE); cg_select_area.setType(ControlGroupType.NONE); cg_select_period.setType(ControlGroupType.NONE); errorPanel.setVisible(false); // cg_remote_path.setType(ControlGroupType.NONE); if (field_select_quarter.getItemCount()>0 && field_select_quarter.getSelectedIndex() == -1) { cg_select_quarter.setType(ControlGroupType.ERROR); showError("You must select a Quarter"); return false; } if (field_select_area.getItemCount()>0 && field_select_area.getSelectedIndex() == -1) { cg_select_area.setType(ControlGroupType.ERROR); showError("You must select an Area"); return false; } if (field_select_period.getItemCount()>0 && field_select_period.getSelectedIndex() == -1) { cg_select_period.setType(ControlGroupType.ERROR); showError("You must select a Period"); return false; } return true; } /** * Show error. * * @param txt the txt */ public void showError(String txt) { errorPanel.clear(); errorPanel.setVisible(true); Alert msg = new Alert(txt); msg.setAnimation(true); msg.setClose(false); msg.setType(AlertType.ERROR); errorPanel.add(msg); } /** * Hide error. * * @param cgroup the cgroup * @param forceHide the force hide */ public void hideError(ControlGroup cgroup, boolean forceHide){ if(forceHide){ cg_select_quarter.setType(ControlGroupType.NONE); cg_select_area.setType(ControlGroupType.NONE); cg_select_period.setType(ControlGroupType.NONE); errorPanel.setVisible(false); } if(cgroup!=null){ cgroup.setType(ControlGroupType.NONE); } errorPanel.setVisible(false); } /** * Gets the batch type. * * @return the batch type */ public String getBatchType(){ return field_select_population_type.getSelectedItemText(); } /** * Gets the sel level. * * @return the sel level */ public String getLevel(){ return field_select_population.getSelectedItemText(); } /** * Gets the species. * * @return the species */ public String getSpecies(){ return field_select_species.getSelectedItemText(); } /** * Gets the quarter. * * @return the quarter */ public List getQuarter(){ return getSelected(field_select_quarter); } /** * Gets the area. * * @return the area */ public List getArea(){ return getSelected(field_select_area); } /** * Gets the period. * * @return the period */ public List getPeriod(){ return getSelected(field_select_period); } /** * Gets the selected. * * @param listBox the list box * @return the selected */ private List getSelected(ListBox listBox){ List selected = new ArrayList(); for (int i=0; i