Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Regard whitespace Rev 31 → Rev 30

/trunk/src/org/tela_botanica/client/vues/pageToolBarVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/BarreOutilsVue.java
12,13 → 12,6
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.menu.Menu;
 
 
/**
* Barre d'outils contenant le menu de gestion des images (accessible aussi par un clic droit dans la galerie)
* et d'autres menus et boutons utiles
* @author aurelien
*
*/
public class BarreOutilsVue extends Toolbar {
ToolbarMenuButton images = null ;
25,18 → 18,6
ImageMediateur iMediateur = null ;
MenuImageVue imageMenu = null ;
 
/**
* Constructeur sans argument (ne doit pas être utilisé donc privé)
*/
private BarreOutilsVue()
{
super() ;
}
/**
* Constructeur avec paramètres
* @param im
*/
public BarreOutilsVue(ImageMediateur im) {
super() ;
44,7 → 25,7
iMediateur = im ;
imageMenu = new MenuImageVue(im) ;
images = new ToolbarMenuButton("Fichiers",imageMenu) ;
images = new ToolbarMenuButton("Images",imageMenu) ;
this.addButton(images) ;
}
/trunk/src/org/tela_botanica/client/vues/GalerieImageVue.java
1,13 → 1,10
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.image.ImageMediateur;
import com.gwtext.client.core.Ext;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.VueListable;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Label;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.core.XTemplate;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
18,70 → 15,42
import com.gwtext.client.util.Format;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.DataView;
import com.gwtext.client.widgets.PagingToolbar;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.ToolTip;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.ToolbarTextItem;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.NumberField;
import com.gwtext.client.widgets.form.event.FieldListenerAdapter;
 
/**
* Galerie d'images miniatures
* Avec barre de pagination
*
* @author aurelien
*/
public class GalerieImageVue extends Panel implements Rafraichissable,
VueListable {
 
/**
* instance du médiateur
*/
// instance du médiateur
private ImageMediateur iMediateur = null;
/**
* Dataview, littéralement "vue de données" qui permet de définir la manière d'afficher les données
*/
private DataView dView = null;
/**
* Dataview, littéralement "vue de données" qui permet de définir la manière d'afficher les données
*/
private Store st = null;
/**
* Barre de pagination gérant l'affichage d'un nombre donné d'élements par page et la navigation entre eux
*/
private pageToolBarVue pt = null ;
/**
* Booleen indiquant si la galerie est instanciée ou pas
*/
private boolean estInstancie = false ;
 
/**
* Constructeur sans argument, privé car ne doit pas être utilisé
*/
private GalerieImageVue()
{
super() ;
}
/**
* Constructeur avec argument
* @param im le médiateur avec lequel la vue va communiquer
*/
public GalerieImageVue(ImageMediateur im) {
super("Galerie");
iMediateur = im;
// on ajoute des listeners au composant tout entier
this.addListener(new ContainerListenerAdapter() {
 
// pour gagner du temps on n'instancie la vue en elle même que lors du premier affichage (lazy rendering)
public void onHide(Component component) {
// TODO Auto-generated method stub
 
}
 
public void onRender(Component component) {
// TODO Auto-generated method stub
 
}
 
public void onShow(Component component) {
 
if (!estInstancie) {
if (dView == null) {
initialiser();
}
}
88,15 → 57,8
 
});
// et on ajoute la tool bar
pt = new pageToolBarVue(im) ;
this.setBottomToolbar(pt) ;
 
}
 
/**
* Ajoute tous les listeners nécessaires à l'intercation utilisateur avec la vue de données
*/
public void ajouterListenersDataView() {
 
// ajout de listeners pour la gestion de la selection
103,46 → 65,40
// dans la galerie
dView.addListener(new DataViewListenerAdapter() {
// gestion du clic sur une image
public void onClick(DataView source, int index, Element node,
EventObject e) {
// on en notifie le médiateur
getIMediateur().clicGalerieImage(index, node, e);
 
}
 
// gestion du clic droit
public void onContainerClick(DataView source, EventObject e) {
// TODO: appeler le mediateur
 
}
 
public void onContextMenu(DataView source, int index, Element node,
EventObject e) {
 
// on stoppe l'évenement
e.stopEvent();
// et on notifie le médiateur
getIMediateur().montrerContextMenu(e);
 
}
 
// gestion du double clic
public void onDblClick(DataView source, int index, Element node,
EventObject e) {
 
// on notife le mediateur
// TODO: appeler le mediateur
getIMediateur().clicGalerieImage(index, node, e);
}
 
// gestion des actions en fonction de la selection
public void onSelectionChange(DataView view, Element[] selections) {
 
// s'il n'y a aucun élement sélectionné
if (selections.length <= 0) {
// on en notifie le médiateur
getIMediateur().aucuneSelection();
} else {
// sinon on notifie le médiateur
getIMediateur().selection();
// et on lui demande de synchroniser la séléction avec les autres vues
getIMediateur().synchroniserSelection("galerie");
}
}
150,18 → 106,10
});
}
 
/**
* Accesseur pour la dataview
* @return la dataview
*/
public DataView getDView() {
return dView;
}
 
/**
* Renvoie les ids des images sélectionnées
* @return un tableau de String contenant les identifiants des images sélectionnées
*/
public String[] getIdSelectionnees() {
Record[] selection = getDView().getSelectedRecords();
int taille = selection.length;
175,37 → 123,16
return id_selection;
}
 
/**
* Accesseur pour le médiateur
* @return le mdéiateur associé à la vue
*/
public ImageMediateur getIMediateur() {
return iMediateur;
}
 
/**
* Accesseur pour le store
* @return le store associée à la vue
*/
public Store getSt() {
return st;
}
/**
* Accesseur pour la toolbar
* @return la toolbar associée à la vue
*/
public pageToolBarVue getToolBarVue()
{
return pt ;
}
 
/**
* Fonction d'initialisation du contenu (appelée lors du premier affichage de la liste)
*/
// instantiation paresseuse
public void initialiser() {
// Preparation de la dataview et du template
// le template va créer une div contenant une image
// pour chacune des photos
216,7 → 143,6
"<div class='thumb'><img src='{url_image_M}' title='{num_image}'></div>",
"<span>{nom}</span></div>", "</tpl>",
"<div class='x-clear'></div>" });
// pour des raisons de performances on compile le template en une fonction
template.compile();
 
// la dataview affichera les images en accord avec le template
251,7 → 177,6
st = new Store(rd);
dView.setStore(st);
 
this.getDView().setLoadingText("chargement");
 
// ajouts de la gestion des evenements pour la dataview
259,52 → 184,28
 
this.add(dView);
// enfin on envoie une demande de données au médiateur
getIMediateur().obtenirPhotoGalerie(this);
// et on déclare le composant comme instancié
estInstancie = true ;
}
 
/**
* Méthode héritée de l'interface rafraichissable
*/
public void rafraichir(Object nouvelleDonnees,
boolean repandreRafraichissement) {
 
// si l'objet reçu est un store
if (nouvelleDonnees instanceof Store) {
st = (Store) nouvelleDonnees;
// on le charge
st.load();
// on l'affecte à la vue
dView.setStore(st);
// et on rafrachit la vue
dView.refresh();
}
 
// si le com)posant doit répandre le rafraichissement
if (repandreRafraichissement) {
// il en notifie le médiateur en lui donnant une copie des données
getIMediateur().synchroniserDonneesZoomListeGalerie(
nouvelleDonnees, this);
}
if(!estInstancie)
{
estInstancie = true ;
}
}
 
/**
* Sélectionne les images dans la galerie suivant les identifiants donnés en paramètres
* @param ids les identifiants des images à sélectionner
*/
public void selectionnerImages(int[] ids) {
 
getDView().select(ids);
 
}
}
/trunk/src/org/tela_botanica/client/vues/ListeImageVue.java
11,9 → 11,6
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.core.JsObject;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
23,7 → 20,6
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StoreMgr;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.util.JavaScriptObjectHelper;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
74,8 → 70,6
private Store st = null;
private ColumnConfig cl = null;
private pageToolBarVue bt = null ;
 
public ListeImageVue(ImageMediateur im) {
 
super();
84,14 → 78,11
 
this.iMediateur = im;
bt = new pageToolBarVue(im);
this.setBottomToolbar(bt) ;
 
numImage = new ColumnConfig("numéro", "num_image", 30, true);
numImage = new ColumnConfig("numéro", "num_image", 100, true);
datImage = new ColumnConfig("date", "dat_image", 120, true);
lieImage = new ColumnConfig("lieu", "lie_image", 120, true);
appImage = new ColumnConfig("appareil", "app_image", 200, true);
urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
urlImage = new ColumnConfig("Image", "url_image_S", 200, true,
new Renderer() {
 
public String render(Object value,
106,12 → 97,11
 
});
 
ColumnConfig[] cm = {numImage, urlImage, datImage, lieImage, appImage};
ColumnConfig[] cm = { numImage, datImage, lieImage, appImage, urlImage };
modeleColonnes = new ColumnModel(cm);
this.setColumnModel(modeleColonnes);
this.setAutoScroll(true);
this.setAutoWidth(true);
this.setEnableColumnResize(true);
 
// creation du store
FieldDef defNumImage = new IntegerFieldDef("num_image");
128,6 → 118,7
this.setStore(st);
this.getView().setAutoFill(true);
 
// this.setLoadMask(true) ;
this.setLoadMask("chargement");
 
ajouterListeners();
242,7 → 233,6
st = (Store) nouvelleDonnees;
st.load();
this.reconfigure(st, this.getColumnModel());
}
 
if (repandreRafraichissement) {
259,11 → 249,6
}
}
public pageToolBarVue getToolBarVue()
{
return bt ;
}
 
/**
* @param estInstancie
* the estInstancie to set