com.asptt.plongee.resa.wicket.page.inscription.DeInscriptionPlongeePage.java Source code

Java tutorial

Introduction

Here is the source code for com.asptt.plongee.resa.wicket.page.inscription.DeInscriptionPlongeePage.java

Source

package com.asptt.plongee.resa.wicket.page.inscription;

import java.util.List;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import com.asptt.plongee.resa.exception.TechnicalException;
import com.asptt.plongee.resa.model.Adherent;
import com.asptt.plongee.resa.model.Plongee;
import com.asptt.plongee.resa.model.PlongeeDataProvider;
import com.asptt.plongee.resa.wicket.page.ErreurTechniquePage;
import com.asptt.plongee.resa.wicket.page.TemplatePage;
import com.asptt.plongee.resa.util.CatalogueMessages;
import com.asptt.plongee.resa.util.Parameters;
import com.asptt.plongee.resa.util.ResaUtil;
import com.asptt.plongee.resa.wicket.ResaSession;

public class DeInscriptionPlongeePage extends TemplatePage {

    private Adherent adh = null;
    private List<Plongee> plongees;
    private final FeedbackPanel feedback;

    private final ModalWindow modalConfirmDesInscription;
    private final ModalWindow modalConfirmDesInscriptionEncadrant;

    public DeInscriptionPlongeePage() {

        this.adh = ResaSession.get().getAdherent();

        setPageTitle("Desinscription plongee");
        add(new Label("message", new StringResourceModel(CatalogueMessages.DESINSCRIPTION_MSG_ADHERENT, this,
                new Model<Adherent>(adh))));

        feedback = new FeedbackPanel("feedback");
        feedback.setOutputMarkupId(true);
        add(feedback);

        // Initialisation de la fentre modal de confirmation d'annulation d'un encadrant
        add(modalConfirmDesInscription = new ModalWindow("modalConfirmDesInscription"));
        modalConfirmDesInscription.setTitle("Confirmation de desinscription");
        modalConfirmDesInscription.setResizable(false);
        modalConfirmDesInscription.setInitialWidth(28);
        modalConfirmDesInscription.setInitialHeight(10);
        modalConfirmDesInscription.setWidthUnit("em");
        modalConfirmDesInscription.setHeightUnit("em");
        modalConfirmDesInscription.setCssClassName(ModalWindow.CSS_CLASS_BLUE);

        // Initialisation de la fentre modal de confirmation d'annulation d'un encadrant
        add(modalConfirmDesInscriptionEncadrant = new ModalWindow("modalConfirmDeInscriptionEncadrant"));
        modalConfirmDesInscriptionEncadrant.setTitle("Confirmation de desinscription d'un encadrant");
        modalConfirmDesInscriptionEncadrant.setResizable(false);
        modalConfirmDesInscriptionEncadrant.setInitialWidth(28);
        modalConfirmDesInscriptionEncadrant.setInitialHeight(11);
        modalConfirmDesInscriptionEncadrant.setWidthUnit("em");
        modalConfirmDesInscriptionEncadrant.setHeightUnit("em");
        modalConfirmDesInscriptionEncadrant.setCssClassName(ModalWindow.CSS_CLASS_BLUE);
        init();
    }

    private void init() {
        try {
            plongees = ResaSession.get().getPlongeeService().rechercherPlongeesAdherentInscrit(
                    ResaSession.get().getAdherent(), Parameters.getInt("desincription.nb.heure"));
        } catch (TechnicalException e) {
            e.printStackTrace();
            ErreurTechniquePage etp = new ErreurTechniquePage(e);
            setResponsePage(etp);
        }

        PlongeeDataProvider pDataProvider = new PlongeeDataProvider(plongees);

        add(new DataView<Plongee>("simple", pDataProvider) {

            private static final long serialVersionUID = 2877768852318892774L;

            @Override
            protected void populateItem(final Item<Plongee> item) {
                final Plongee plongee = item.getModelObject();
                String nomDP = "Aucun";
                if (null != plongee.getDp()) {
                    nomDP = plongee.getDp().getNom();
                }

                item.add(new IndicatingAjaxLink("select") {
                    private static final long serialVersionUID = 1771547719792642196L;

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        deInscrire(target, item.getModel(), adh);
                    }
                });

                item.add(new Label("date", ResaUtil.getJourDatePlongee(plongee.getDatePlongee())));
                item.add(new Label("heure", ResaUtil.getHeurePlongee(plongee.getDatePlongee())));
                item.add(new Label("typePlongee", plongee.getTypePlongee().getText()));
                item.add(new Label("dp", nomDP));
                item.add(new Label("niveauMini", plongee.getNiveauMinimum()));
                // Places restantes
                item.add(new Label("placesRestantes",
                        ResaSession.get().getPlongeeService().getNbPlaceRestante(plongee).toString()));

                item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>() {
                    @Override
                    public String getObject() {
                        String cssClass;
                        if (item.getIndex() % 2 == 1) {
                            cssClass = "even";
                        } else {
                            cssClass = "odd";
                        }
                        boolean isInscrit = false;
                        for (Adherent adherent : plongee.getParticipants()) {
                            if (adherent.getNumeroLicense().equals(adh.getNumeroLicense())) {
                                cssClass = cssClass + " inscrit";
                                isInscrit = true;
                            }
                        }
                        if (!plongee.isNbMiniAtteint(Parameters.getInt("nb.plongeur.mini"))) {
                            if (isInscrit) {
                                cssClass = cssClass + "MinimumPlongeur";
                            } else {
                                cssClass = cssClass + " minimumPlongeur";
                            }
                        }
                        return cssClass;
                    }
                }));
            }
        });

    }

    public void deInscrire(AjaxRequestTarget target, IModel<Plongee> iModel, Adherent plongeur) {
        final Plongee plongee = iModel.getObject();
        try {
            Adherent adherent = ResaSession.get().getAdherent();
            //SI c'est un encadrant il faut verifier s'il en reste assez
            //et sinon envoyer un mail 
            if (!adherent.isEncadrent()) {
                // On demande confirmation de l'inscription
                replaceModalDesInscription(target, plongee, plongeur);
                modalConfirmDesInscription.show(target);
            } else {
                // On demande confirmation de l'inscription pour un encadrant
                replaceModalDeInscriptionEncadrant(target, plongee, plongeur);
                modalConfirmDesInscriptionEncadrant.show(target);
            }
        } catch (TechnicalException e) {
            e.printStackTrace();
            error(e.getKey());
        } finally {
            target.addComponent(feedback);
        }
    }

    private void replaceModalDeInscriptionEncadrant(AjaxRequestTarget target, Plongee plongee, Adherent plongeur) {
        modalConfirmDesInscriptionEncadrant.setContent(new ConfirmDesInscriptionPlongeeEncadrantPanel(
                modalConfirmDesInscriptionEncadrant.getContentId(), plongee, plongeur));
        modalConfirmDesInscriptionEncadrant.setTitle("Confirmation de d\u00e9sinscription \u00e0 une plong\u00e9e");
        modalConfirmDesInscriptionEncadrant.setUseInitialHeight(true);
        // Pour viter le message de disparition de la fenetre lors de la validation
        target.appendJavascript("Wicket.Window.unloadConfirmation  = false;");
    }

    private void replaceModalDesInscription(AjaxRequestTarget target, Plongee plongee, Adherent plongeur) {
        modalConfirmDesInscription.setContent(new ConfirmDesInscriptionPlongeePanel(
                modalConfirmDesInscription.getContentId(), plongee, plongeur));
        modalConfirmDesInscription.setTitle("Confirmation de d\u00e9sinscription \u00e0 une plong\u00e9e");
        modalConfirmDesInscription.setUseInitialHeight(true);
        // Pour viter le message de disparition de la fenetre lors de la validation
        target.appendJavascript("Wicket.Window.unloadConfirmation  = false;");
    }
}