fr.univlorraine.mondossierweb.views.windows.FiltreInscritsMobileWindow.java Source code

Java tutorial

Introduction

Here is the source code for fr.univlorraine.mondossierweb.views.windows.FiltreInscritsMobileWindow.java

Source

/**
 *
 *  ESUP-Portail MONDOSSIERWEB - Copyright (c) 2016 ESUP-Portail consortium
 *
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */
package fr.univlorraine.mondossierweb.views.windows;

import java.util.List;

import javax.annotation.Resource;

import lombok.Getter;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.ApplicationContext;

import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.NativeSelect;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.themes.ValoTheme;

import fr.univlorraine.mondossierweb.MdwTouchkitUI;
import fr.univlorraine.mondossierweb.beans.CollectionDeGroupes;
import fr.univlorraine.mondossierweb.beans.ElpDeCollection;
import fr.univlorraine.mondossierweb.beans.Groupe;
import fr.univlorraine.mondossierweb.entities.apogee.Inscrit;
import fr.univlorraine.mondossierweb.entities.apogee.VersionEtape;
import fr.univlorraine.mondossierweb.utils.Utils;

/**
 * Fentre pour filtrer les inscrits sur mobile
 */
@Configurable(preConstruction = true)
public class FiltreInscritsMobileWindow extends Window {
    private static final long serialVersionUID = 1L;

    public static final String NAME = "filtreInscritsMobileWindow";

    public static final String TOUTES_LES_ETAPES_LABEL = "toutes";

    public static final String TOUS_LES_GROUPES_LABEL = "tous";

    private String typeFavori;

    @Getter
    private NativeSelect listeEtapes;

    @Getter
    private NativeSelect listeGroupes;

    @Getter
    private String vetSelectionnee;

    @Getter
    private String groupeSelectionne;

    @Getter
    private boolean demandeFiltrage;

    @Resource
    private transient ApplicationContext applicationContext;

    /**
     * Cre une fentre
     */
    public FiltreInscritsMobileWindow() {
        setWidth("95%");
        setModal(true);
        setResizable(false);
        setClosable(true);

        setCaption(applicationContext.getMessage(NAME + ".title", null, getLocale()));
        setStyleName("v-popover-blank");

        typeFavori = MdwTouchkitUI.getCurrent().getTypeObjListInscrits();

        GridLayout layout = new GridLayout(1, 2);
        layout.setWidth("100%");
        layout.setSpacing(true);
        layout.setMargin(true);
        setContent(layout);

        //Si on affiche la liste des inscrits  un ELP
        //on doit affiche l'tape d'appartenance et ventuellement les groupes
        //Affichage d'une liste droulante contenant la liste des annes
        if (typeIsElp()) {

            //GESTION DES ETAPES
            List<VersionEtape> letapes = MdwTouchkitUI.getCurrent().getListeEtapesInscrits();
            if (letapes != null && letapes.size() > 0) {

                Label etapeLabel = new Label(applicationContext.getMessage(NAME + ".etape", null, getLocale()));
                layout.addComponent(etapeLabel);
                layout.setComponentAlignment(etapeLabel, Alignment.BOTTOM_LEFT);
                listeEtapes = new NativeSelect();
                listeEtapes.setNullSelectionAllowed(false);
                listeEtapes.setRequired(false);
                listeEtapes.setWidth("100%");
                listeEtapes.addItem(TOUTES_LES_ETAPES_LABEL);
                listeEtapes.setItemCaption(TOUTES_LES_ETAPES_LABEL, TOUTES_LES_ETAPES_LABEL);
                for (VersionEtape etape : letapes) {
                    String idEtape = etape.getId().getCod_etp() + "/" + etape.getId().getCod_vrs_vet();
                    listeEtapes.addItem(idEtape);
                    listeEtapes.setItemCaption(idEtape, "[" + idEtape + "] " + etape.getLib_web_vet());
                }

                if (MdwTouchkitUI.getCurrent().getEtapeInscrits() != null) {
                    listeEtapes.setValue(MdwTouchkitUI.getCurrent().getEtapeInscrits());
                } else {

                    listeEtapes.setValue(TOUTES_LES_ETAPES_LABEL);
                }
                //Gestion de l'vnement sur le changement d'tape
                listeEtapes.addValueChangeListener(new ValueChangeListener() {
                    @Override
                    public void valueChange(ValueChangeEvent event) {
                        vetSelectionnee = (String) event.getProperty().getValue();
                        if (vetSelectionnee.equals(TOUTES_LES_ETAPES_LABEL)) {
                            vetSelectionnee = null;
                        }
                        MdwTouchkitUI.getCurrent().setEtapeInscrits(vetSelectionnee);
                        //faire le changement
                        groupeSelectionne = ((listeGroupes != null && listeGroupes.getValue() != null)
                                ? (String) listeGroupes.getValue()
                                : null);
                        if (groupeSelectionne != null && groupeSelectionne.equals(TOUS_LES_GROUPES_LABEL)) {
                            groupeSelectionne = null;
                        }

                        //update de l'affichage
                        //initListe();

                    }
                });
                layout.addComponent(listeEtapes);

            }

            //GESTION DES GROUPES
            List<ElpDeCollection> lgroupes = MdwTouchkitUI.getCurrent().getListeGroupesInscrits();
            if (lgroupes != null && lgroupes.size() > 0) {

                // Label "GROUPE"
                HorizontalLayout gLayout = new HorizontalLayout();
                gLayout.setSizeFull();
                Label groupeLabel = new Label(applicationContext.getMessage(NAME + ".groupe", null, getLocale()));
                gLayout.addComponent(groupeLabel);
                gLayout.setComponentAlignment(groupeLabel, Alignment.MIDDLE_LEFT);
                layout.addComponent(gLayout);

                //Liste droulante pour choisir le groupe
                listeGroupes = new NativeSelect();
                listeGroupes.setNullSelectionAllowed(false);
                listeGroupes.setRequired(false);
                listeGroupes.setWidth("100%");
                listeGroupes.addItem(TOUS_LES_GROUPES_LABEL);
                listeGroupes.setItemCaption(TOUS_LES_GROUPES_LABEL, TOUS_LES_GROUPES_LABEL);
                for (ElpDeCollection edc : lgroupes) {
                    for (CollectionDeGroupes cdg : edc.getListeCollection()) {
                        for (Groupe groupe : cdg.getListeGroupes()) {
                            listeGroupes.addItem(groupe.getCleGroupe());
                            listeGroupes.setItemCaption(groupe.getCleGroupe(), groupe.getLibGroupe());

                        }
                    }
                }
                //On pr-remplie le groupe choisi si on en a dj choisi un
                if (MdwTouchkitUI.getCurrent().getGroupeInscrits() != null) {
                    listeGroupes.setValue(MdwTouchkitUI.getCurrent().getGroupeInscrits());
                } else {
                    listeGroupes.setValue(TOUS_LES_GROUPES_LABEL);
                }

                //Gestion de l'vnement sur le changement de groupe
                listeGroupes.addValueChangeListener(new ValueChangeListener() {
                    @Override
                    public void valueChange(ValueChangeEvent event) {
                        groupeSelectionne = (String) event.getProperty().getValue();
                        if (groupeSelectionne.equals(TOUS_LES_GROUPES_LABEL)) {
                            groupeSelectionne = null;
                        }
                        MdwTouchkitUI.getCurrent().setGroupeInscrits(groupeSelectionne);
                        //faire le changement
                        vetSelectionnee = ((listeEtapes != null && listeEtapes.getValue() != null)
                                ? (String) listeEtapes.getValue()
                                : null);
                        if (vetSelectionnee != null && vetSelectionnee.equals(TOUTES_LES_ETAPES_LABEL)) {
                            vetSelectionnee = null;
                        }

                    }
                });

                layout.addComponent(listeGroupes);

            }
        }

        // Bouton "Filtrer"
        HorizontalLayout bLayout = new HorizontalLayout();
        bLayout.setSizeFull();
        Button closeButton = new Button(applicationContext.getMessage(NAME + ".filtrerBtn", null, getLocale()));
        closeButton.setStyleName(ValoTheme.BUTTON_PRIMARY);
        closeButton.addStyleName("v-popover-button");
        demandeFiltrage = false;
        closeButton.addClickListener(e -> {
            //retourner vetSelectionnee et groupeSelectionne;
            demandeFiltrage = true;
            close();
        });
        bLayout.addComponent(closeButton);
        bLayout.setComponentAlignment(closeButton, Alignment.MIDDLE_CENTER);
        layout.addComponent(bLayout);

    }

    private boolean typeIsElp() {
        return (typeFavori != null && typeFavori.equals(Utils.ELP));
    }

    private void refreshListeCodind(BeanItemContainer<Inscrit> ic) {
        /*if(listecodind!=null){
           listecodind.clear();
        }else{
           listecodind = new LinkedList<String>();
        }
        for(Inscrit inscrit : ic.getItemIds()){
           listecodind.add(inscrit.getCod_ind());
        }*/
    }

}