Rev 1249 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.publication;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.composants.InfoLogger;import org.tela_botanica.client.i18n.Constantes;import org.tela_botanica.client.images.Images;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Utilisateur;import org.tela_botanica.client.modeles.publication.Publication;import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;import org.tela_botanica.client.modeles.publication.PublicationListe;import org.tela_botanica.client.modeles.structure.StructureListe;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.vues.BarrePaginationVue;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.Style.SortDir;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.ButtonEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.event.SelectionListener;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.widget.ContentPanel;import com.extjs.gxt.ui.client.widget.Info;import com.extjs.gxt.ui.client.widget.button.Button;import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;import com.extjs.gxt.ui.client.widget.grid.ColumnData;import com.extjs.gxt.ui.client.widget.grid.ColumnModel;import com.extjs.gxt.ui.client.widget.grid.Grid;import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;import com.extjs.gxt.ui.client.widget.layout.FitLayout;import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;import com.google.gwt.core.client.GWT;import com.google.gwt.user.client.Window;public class PublicationListeVue extends ContentPanel implements Rafraichissable {private Mediateur mediateur = null;private Constantes i18nC = null;private Grid<Publication> grille = null;private ListStore<Publication> store = null;private ColumnModel modeleDesColonnes = null;private Button ajouter;private Button modifier;private Button supprimer;private BarrePaginationVue pagination = null;public PublicationListeVue(Mediateur mediateurCourant) {mediateur = mediateurCourant;i18nC = Mediateur.i18nC;setLayout(new FitLayout());setHeading(i18nC.menuPublication());// Gestion de la barre d'outilToolBar toolBar = new ToolBar();ajouter = new Button(i18nC.ajouter());ajouter.setIcon(Images.ICONES.ajouter());ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent be) {mediateur.clicAjouterPublication();}});toolBar.add(ajouter);modifier = new Button(i18nC.modifier());modifier.setIcon(Images.ICONES.formModifier());modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent be) {mediateur.clicModifierPublication(grille.getSelectionModel().getSelectedItems());}});toolBar.add(modifier);supprimer = new Button(i18nC.supprimer());supprimer.setIcon(Images.ICONES.supprimer());supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent be) {mediateur.clicSupprimerPublication(grille.getSelectionModel().getSelectedItems());}});toolBar.add(supprimer);setTopComponent(toolBar);// Gestion de la grilleList<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la listecolonnes.add(new ColumnConfig("fmt_auteur", i18nC.publicationAuteurs(), 200));colonnes.add(new ColumnConfig("titre", i18nC.publicationTitre(), 150));colonnes.add(new ColumnConfig("collection", i18nC.publicationRevueCollection(), 110));colonnes.add(creerColonneEditeur());colonnes.add(creerColonneAnneePublication());colonnes.add(new ColumnConfig("indication_nvt", i18nC.publicationNvt(), 35));colonnes.add(new ColumnConfig("fascicule", i18nC.publicationFascicule(), 35));colonnes.add(new ColumnConfig("truk_pages", i18nC.publicationPage(), 35));modeleDesColonnes = new ColumnModel(colonnes);GridSelectionModel<Publication> modeleDeSelection = new GridSelectionModel<Publication>();modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Publication>() {public void selectionChanged(SelectionChangedEvent<Publication> event) {Publication publication = (Publication) event.getSelectedItem();clicListe(publication);}});store = new ListStore<Publication>();store.sort("titre", SortDir.ASC);grille = new Grid<Publication>(store, modeleDesColonnes);grille.setWidth("100%");grille.setAutoExpandColumn("titre");grille.getView().setAutoFill(true);grille.getView().setForceFit(true);grille.setSelectionModel(modeleDeSelection);grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {public void handleEvent(BaseEvent be) {grille.getSelectionModel().select(0, false);}});grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){public void handleEvent(BaseEvent be) {modifier.fireEvent(Events.Select);}});add(grille);// Définition de la barre de paginationpagination = new BarrePaginationVue(new StructureListe(), mediateur);setBottomComponent(pagination);}private ColumnConfig creerColonneEditeur() {GridCellRenderer<Publication> editeurRendu = new GridCellRenderer<Publication>() {public String render(Publication model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Publication> store, Grid<Publication> grid) {String editeur = model.getNomEditeur();model.set("_editeur_", editeur);return editeur;}};ColumnConfig editeurColonne = new ColumnConfig("_editeur_", i18nC.publicationEditeur(), 135);editeurColonne.setRenderer(editeurRendu);return editeurColonne;}private ColumnConfig creerColonneAnneePublication() {GridCellRenderer<Publication> datePublicationRendu = new GridCellRenderer<Publication>() {public String render(Publication model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Publication> store, Grid<Publication> grid) {String annee = model.getAnneeParution();model.set("_annee_", annee);return annee;}};ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", i18nC.publicationDateParution(), 75);datePublicationColonne.setRenderer(datePublicationRendu);return datePublicationColonne;}private void clicListe(Publication publication) {if (publication != null && store.getCount() > 0) {mediateur.clicListePublication(publication);}}private void gererEtatActivationBouton() {int nbreElementDuMagazin = store.getCount();ajouter.enable();if (nbreElementDuMagazin <= 0) {supprimer.disable();modifier.disable();} else if (nbreElementDuMagazin > 0) {modifier.enable();if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {supprimer.enable();}}}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof PublicationListe) {PublicationListe publications = (PublicationListe) nouvellesDonnees;pagination.setlistePaginable(publications);pagination.rafraichir(publications.getPageTable());if (publications != null) {List<Publication> liste = publications.toList();store.removeAll();store.add(liste);mediateur.actualiserPanneauCentral();}} else if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;if (info.getType().equals("maj_utilisateur")) {gererEtatActivationBouton();} else if (info.getType().equals("suppression_publication")) {String message = info.toString();if (info.getDonnee(0) != null) {message = (String) info.getDonnee(0);}InfoLogger.display(i18nC.publicationTitreSuppression(), message);supprimerPublicationsSelectionnees();gererEtatActivationBouton();}} else {GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);}layout();}private void supprimerPublicationsSelectionnees() {List<Publication> publicationsSelectionnees = grille.getSelectionModel().getSelectedItems();Iterator<Publication> it = publicationsSelectionnees.iterator();while (it.hasNext()) {grille.getStore().remove(it.next());}layout(true);}}