New file |
0,0 → 1,277 |
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.ChampFiltreRecherche; |
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.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 Button importer; |
|
private ChampFiltreRecherche champFiltreRecherche = null; |
private BarrePaginationVue pagination = null; |
|
private int indexElementSelectionne = 0; |
private Publication publicationSelectionnee = null; |
|
public PublicationListeVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
i18nC = Mediateur.i18nC; |
|
setLayout(new FitLayout()); |
setHeaderVisible(false); |
|
// Gestion de la barre d'outil |
ToolBar 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(); |
} |
}); |
ajouter.setToolTip(i18nC.indicationCreerUneFiche()+" "+i18nC.publicationSingulier()); |
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()); |
} |
}); |
modifier.setToolTip(i18nC.indicationModifierUneFiche()); |
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()); |
} |
}); |
supprimer.setToolTip(i18nC.indicationSupprimerUneFiche()); |
toolBar.add(supprimer); |
|
setTopComponent(toolBar); |
|
// Gestion de la grille |
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste |
colonnes.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) { |
publicationSelectionnee = (Publication) event.getSelectedItem(); |
indexElementSelectionne = store.indexOf(publicationSelectionnee); |
clicListe(publicationSelectionnee); |
} |
}); |
|
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); |
|
PublicationListe publicationListe = new PublicationListe(); |
champFiltreRecherche = new ChampFiltreRecherche(mediateurCourant, toolBar, publicationListe); |
|
importer = new Button(i18nC.importer()); |
importer.setIcon(Images.ICONES.importerCsv()); |
importer.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent be) { |
if(mediateur.getUtilisateur().isIdentifie()) { |
mediateur.clicImporterPublication(PublicationListeVue.this); |
} else { |
Window.alert(i18nC.identificationNecessaire()); |
} |
} |
}); |
importer.setToolTip(i18nC.indicationImporterUnePubli()); |
toolBar.add(importer); |
|
// Définition de la barre de pagination |
pagination = new BarrePaginationVue(publicationListe, mediateur, champFiltreRecherche); |
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; |
|
champFiltreRecherche.setListePaginable(publications); |
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("publication_modifiee")) { |
if(publicationSelectionnee != null) { |
|
store.remove(indexElementSelectionne); |
publicationSelectionnee = null; |
} |
Publication publiModifee = (Publication)info.getDonnee(0); |
// au cas ou le bouton appliquer aurait été cliqué avant de valider |
store.remove(publiModifee); |
store.insert(publiModifee, indexElementSelectionne); |
publicationSelectionnee = publiModifee; |
int indexElementSelectionne = store.indexOf(publicationSelectionnee); |
grille.getSelectionModel().select(indexElementSelectionne, false); |
grille.getView().focusRow(indexElementSelectionne); |
clicListe(publicationSelectionnee); |
} else if (info.getType().equals("suppression_publication")) { |
InfoLogger.display(i18nC.publicationTitreSuppression(), info.getMessages().toString()); |
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); |
} |
|
public void afficherDernierePage() { |
pagination.allerALaDernierePage(); |
} |
|
} |
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/publication/PublicationListeVue.java:r1136-1368 |
Merged /trunk/src/org/tela_botanica/client/vues/publication/PublicationListeVue.java:r11-934,1209-1382 |
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/vues/publication/PublicationListeVue.java:r1383-1511 |