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