Java tutorial
/* * Copyright 2013-2016 Emmanuel BRUN (contact@amapj.fr) * * This file is part of AmapJ. * * AmapJ is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * AmapJ 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with AmapJ. If not, see <http://www.gnu.org/licenses/>. * * */ package fr.amapj.view.views.gestioncontratsignes; import java.text.SimpleDateFormat; import java.util.List; import com.vaadin.data.Item; import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CheckBox; import com.vaadin.ui.Label; import com.vaadin.ui.Table; import com.vaadin.ui.Table.ColumnHeaderMode; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import fr.amapj.model.models.contrat.reel.EtatPaiement; import fr.amapj.model.models.param.ChoixOuiNon; import fr.amapj.model.models.param.paramecran.PEReceptionCheque; import fr.amapj.service.services.gestioncontratsigne.ContratSigneDTO; import fr.amapj.service.services.mescontrats.DatePaiementDTO; import fr.amapj.service.services.mespaiements.MesPaiementsService; import fr.amapj.service.services.parametres.ParametresService; import fr.amapj.view.engine.popup.okcancelpopup.OKCancelPopup; import fr.amapj.view.engine.tools.BaseUiTools; import fr.amapj.view.engine.tools.TableBuilder; import fr.amapj.view.engine.widgets.CurrencyTextFieldConverter; /** * Popup pour la rception des chques * */ @SuppressWarnings("serial") public class ReceptionChequeEditorPart extends OKCancelPopup { private SimpleDateFormat df = new SimpleDateFormat("MMMMM yyyy"); private ContratSigneDTO c; private List<DatePaiementDTO> paiements; private Table t; private PEReceptionCheque peConf; /** * */ public ReceptionChequeEditorPart(ContratSigneDTO c) { super(); this.c = c; } @Override protected void createContent(VerticalLayout contentLayout) { // paiements = new MesPaiementsService().getPaiementAReceptionner(c.idContrat); peConf = new ParametresService().getPEReceptionCheque(); // popupTitle = "Rception chques"; setWidth(60); // Premiere ligne de texte String msg = "<h2> Rception des chques de " + c.prenomUtilisateur + " " + c.nomUtilisateur + "</h2>"; Label lab = new Label(msg, ContentMode.HTML); contentLayout.addComponent(lab); if (paiements.size() == 0) { BaseUiTools.addStdLabel(contentLayout, "Il n'y a pas de chques rceptionner.", null); return; } // Construction de l'entete de la table TableBuilder builder = new TableBuilder(); builder.startHeader("tete", 70); builder.addHeaderBox("Date", 213); builder.addHeaderBox("Montant ", 163); builder.addHeaderBox("Cocher la case si le chque a t donn", 163); if (peConf.saisieCommentaire1 == ChoixOuiNon.OUI) { builder.addHeaderBox(peConf.libSaisieCommentaire1, 213); } if (peConf.saisieCommentaire2 == ChoixOuiNon.OUI) { builder.addHeaderBox(peConf.libSaisieCommentaire2, 213); } contentLayout.addComponent(builder.getHeader()); // Construction du contenu de la table t = new Table(); int nbCol = 3; t.addContainerProperty("date", Label.class, null); t.addContainerProperty("montant", Label.class, null); t.addContainerProperty("box", CheckBox.class, null); if (peConf.saisieCommentaire1 == ChoixOuiNon.OUI) { t.addContainerProperty("c1", TextField.class, null); nbCol++; } if (peConf.saisieCommentaire2 == ChoixOuiNon.OUI) { t.addContainerProperty("c2", TextField.class, null); nbCol++; } for (int i = 0; i < paiements.size(); i++) { DatePaiementDTO p = paiements.get(i); Object[] cells = new Object[nbCol]; int index = 0; Label l = builder.createLabel(df.format(p.datePaiement), 200); cells[index] = l; index++; l = builder.createLabel(new CurrencyTextFieldConverter().convertToString(p.montant), 150); cells[index] = l; index++; CheckBox cb = builder.createCheckBox(p.etatPaiement == EtatPaiement.AMAP, 150); cells[index] = cb; index++; if (peConf.saisieCommentaire1 == ChoixOuiNon.OUI) { TextField tf = builder.createTextField(p.commentaire1, 200); cells[index] = tf; index++; } if (peConf.saisieCommentaire2 == ChoixOuiNon.OUI) { TextField tf = builder.createTextField(p.commentaire2, 200); cells[index] = tf; index++; } t.addItem(cells, i); } t.setColumnHeaderMode(ColumnHeaderMode.HIDDEN); t.setSelectable(true); t.setSortEnabled(false); t.setPageLength(15); contentLayout.addComponent(t); } @Override protected void createButtonBar() { Button toutOK = addButton("J'ai bien reu tous les chques", e -> handleToutSelectionner()); setButtonAlignement(toutOK, Alignment.TOP_LEFT); super.createButtonBar(); } protected void handleToutSelectionner() { for (int i = 0; i < paiements.size(); i++) { Item item = t.getItem(i); CheckBox tf = (CheckBox) item.getItemProperty("box").getValue(); tf.setValue(Boolean.TRUE); } } public boolean performSauvegarder() { for (int i = 0; i < paiements.size(); i++) { DatePaiementDTO paiement = paiements.get(i); Item item = t.getItem(i); // case cocher CheckBox cb = (CheckBox) item.getItemProperty("box").getValue(); if (cb.getValue().booleanValue() == true) { paiement.etatPaiement = EtatPaiement.AMAP; } else { paiement.etatPaiement = EtatPaiement.A_FOURNIR; } // Commentaire 1 if (peConf.saisieCommentaire1 == ChoixOuiNon.OUI) { TextField tf = (TextField) item.getItemProperty("c1").getValue(); paiement.commentaire1 = tf.getValue(); } // Commentaire 2 if (peConf.saisieCommentaire2 == ChoixOuiNon.OUI) { TextField tf = (TextField) item.getItemProperty("c2").getValue(); paiement.commentaire2 = tf.getValue(); } } new MesPaiementsService().receptionCheque(paiements); return true; } }