Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 103 → Rev 106

/trunk/src/org/tela_botanica/client/vues/PublicationListePanneauVue.java
New file
0,0 → 1,123
package org.tela_botanica.client.vues;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.binder.TableBinder;
import com.extjs.gxt.ui.client.event.ComponentEvent;
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.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
 
public class PublicationListePanneauVue extends ContentPanel implements Rafraichissable {
 
private Mediateur coelMediateur = null ;
private Table table = null;
private ListStore<Publication> store = null;
private TableBinder<Publication> binder = null;
 
public PublicationListePanneauVue() {
coelMediateur = Registry.get(RegistreId.MEDIATEUR);
ToolBar toolBar = new ToolBar();
TextToolItem ajouter = new TextToolItem("Ajouter");
ajouter.setIconStyle(ComposantClass.ICONE_AJOUTER);
ajouter.addSelectionListener(new SelectionListener<ComponentEvent>() {
public void componentSelected(ComponentEvent ce) {
coelMediateur.clicAjouterPublication();
}
});
toolBar.add(ajouter);
 
TextToolItem modifier = new TextToolItem("Modifier");
modifier.setIconStyle(ComposantClass.ICONE_MODIFIER);
toolBar.add(modifier);
TextToolItem supprimer = new TextToolItem("Supprimer");
supprimer.setIconStyle(ComposantClass.ICONE_SUPPRIMER);
toolBar.add(supprimer);
 
setTopComponent(toolBar);
 
List<TableColumn> columns = new ArrayList<TableColumn>();
// ATTENTION : les noms des colonnes doivent correspondrent aux noms variables de la classe utilisée dans la liste
columns.add(new TableColumn("fmt_auteur", "Auteur", .3f));
columns.add(new TableColumn("titre", "Titre", .7f));
TableColumnModel cm = new TableColumnModel(columns);
 
table = new Table(cm);
table.setSelectionMode(SelectionMode.MULTI);
table.setBorders(false);
 
add(table);
 
store = new ListStore<Publication>();
 
binder = new TableBinder<Publication>(table, store);
binder.setAutoSelect(true);
binder.addSelectionChangedListener(new SelectionChangedListener<Publication>() {
public void selectionChanged(SelectionChangedEvent<Publication> event) {
Publication m = (Publication) event.getSelectedItem();
clicListe(m);
}
});
 
setLayout(new FitLayout());
}
 
public ListStore<Publication> getStore() {
return store;
}
 
public TableBinder<Publication> getBinder() {
return binder;
}
 
private void clicListe(Publication publication) {
coelMediateur.clicListePublication(publication);
}
 
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof PublicationListe) {
PublicationListe listePublications = (PublicationListe) nouvelleDonnees;
setHeading("Publications");
 
List<Publication> liste = new ArrayList<Publication>();
for (Iterator<String> it = listePublications.keySet().iterator(); it.hasNext();) {
liste.add(listePublications.get(it.next()));
}
store.removeAll();
store.add((List<Publication>) liste);
// Test pour savoir si la liste contient des éléments
if (listePublications.size() > 0) {
binder.setSelection((Publication) listePublications.get(0));
}
}
}
}
/trunk/src/org/tela_botanica/client/vues/PublicationDetailPanneauVue.java
New file
0,0 → 1,90
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
 
public class PublicationDetailPanneauVue extends ContentPanel implements Rafraichissable {
private ContentPanel content;
private Html header;
private String enteteHTML = "<div class='coel-detail'><h1>{0}</h1><h2>{1}</h2><h2>{2}</h2></div>";
private String contenuHTML = "<div style='padding: 12px;'><h2>Détails de la publication</h2><span style='font-weight:bold;'>Nom de la revue :</span> {0}<br /><span style='font-weight:bold;'>Editeur :</span> {1}<br /><span style='font-weight:bold;'>Année :</span> {2}<br /><span style='font-weight:bold;'>Tome :</span> {3}<br /><span style='font-weight:bold;'>Fascicule :</span> {4}<br /><span style='font-weight:bold;'>Pages :</span> {5}</div>";
private String publicationNom = null;
private String publicationAuteur = null;
private String publicationDateParution = null;
 
public PublicationDetailPanneauVue() {
Registry.register(RegistreId.PANNEAU_PUBLICATION_DETAIL, this);
setHeaderVisible(false);
setLayout(new FitLayout());
 
content = new ContentPanel();
content.setBodyBorder(false);
content.setHeaderVisible(false);
content.setScrollMode(Scroll.AUTO);
 
header = new Html();
header.setStyleName("coel-detail");
content.setTopComponent(header);
 
add(content);
}
 
public void afficherDetailPublication(Publication publication) {
if (publication != null) {
content.removeAll();
publicationNom = publication.getTitre();
publicationAuteur = publication.getAuteur();
publicationDateParution = publication.getDateParution();
 
Params enteteParams = new Params();
enteteParams.add(publicationNom);
enteteParams.add(publicationAuteur);
enteteParams.add(publicationDateParution);
 
String eHtml = Format.substitute(enteteHTML, enteteParams);
header.getElement().setInnerHTML(eHtml);
 
Params contenuParams = new Params();
contenuParams.add(publication.getCollection());
contenuParams.add(publication.getEditeur());
contenuParams.add(publication.getDateParution());
contenuParams.add(publication.getIndicationNvt());
contenuParams.add(publication.getFascicule());
contenuParams.add(publication.getPages());
String cHtml = Format.substitute(contenuHTML, contenuParams);
content.addText(cHtml);
 
layout();
} else {
header.setHtml("");
content.removeAll();
}
}
 
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof Publication) {
afficherDetailPublication((Publication) nouvelleDonnees);
} else if (nouvelleDonnees instanceof PublicationListe) {
PublicationListe listePublication = (PublicationListe) nouvelleDonnees;
// Test pour savoir si la liste contient des éléments
if (listePublication.size() == 0) {
afficherDetailPublication(null);
}
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/PublicationVue.java
New file
0,0 → 1,52
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.StructureListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.google.gwt.user.client.Window;
 
public class PublicationVue extends LayoutContainer implements Rafraichissable {
 
private PublicationListePanneauVue panneauPublicationListe;
private PublicationDetailPanneauVue panneauPublicationDetail;
public PublicationVue() {
BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
setLayout(layout);
 
panneauPublicationListe = new PublicationListePanneauVue();
this.add(panneauPublicationListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauPublicationDetail = new PublicationDetailPanneauVue();
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
southData.setSplit(true);
southData.setMargins(new Margins(5, 0, 0, 0));
this.add(panneauPublicationDetail, southData);
}
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof PublicationListe) {
remplirListe((PublicationListe) nouvelleDonnees);
} else {
Window.alert("Problème!");
}
}
private void remplirListe(PublicationListe listePublication) {
LayoutContainer panneauCentre = (LayoutContainer) Registry.get(RegistreId.PANNEAU_CENTRE);
panneauPublicationListe.rafraichir(listePublication);
panneauPublicationDetail.rafraichir(listePublication);
panneauCentre.layout();
}
 
}
/trunk/src/org/tela_botanica/client/modeles/PublicationListeAsyncDao.java
New file
0,0 → 1,65
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
 
import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class PublicationListeAsyncDao {
 
private PublicationListe publications = null;
private Rafraichissable rafraichissement = null;
public PublicationListeAsyncDao(Rafraichissable r) {
rafraichissement = r ;
}
 
public void obtenirListePublication() {
// Demande de toutes les structures
String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url+"CoelPublicationListe/");
 
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
final JSONValue responseValue = JSONParser.parse(response.getText());
// Si la requête est un succès, reception d'un tableau
if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
// Transformation du tableau JSON réponse en ListeInstitution
publications = new PublicationListe(reponse);
// et on met à jour le demandeur des données
rafraichissement.rafraichir(publications);
}
else
{
publications = new PublicationListe(0);
rafraichissement.rafraichir(publications);
}
 
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
 
}
/trunk/src/org/tela_botanica/client/modeles/Publication.java
New file
0,0 → 1,91
package org.tela_botanica.client.modeles;
 
import java.util.Iterator;
import java.util.Set;
 
import com.google.gwt.json.client.JSONObject;
 
public class Publication extends aDonnee {
 
/**
* Constructeur vide
*
*/
public Publication() {
}
/**
* Constructeur avec un objet JSON
*
* @param image
*/
public Publication(JSONObject institution) {
// l'objet JSON est une table de hachage
Set<String> im = institution.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^cpu_", "");
if (institution.get(cle).isString() != null) {
String valeur = institution.get(cle).isString().stringValue();
this.set(cleObjet, valeur);
} else {
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = " ";
this.set(cleObjet, valeur);
}
}
}
public String getId() {
return (String) renvoyerValeurCorrecte("id_publication");
}
public String getProjet() {
return (String) renvoyerValeurCorrecte("projet");
}
public String getNomComplet() {
return (String) renvoyerValeurCorrecte("fmt_nom_complet");
}
public String getURI() {
return (String) renvoyerValeurCorrecte("uri");
}
 
public String getAuteur() {
return (String) renvoyerValeurCorrecte("fmt_auteur");
}
 
public String getCollection() {
return (String) renvoyerValeurCorrecte("collection");
}
public String getTitre() {
return (String) renvoyerValeurCorrecte("titre");
}
 
public String getEditeur() {
return (String) renvoyerValeurCorrecte("ce_truk_editeur");
}
 
public String getDateParution() {
return (String) renvoyerValeurCorrecte("date_parution");
}
 
public String getIndicationNvt() {
return (String) renvoyerValeurCorrecte("indication_nvt");
}
public String getFascicule() {
return (String) renvoyerValeurCorrecte("fascicule");
}
public String getPages() {
return (String) renvoyerValeurCorrecte("truk_pages");
}
}
/trunk/src/org/tela_botanica/client/modeles/PublicationListe.java
New file
0,0 → 1,38
package org.tela_botanica.client.modeles;
 
import java.util.LinkedHashMap;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
 
public class PublicationListe extends LinkedHashMap<String, Publication> {
 
/**
*
*/
private static final long serialVersionUID = 2600314321196345072L;
 
public PublicationListe(int taille)
{
super(taille);
}
/**
* Constructeur pour une liste d'institutions
* @param dates
*/
public PublicationListe(JSONArray publications)
{
super(publications.size()) ;
final int taillemax = publications.size();
for (int i = 0; i < taillemax; i++) {
JSONObject publicationCourante = publications.get(i).isObject() ;
if (publicationCourante != null) {
Publication publication = new Publication(publicationCourante);
this.put(publication.getId(), publication);
}
}
}
}