Java tutorial
/* * This file is a part of Square, Customer Relationship Management Software for insurance's companies * Copyright (C) 2010-2012 SCUB <square@scub.net> - Mutuelle SMATIS FRANCE <square@smatis.fr > * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package com.square.composant.tarificateur.square.client.view.popup.doublon; import java.util.ArrayList; import java.util.List; import org.scub.foundation.framework.gwt.module.client.util.composants.decorated.DecoratedButton; import org.scub.foundation.framework.gwt.module.client.util.composants.grid.header.HeaderFlexTable; import org.scub.foundation.framework.gwt.module.client.util.popup.Popup; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.HasAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.square.composant.tarificateur.square.client.ComposantTarificateur; import com.square.composant.tarificateur.square.client.content.i18n.ComposantTarificateurConstants; import com.square.composant.tarificateur.square.client.model.doublons.PersonneDoublonModel; import com.square.composant.tarificateur.square.client.presenter.popup.doublon.PopupCreationAssureSocialDoublonPresenter.PopupCreationAssureSocialDoublonView; /** * Vue de la popup indiquant la possibilit de doublon lors de la cration d'une personne. * @author Nicolas NADEAU (nicolas.nadeau@scub.net) - SCUB */ public class PopupCreationAssureSocialDoublonViewImpl extends Popup implements PopupCreationAssureSocialDoublonView { /** View constants. */ private static PopupCreationAssureSocialDoublonViewImplConstants viewConstants = GWT .create(PopupCreationAssureSocialDoublonViewImplConstants.class); /** Contenu de la popup. */ private VerticalPanel pContenu; /** Bouton pour crer une nouvelle personne. */ private DecoratedButton btnCreer; /** Bouton pour rattacher une personne slectionne. */ private DecoratedButton btnRattacher; private DecoratedButton btnAnnuler; /** Pour rcuprer les vnements sur le tableau dans le Presenter. */ private HandlerManager remotePagingHandlerManager; /** Identifiant de la personne slectionne pour le rattachement. */ private Long idPersonneSelectionnee; private List<PersonneDoublonModel> listeDoublons; private String nom; private String prenom; /** * Constructeur. * @param nom le nom de la personne. * @param prenom le prnom de la personne. * @param listeDoublons la liste des doublons. */ public PopupCreationAssureSocialDoublonViewImpl(String nom, String prenom, List<PersonneDoublonModel> listeDoublons) { super(viewConstants.titrePopup(), false, false, true); this.prenom = prenom; this.nom = nom; this.listeDoublons = listeDoublons; pContenu = new VerticalPanel(); pContenu.setWidth(PopupCreationAssureSocialDoublonViewImplConstants.LARGEUR_POPUP); pContenu.setSpacing(10); construire(); this.setWidget(pContenu, 0); this.addStyleName(ComposantTarificateur.RESOURCES.css().popupCreationPersonneDoublon()); } private void construire() { final VerticalPanel conteneurTexte = new VerticalPanel(); conteneurTexte.setSpacing(3); conteneurTexte.setWidth(ComposantTarificateurConstants.POURCENT_100); final Label lPhraseEnTete = new Label(nom + " " + prenom + " " + viewConstants.finPhraseEnTete()); final Label lVerification = new Label(viewConstants.phraseVerifier()); conteneurTexte.add(lPhraseEnTete); conteneurTexte.setCellHorizontalAlignment(lPhraseEnTete, HasAlignment.ALIGN_CENTER); conteneurTexte.add(lVerification); conteneurTexte.setCellHorizontalAlignment(lVerification, HasAlignment.ALIGN_CENTER); pContenu.add(conteneurTexte); pContenu.setCellHorizontalAlignment(conteneurTexte, HasAlignment.ALIGN_CENTER); /** Construit le tableau de recherche. */ construireTableauRecherche(listeDoublons); /** Construit la barre de boutons. */ construireBarreBoutons(); } @Override public void rafraichir(String newNom, String newPrenom, List<PersonneDoublonModel> newListeDoublons) { this.prenom = newPrenom; this.nom = newNom; this.listeDoublons = newListeDoublons; pContenu.clear(); construire(); } /** * Construit le tableau de recherche. * @param listeDoublons la liste des doublons. */ private void construireTableauRecherche(List<PersonneDoublonModel> newListeDoublons) { final List<CheckBox> listeCBSelection = new ArrayList<CheckBox>(); final HeaderFlexTable<PersonneDoublonModel> ftDoublons = new HeaderFlexTable<PersonneDoublonModel>() { @Override public Widget[] setHeader() { return new Widget[] { new Label(viewConstants.enTeteColonneNom()), new Label(viewConstants.enTeteColonnePrenom()), new Label(viewConstants.enTeteColonneDateNaissance()), new Label(viewConstants.enTeteColonneAdresse()), new Label(viewConstants.enTeteColonneCodePostal()), new Label(viewConstants.enTeteColonneVille()), new Label(viewConstants.enTeteColonneCompoFamiliale()), new Label(viewConstants.enTeteSelection()) }; } @Override public void setRow(final PersonneDoublonModel doublon) { setWidget(0, new Label(doublon.getNom())); setWidget(1, new Label(doublon.getPrenom())); setWidget(2, new Label(doublon.getDateNaissance())); setWidget(3, new Label(doublon.getAdresse())); setWidget(4, new Label(doublon.getCodePostal())); setWidget(5, new Label(doublon.getCommune())); setWidget(6, new Label(doublon.getCompoFamiliale())); final CheckBox cb = new CheckBox(); cb.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (cb.getValue()) { for (CheckBox checkBox : listeCBSelection) { if (!cb.equals(checkBox)) { checkBox.setEnabled(false); } } idPersonneSelectionnee = doublon.getId(); btnRattacher.setEnabled(true); } else { for (CheckBox checkBox : listeCBSelection) { checkBox.setEnabled(true); } idPersonneSelectionnee = null; btnRattacher.setEnabled(false); } } }); listeCBSelection.add(cb); setWidget(7, cb); setCellHorizontalAlignment(7, HasAlignment.ALIGN_CENTER); } }; ftDoublons.setWidth(ComposantTarificateurConstants.POURCENT_100); ftDoublons.setListeObjets(newListeDoublons); final ScrollPanel scrollPanel = new ScrollPanel(); scrollPanel.setHeight("250px"); scrollPanel.add(ftDoublons); pContenu.add(scrollPanel); } /** Construit la barre de boutons. */ private void construireBarreBoutons() { btnRattacher = new DecoratedButton(viewConstants.btnRattacherPersonneExistante()); btnRattacher.setEnabled(false); btnCreer = new DecoratedButton(viewConstants.btnCreerNouvellePersonne()); btnAnnuler = new DecoratedButton(viewConstants.btnAnnuler()); final HorizontalPanel conteneurBoutons = new HorizontalPanel(); conteneurBoutons.setSpacing(5); conteneurBoutons.add(btnRattacher); conteneurBoutons.add(btnCreer); conteneurBoutons.add(btnAnnuler); pContenu.add(conteneurBoutons); pContenu.setCellHorizontalAlignment(conteneurBoutons, HasAlignment.ALIGN_CENTER); } @Override public Widget asWidget() { return null; } @Override public HasClickHandlers getBtnCreer() { return btnCreer; } @Override public HasClickHandlers getBtnRattacher() { return btnRattacher; } @Override public HandlerManager getRemotePagingHandlerManager() { return remotePagingHandlerManager; } @Override public Long getIdPersonneSelectionnee() { return idPersonneSelectionnee; } @Override public void afficherPopup() { this.show(); } @Override public void cacherPopup() { this.hide(); } /** * {@inheritDoc} */ @Override public HasClickHandlers getBtnAnnuler() { return btnAnnuler; } }