Java tutorial
/* * 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); } }