com.asptt.plongee.resa.wicket.page.admin.fichesecurite.SaisieDateFSForm.java Source code

Java tutorial

Introduction

Here is the source code for com.asptt.plongee.resa.wicket.page.admin.fichesecurite.SaisieDateFSForm.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.asptt.plongee.resa.wicket.page.admin.fichesecurite;

import com.asptt.plongee.resa.model.Adherent;
import com.asptt.plongee.resa.model.NavigationOriginePage;
import com.asptt.plongee.resa.util.CatalogueMessages;
import com.asptt.plongee.resa.util.ResaUtil;
import com.asptt.plongee.resa.wicket.ResaSession;
import com.asptt.plongee.resa.wicket.page.admin.plongee.AnnulerPlongee;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.datetime.StyleDateConverter;
import org.apache.wicket.datetime.markup.html.form.DateTextField;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.extensions.yui.calendar.DatePicker;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

/**
 *
 * @author ECUS6396
 */
public class SaisieDateFSForm extends Form {

    private static final long serialVersionUID = -1555366090072306934L;
    private final Logger logger = Logger.getLogger(getClass());
    private Date dateMini;
    private Date dateMaxi;
    private Adherent plongeur;
    private NavigationOriginePage oriPage;

    @SuppressWarnings("serial")
    public SaisieDateFSForm(String name, NavigationOriginePage originePage, Adherent diver, Date d_Min, Date d_Max,
            final FeedbackPanel feedback) {

        super(name);

        feedback.setOutputMarkupId(true);
        oriPage = originePage;
        if (null == diver) {
            plongeur = ResaSession.get().getAdherent();
        } else {
            plongeur = diver;
        }
        CompoundPropertyModel<DateBean> model = new CompoundPropertyModel<DateBean>(new DateBean());
        setModel(model);

        final DateTextField dateMin;
        if (null == d_Min) {
            dateMin = new DateTextField("dateMin", new PropertyModel(model, "dateMini"),
                    new StyleDateConverter("S-", true));
        } else {
            dateMin = new DateTextField("dateMin", new Model(d_Min), new StyleDateConverter("S-", true));
            dateMini = d_Min;
        }
        dateMin.add(new OnChangeAjaxBehavior() {
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                final Date valueAsDate = ((DateTextField) getComponent()).getModelObject();
                dateMini = valueAsDate;
            }
        });

        dateMin.setRequired(true);
        dateMin.setOutputMarkupId(true);
        dateMin.add(new DatePicker());
        add(dateMin);
        logger.info("DateTextField dateMin : " + dateMin.getValue());

        DateTextField dateMax;
        if (null == d_Max) {
            dateMax = new DateTextField("dateMax", new PropertyModel<Date>(model, "dateMaxi"),
                    new StyleDateConverter("S-", true));
        } else {
            dateMax = new DateTextField("dateMax", new Model(d_Max), new StyleDateConverter("S-", true));
            dateMaxi = d_Max;
        }
        dateMax.add(new OnChangeAjaxBehavior() {
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                final Date valueAsDate = ((DateTextField) getComponent()).getModelObject();
                dateMaxi = valueAsDate;
            }
        });
        dateMax.setRequired(true);
        dateMax.setOutputMarkupId(true);
        dateMax.add(new DatePicker());
        add(dateMax);
        logger.info("DateTextField dateMax : " + dateMax.getValue());

        IndicatingAjaxButton b_validerDate = new IndicatingAjaxButton("validDate") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                dateMin.getDefaultModel();
                DateBean dateBean = (DateBean) form.getModelObject();
                //Au 2ieme passage/recherche la form n'est pas mise  jour et dateBean.getDatexxx est null
                if (null == dateBean.getDateMini()) {
                    //Au 1er passage dateMini est valoris
                    if (null == dateMini) {
                        // Si vraiment dateMini est null on prend la date du jour
                        dateMini = new Date();
                    }
                } else {
                    // 2ieme passage/recherche la form n'est pas lue dataBean.getDatexxx est null
                    // on conserve la valeur de dateMini qui vient du OnChangeAjaxBehavior()
                    dateMini = dateBean.getDateMini();
                }
                if (null == dateBean.getDateMaxi()) {
                    if (null == dateMaxi) {
                        dateMaxi = new Date();
                    }
                } else {
                    dateMaxi = dateBean.getDateMaxi();
                }
                if (dateMini.after(dateMaxi)) {
                    error("dateMini et dateMaxi incompatibles");
                } else {
                    switch (oriPage) {
                    case VISU_FICHE_SECURITE:
                        setResponsePage(new VisuListeFS(oriPage, plongeur, dateMini, dateMaxi));
                        break;
                    case CREATE_FICHE_SECURITE:
                        setResponsePage(new GererListePlongeeWithoutFS(oriPage, dateMini, dateMaxi));
                        break;
                    case MODIF_FICHE_SECURITE:
                        setResponsePage(new UpdateListeFS(oriPage, dateMini, dateMaxi));
                        break;
                    case ANNUL_PLONGEE:
                        //oups problme ce cas ne doit pas se produire.
                        setResponsePage(new AnnulerPlongee(oriPage, dateMini, dateMaxi));
                    }
                }
            }

            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {
                target.addComponent(feedback);
            }
        };
        b_validerDate.setOutputMarkupId(true);
        add(b_validerDate);

        IndicatingAjaxLink cancel = new IndicatingAjaxLink("cancel") {
            @Override
            public void onClick(AjaxRequestTarget target) {
                setVisible(false);
                switch (oriPage) {
                case VISU_FICHE_SECURITE:
                    setResponsePage(new VisuListeFS(oriPage, plongeur, dateMini, dateMaxi));
                    break;
                case CREATE_FICHE_SECURITE:
                    setResponsePage(new GererListePlongeeWithoutFS(oriPage, dateMini, dateMaxi));
                    break;
                case MODIF_FICHE_SECURITE:
                    setResponsePage(new UpdateListeFS(oriPage, dateMini, dateMaxi));
                    break;
                case ANNUL_PLONGEE:
                    //oups problme ce cas ne doit pas se produire.
                    setResponsePage(new AnnulerPlongee(oriPage, dateMini, dateMaxi));
                }
            }
        };
        cancel.setOutputMarkupId(true);
        add(cancel);
    }
}