Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 98 → Rev 99

/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java
224,7 → 224,7
// on initialise le volet qui contient les filtres
filtres.setWidth("15%");
filtres.setHeight(1000) ;
filtres.setHeight(700) ;
filtres.setTitleCollapse(true);
filtres.setCollapsible(true);
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
15,7 → 15,7
import org.tela_botanica.client.vues.ListeImageVue;
import org.tela_botanica.client.vues.MenuImageVue;
import org.tela_botanica.client.vues.MiniListeObservationVue;
import org.tela_botanica.client.vues.PanneauFiltresVues;
import org.tela_botanica.client.vues.PanneauFiltresImagesVues;
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
import org.tela_botanica.client.vues.ZoomImageVue;
 
104,7 → 104,7
/**
* panneau de filtrage
*/
private PanneauFiltresVues filtres = null;
private PanneauFiltresImagesVues filtres = null;
 
/**
* conteneur du panneau a onglets
268,7 → 268,7
// on gère la mise en page du panneau principal
 
// on crée le panneau des filtres
filtres = new PanneauFiltresVues(this);
filtres = new PanneauFiltresImagesVues(this);
filtres.setWidth("15%");
 
// le panneau à onglet qui contient les trois vues
666,7 → 666,26
obtenirMetadonnees(metadonneesIptcExif, imgNum);
obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), imgNum);
obtenirNote(metadonneesIptcExif.getNoteVue(), imgNum);
if(getMetadonneesIptcExif().getMiniListeObservation().getMode())
{
obtenirObservationsAssociees() ;
}
else
{
//TODO: réfléchir : que faire dans cas là ?
}
}
public void changerModeLiaison(boolean mode) {
if(mode) {
obtenirObservationsAssociees() ;
}
else {
obtenirMiniListeObservations(getMetadonneesIptcExif().getMiniListeObservation()) ;
}
}
 
/**
* Envoie une demande au modèle pour obtenir la note associée à une image
1216,7 → 1235,7
*
* @return le panneau contenant les filtres
*/
public PanneauFiltresVues getPanneauFiltres() {
public PanneauFiltresImagesVues getPanneauFiltres() {
return filtres;
}
 
1476,6 → 1495,7
 
public void donneesExterieures(Object nouvelleDonnees) {
// si on a reçu une liste d'observation
if(nouvelleDonnees instanceof ListeObservation)
{
if(getMetadonneesIptcExif().getMiniListeObservation().isCreated())
1484,6 → 1504,14
}
}
// si on a reçu une nouvelle pagination
if(nouvelleDonnees instanceof int[])
{
if(getMetadonneesIptcExif().getMiniListeObservation().isCreated())
{
//getMetadonneesIptcExif().getMiniListeObservation().getBarrePagination().rafraichir(nouvelleDonnees, false) ;
}
}
}
 
public void afficherAide() {
1502,11 → 1530,16
}
 
public void afficherObservationsAssociees() {
public void obtenirObservationsAssociees() {
String ids[] = getVueSelectionnee().getIdSelectionnees() ;
getIModele().obtenirLiaisonObservations(this,ids[0]) ;
}
public void rafraichirMiniListeObservations(Object data) {
getMetadonneesIptcExif().getMiniListeObservation().rafraichir(data, false) ;
}
 
}
/trunk/src/org/tela_botanica/client/image/ImageModele.java
12,6 → 12,7
import org.tela_botanica.client.modeles.LienImageAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeImageCarnet;
import org.tela_botanica.client.modeles.ListeObservation;
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
import org.tela_botanica.client.modeles.NombreImageAsynchroneDAO;
 
499,6 → 500,11
obtenirPhotoGalerie(this) ;
}
if(nouvelleDonnees instanceof ListeObservation) {
getIMediateur().rafraichirMiniListeObservations(nouvelleDonnees) ;
}
}
 
/**
/trunk/src/org/tela_botanica/client/vues/PanneauFiltresVues.java
File deleted
/trunk/src/org/tela_botanica/client/vues/ZoomImageVue.java
16,6 → 16,7
import com.gwtext.client.dd.DropTargetConfig;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.ToolTip;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.grid.GridDragData;
import com.gwtext.client.widgets.layout.BorderLayout;
75,6 → 76,8
* Booleen d'initalisation du conteneur d'image
*/
private boolean conteneurInitialise = false;
private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour revenir à la vue précédente, utilisez la roulette ou les boutons fléchés pour faire défiler les images </div>") ;
 
/**
* Constructeur sans argument (privé car ne doit être utilisé)
164,6 → 167,8
 
// on ajoute les listeners
ajouterListeners();
tp.applyTo(image.getElement()) ;
 
}
 
/trunk/src/org/tela_botanica/client/vues/ArbreEntiteGeographiqueObservationFiltreVue.java
103,6 → 103,7
this.setBorder(false);
this.setCollapsible(true);
this.setAutoWidth(true);
this.setAutoScroll(true) ;
 
 
// on ajoute les listeners
/trunk/src/org/tela_botanica/client/vues/ImageGeneriqueVue.java
6,8 → 6,10
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.ToolTip;
import com.gwtext.client.widgets.Window.CloseAction;
 
/**
34,6 → 36,7
private com.gwtext.client.widgets.Window imgZoom = new com.gwtext.client.widgets.Window("Agrandissement") ;
private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour agrandir l'image </div>") ;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
69,7 → 72,9
};
tp.applyTo(image.getElement()) ;
this.setCls("x-image-gen") ;
image.setPixelSize(150, 150);
add(image);
/trunk/src/org/tela_botanica/client/vues/PanneauFiltresImagesVues.java
New file
0,0 → 1,144
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.image.ImageMediateur;
 
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.layout.VerticalLayout;
 
/**
* Panneau contenant les filtres qu'on peut appliquer aux images
*
* @author aurelien
*
*/
public class PanneauFiltresImagesVues extends Panel {
 
/**
* Le médiateur associé
*/
private ImageMediateur iMediateur = null;
 
/**
* L'arbre pour la recherche par mots clés
*/
private ArbreMotsClesFiltreVue motsClesFiltres = null;
/**
* La barre de recherche par commentaires
*/
private BarreRechercheFiltreVue commFiltresVues = null;
 
/**
* Recherche par date
*/
private DateFiltreVue dateFiltreVues = null;
 
/**
* Recherche par contenu du tampon
*/
private SelectionFiltreVue selectionFiltreVue = null;
 
/**
* Bouton de validation
*/
private Button valider = null;
 
/**
* Construcuteur sans argument (privé car on ne doit pas l'utiliser)
*/
@SuppressWarnings("unused")
private PanneauFiltresImagesVues() {
super();
}
 
/**
* Constructeur avec arguments
*
* @param im
* le médiateur à associer
*/
public PanneauFiltresImagesVues(ImageMediateur im) {
super("Rechercher des images");
iMediateur = im;
 
this.setCollapsible(true);
setLayout(new VerticalLayout());
 
commFiltresVues = new BarreRechercheFiltreVue(im);
add(commFiltresVues);
 
dateFiltreVues = new DateFiltreVue(im);
add(dateFiltreVues);
 
selectionFiltreVue = new SelectionFiltreVue(im);
add(selectionFiltreVue);
 
motsClesFiltres = new ArbreMotsClesFiltreVue(im);
add(motsClesFiltres);
 
Panel panelValidation = new Panel();
valider = new Button("Rechercher");
panelValidation.add(valider);
panelValidation.setBorder(false);
add(panelValidation);
 
valider.addListener(new ButtonListenerAdapter() {
 
public void onClick(Button button, EventObject e) {
 
iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
 
}
 
});
}
 
/**
* Accesseur pour le filtre des mots clés
*
* @return le filtre des mots clés
*/
public ArbreMotsClesFiltreVue getMotsClesFiltre() {
return motsClesFiltres;
}
 
/**
* Accesseur pour le filtre par commentaire
*
* @return le filtre des commentaires
*/
public BarreRechercheFiltreVue getBarreRecherche() {
return commFiltresVues;
}
 
/**
* Renvoie un booléen indiquant si un des filtres a été modifié
*
* @return true sur un des filtres est modifié, false sinon
*/
public boolean renvoyerEtatFiltre() {
 
return (motsClesFiltres.renvoyerEtatFiltre()
|| commFiltresVues.renvoyerEtatFiltre()
|| dateFiltreVues.renvoyerEtatFiltre()
|| selectionFiltreVue.renvoyerEtatFiltre());
}
 
/**
* Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
* "valeur"
*
* @return un tableau contenant les noms et les valeurs à filtrer
*/
public String[][] renvoyerValeursAFiltrer() {
String[][] filtres = { motsClesFiltres.renvoyerValeursAFiltrer(),
commFiltresVues.renvoyerValeursAFiltrer(),
dateFiltreVues.renvoyerValeursAFiltrer(),
selectionFiltreVue.renvoyerValeursAFiltrer() };
return filtres;
}
 
}
Property changes:
Added: svn:mergeinfo
/trunk/src/org/tela_botanica/client/vues/InformationRepartitionVue.java
9,6 → 9,7
import com.google.gwt.user.client.ui.Image;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.ToolTip;
 
/**
* Un panneau affichant la repartition d'une plante
32,7 → 33,10
private String urlImage = "" ;
private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour agrandir l'image </div>") ;
com.gwtext.client.widgets.Window imgZoom = new com.gwtext.client.widgets.Window("Agrandissement") ;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
65,10 → 69,13
// on notifie le médiateur
agrandirImage() ;
}
}
};
tp.applyTo(image.getElement()) ;
image.sinkEvents(Event.ONDBLCLICK);
this.setCls("x-image-info-rep") ;
/trunk/src/org/tela_botanica/client/vues/MenuImageVue.java
127,7 → 127,7
}
if (item.equals(voirObs)) {
getIMediateur().afficherObservationsAssociees() ;
getIMediateur().obtenirObservationsAssociees() ;
}
 
// enfin, on cache le menu
/trunk/src/org/tela_botanica/client/vues/MiniListeObservationVue.java
9,6 → 9,7
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.SimpleStore;
import com.gwtext.client.data.Store;
import com.gwtext.client.dd.DragSource;
15,10 → 16,13
import com.gwtext.client.dd.DropTarget;
import com.gwtext.client.dd.DropTargetConfig;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
import com.gwtext.client.widgets.event.ContainerListener;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
import com.gwtext.client.widgets.grid.ColumnConfig;
import com.gwtext.client.widgets.grid.ColumnModel;
import com.gwtext.client.widgets.grid.GridDragData;
26,6 → 30,8
import com.gwtext.client.widgets.grid.event.GridListener;
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.dd.DragData;
 
/**
52,7 → 58,21
private SimpleStore store = null ;
//private BarrePaginationVue pgBar = new BarrePaginationVue(iMediateur) ;
private Toolbar bt = new Toolbar() ;
/**
* Combobox permettant de selectionner le mode
* modification ou bien création
*/
private ComboBox selecteurMode = new ComboBox();
Store storeMode = null ;
 
private boolean liaison;
/**
* Constructeur avec arguments
* @param im le médiateur à associer à la vue
*/
85,6 → 105,36
store.load();
setStore(store) ;
//setBottomToolbar(pgBar) ;
Object[][] mode = {{"toutes les observations",false} , {"observations liées", true} };
storeMode = new SimpleStore(new String[] { "nom_mode", "mode" },
mode);
storeMode.load();
selecteurMode.setStore(storeMode);
selecteurMode.setDisplayField("nom_mode") ;
selecteurMode.setLabel("mode ") ;
selecteurMode.setForceSelection(true) ;
selecteurMode.setValue("toutes les observations") ;
selecteurMode.setEditable(false) ;
selecteurMode.setCls("x-selec-liaison") ;
bt = new Toolbar() ;
bt.addField(selecteurMode) ;
setTopToolbar(bt) ;
selecteurMode.addListener(new ComboBoxListenerAdapter() {
 
public void onSelect(ComboBox comboBox, Record record, int index) {
// et on met la valeur à jour dans la combobox
comboBox.setValue(record.getAsString("nom_mode"));
setModification(record.getAsString("mode")) ;
}
 
});
setAutoScroll(true) ;
// on configure le drag 'n drop
configDragAndDrop() ;
207,6 → 257,8
}
deMasquerChargement() ;
}
private void obtenirMiniListeObservations()
229,6 → 281,61
return store ;
}
/*public BarrePaginationVue getBarrePagination()
{
return pgBar ;
}*/
private void setModification(String mode)
{
if(mode.equals("true")) {
 
liaison = true ;
selecteurMode.removeClass("x-selec-consult") ;
selecteurMode.setCls("x-selec-liaison") ;
}
else
{
liaison = false ;
selecteurMode.removeClass("x-selec-liaison") ;
selecteurMode.setCls("x-selec-consult") ;
}
masquerChargement() ;
store.removeAll() ;
iMediateur.changerModeLiaison(liaison) ;
}
public boolean getMode() {
return liaison ;
}
/**
* Recherche l'élement actuellement affiché et affiche son message de chargement
*/
public void masquerChargement()
{
ExtElement masked = Ext.get(getId()) ;
 
if (masked!=null) {
masked.mask("Chargement") ;
}
}
/**
* Recherche l'élement actuellement affiché et affiche son message de chargement
*/
public void deMasquerChargement()
{
ExtElement masked = Ext.get(getId()) ;
 
if (masked!=null) {
masked.unmask() ;
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/ArbreDateObservationFiltreVue.java
103,11 → 103,13
 
this.setPaddings(5);
 
this.setBorder(false);
this.setCollapsible(true);
this.setAutoWidth(true);
if (GWT.isScript()) {
setAutoScroll(true);
}
 
 
// on ajoute les listeners
ajouterListenersPanel();
estInstancie = false;
129,10 → 131,6
arbreDonneesDates.setId("x-view-tree-filter-date");
arbreDonneesDates.setAutoWidth(false);
if (GWT.isScript()) {
arbreDonneesDates.setAutoScroll(true);
}
arbreDonneesDates.setBorder(false);
 
// on crée une racine pour l'arbre
/trunk/src/org/tela_botanica/client/vues/PanneauFiltresObservationVues.java
7,9 → 7,13
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ContainerListener;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.PanelListener;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.layout.AccordionLayout;
import com.gwtext.client.widgets.layout.AnchorLayout;
import com.gwtext.client.widgets.layout.AnchorLayoutData;
import com.gwtext.client.widgets.layout.FitLayout;
import com.gwtext.client.widgets.layout.VerticalLayout;
 
/**
* Panneau contenant les filtres qu'on peut appliquer aux images
60,13 → 64,17
observationMediateur = obs;
this.setCollapsible(true);
setLayout(new AnchorLayout());
this.setLayout(new AnchorLayout()) ;
arbreEntiteGeographiqueObservationFiltreVue = new ArbreEntiteGeographiqueObservationFiltreVue(observationMediateur);
add(arbreEntiteGeographiqueObservationFiltreVue,new AnchorLayoutData("50%"));
add(arbreEntiteGeographiqueObservationFiltreVue);
arbreEntiteGeographiqueObservationFiltreVue.setHeight(350) ;
arbreEntiteGeographiqueObservationFiltreVue.setWidth("100%") ;
arbreDateObservationFiltreVue = new ArbreDateObservationFiltreVue(observationMediateur) ;
add(arbreDateObservationFiltreVue,new AnchorLayoutData("50%")) ;
arbreDateObservationFiltreVue.setHeight(350) ;
add(arbreDateObservationFiltreVue);
arbreDateObservationFiltreVue.setWidth("100%") ;
}
 
/trunk/src/org/tela_botanica/client/modeles/LienImageAsynchroneDAO.java
1,5 → 1,6
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.Util;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationModele;
44,7 → 45,9
public void obtenirLiaisonsImagesObservations(Rafraichissable r,String id)
{
String paramGet = "&coi_ce_image="+id ;
 
raf = r ;
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele
.getConfig().getServiceBaseUrl()
60,8 → 63,57
public void onResponseReceived(Request request,
Response response) {
Window.alert(response.getText()) ;
final ListeObservation observationData ;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse=null;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONArray observation;
final int taillemax = reponse.size();
observationData = new ListeObservation(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((observation=reponse.get(i).isArray()) != null) {
String transmis=((JSONString) observation.get(13)).stringValue();
String identifiantLocalite=((JSONString) observation.get(14)).toString();
String nomSaisi=Util.toCelString(((JSONString) observation.get(0)).toString());
String nomRetenu=Util.toCelString(((JSONString) observation.get(2)).toString());
String numeroNomenclaturalSaisi=((JSONString) observation.get(1)).stringValue();
String numeroNomenclaturalRetenu=((JSONString) observation.get(3)).stringValue();
String numeroTaxonomique=((JSONString) observation.get(4)).stringValue();
String famille=Util.toCelString(((JSONString) observation .get(5)).toString());
String localite=Util.toCelString(((JSONString) observation .get(6)).toString());
String lieudit=Util.toCelString(((JSONString) observation .get(9)).toString());
String station=Util.toCelString(((JSONString) observation .get(10)).toString());
String milieu=Util.toCelString(((JSONString) observation .get(11)).toString());
String commentaire=Util.toCelString(((JSONString) observation .get(12)).toString());
String date=((JSONString) observation .get(8)).stringValue();
String numeroOrdre=((JSONString) observation.get(7)).stringValue();
Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre);
observationData.put(obs.getNumeroOrdre(),obs);
}
}
} else {
observationData = new ListeObservation(0) ;
}
// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
// le premier à les recevoir
// TODO : ce n'est pas ici qu'on devrait le decider ..
raf.rafraichir(observationData,true);
}
});