11,11 → 11,16 |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.dd.DragData; |
import com.gwtext.client.dd.DragSource; |
import com.gwtext.client.dd.DropTarget; |
import com.gwtext.client.dd.DropTargetConfig; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.event.ContainerListenerAdapter; |
import com.gwtext.client.widgets.grid.CellMetadata; |
import com.gwtext.client.widgets.grid.ColumnConfig; |
import com.gwtext.client.widgets.grid.ColumnModel; |
import com.gwtext.client.widgets.grid.GridDragData; |
import com.gwtext.client.widgets.grid.GridPanel; |
import com.gwtext.client.widgets.grid.Renderer; |
import com.gwtext.client.widgets.grid.RowSelectionModel; |
34,134 → 39,144 |
/** |
* Le médiateur associé à la vue |
*/ |
private ImageMediateur iMediateur = null; |
|
private ImageMediateur iMediateur = null; |
|
/** |
* Config de colonne |
*/ |
private ColumnConfig numImage; |
private ColumnConfig numImage; |
/** |
* Config de colonne |
*/ |
private ColumnConfig urlImage; |
private ColumnConfig urlImage; |
/** |
* Config de colonne |
*/ |
private ColumnConfig lieImage; |
private ColumnConfig lieImage; |
/** |
* Config de colonne |
*/ |
private ColumnConfig datImage; |
private ColumnConfig datImage; |
/** |
* Config de colonne |
*/ |
private ColumnConfig appImage; |
private ColumnConfig appImage; |
/** |
* Config de colonne |
*/ |
private ColumnConfig noteImage; |
private ColumnConfig noteImage; |
/** |
* Modele de colonnes |
*/ |
private ColumnModel modeleColonnes; |
private ColumnModel modeleColonnes; |
|
/** |
* Booleen d'instanciation |
*/ |
private boolean estInstancie = false; |
private boolean estInstancie = false; |
|
/** |
* Store qui contient les données à afficher |
*/ |
private Store st = null; |
private Store st = null; |
/** |
* Configuration des colonnes du store |
*/ |
private ColumnConfig cl = null; |
|
private ColumnConfig cl = null; |
|
/** |
* Barre de pagination |
*/ |
private pageToolBarVue bt = null ; |
private pageToolBarVue bt = null; |
|
/** |
* Constructeur sans arguments (privé car ne doit pas être utilisé) |
*/ |
private ListeImageVue() |
{ |
super() ; |
private ListeImageVue() { |
super(); |
} |
|
|
/** |
* Constructeur avec argument |
* @param im le médiateur à associer |
* |
* @param im |
* le médiateur à associer |
*/ |
public ListeImageVue(ImageMediateur im) { |
|
new ListeImageVue() ; |
new ListeImageVue(); |
|
this.setId("listeImageGrid"); |
// on associe le médiateur |
this.iMediateur = im; |
|
|
// on place la barre de pagination |
bt = new pageToolBarVue(iMediateur); |
setBottomToolbar(bt) ; |
bt = new pageToolBarVue(iMediateur); |
setBottomToolbar(bt); |
|
// on construit le modèle de colonnes |
numImage = new ColumnConfig("numéro", "num_image", 30, true, new Renderer() { |
numImage = new ColumnConfig("numéro", "num_image", 30, true, |
new Renderer() { |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
String ImgNum = record.getAsString("num_image"); |
return "<div class=\"centered-list\">"+ ImgNum +"</div>"; |
} |
|
}) ; |
|
datImage = new ColumnConfig("date", "dat_image", 120, true, new Renderer() { |
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
String ImgDat = record.getAsString("dat_image"); |
if(ImgDat == null) |
{ |
ImgDat = " " ; |
} |
return "<div class=\"centered-list\">"+ ImgDat +"</div>"; |
} |
|
}) ; |
lieImage = new ColumnConfig("lieu", "lie_image", 120, true, new Renderer() { |
String ImgNum = record.getAsString("num_image"); |
return "<div class=\"centered-list\">" + ImgNum |
+ "</div>"; |
} |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
String ImgLie = record.getAsString("lie_image"); |
if(ImgLie == null) |
{ |
ImgLie = " " ; |
} |
return "<div class=\"centered-list\">"+ ImgLie +"</div>"; |
} |
|
}) ; |
appImage = new ColumnConfig("appareil", "app_image", 120, true, new Renderer() { |
}); |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
String ImgApp = record.getAsString("app_image"); |
if(ImgApp == null) |
{ |
ImgApp = " " ; |
} |
return "<div class=\"centered-list\">"+ ImgApp +"</div>"; |
} |
|
}) ; |
datImage = new ColumnConfig("date", "dat_image", 120, true, |
new Renderer() { |
|
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
|
String ImgDat = record.getAsString("dat_image"); |
if (ImgDat == null) { |
ImgDat = " "; |
} |
return "<div class=\"centered-list\">" + ImgDat |
+ "</div>"; |
} |
|
}); |
lieImage = new ColumnConfig("lieu", "lie_image", 120, true, |
new Renderer() { |
|
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
|
String ImgLie = record.getAsString("lie_image"); |
if (ImgLie == null) { |
ImgLie = " "; |
} |
return "<div class=\"centered-list\">" + ImgLie |
+ "</div>"; |
} |
|
}); |
appImage = new ColumnConfig("appareil", "app_image", 120, true, |
new Renderer() { |
|
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
|
String ImgApp = record.getAsString("app_image"); |
if (ImgApp == null) { |
ImgApp = " "; |
} |
return "<div class=\"centered-list\">" + ImgApp |
+ "</div>"; |
} |
|
}); |
// la colonne url possède une méthode de rendu spéciale |
urlImage = new ColumnConfig("Image", "url_image_S", 30, true, |
new Renderer() { |
169,42 → 184,42 |
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
// on affiche une div contenant l'image pointée par l'url |
// on affiche une div contenant l'image pointée par |
// l'url |
String ImgUrl = record.getAsString("url_image_S"); |
String ImgNum = record.getAsString("num_image"); |
return "<div class=\"img-list centered-list\"> <img src=\"" + ImgUrl |
+ "\" title='" + ImgNum + "'> </div>"; |
return "<div class=\"img-list centered-list\"> <img src=\"" |
+ ImgUrl + "\" title='" + ImgNum + "'> </div>"; |
} |
|
}); |
|
noteImage = new ColumnConfig("note", "note_image", 80, true, |
new Renderer() |
{ |
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
String htmlImage = "" ; |
|
int noteImg = record.getAsInteger("note_image") ; |
if(noteImg >= 0) |
{ |
htmlImage += "<div class=\"img-note centered-list\">" ; |
for(int i = 0 ; i <= noteImg ; i++) |
{ |
htmlImage += "<img src=\"note-on.gif\">" ; |
|
noteImage = new ColumnConfig("note", "note_image", 80, true, |
new Renderer() { |
public String render(Object value, |
CellMetadata cellMetadata, Record record, |
int rowIndex, int colNum, Store store) { |
|
String htmlImage = ""; |
|
int noteImg = record.getAsInteger("note_image"); |
if (noteImg >= 0) { |
htmlImage += "<div class=\"img-note centered-list\">"; |
for (int i = 0; i <= noteImg; i++) { |
htmlImage += "<img src=\"note-on.gif\">"; |
} |
htmlImage += "</div>"; |
} |
htmlImage += "</div>" ; |
|
return htmlImage; |
|
} |
|
return htmlImage ; |
|
} |
|
}) ; |
|
|
}); |
|
// on associe le modèle de colonnes |
ColumnConfig[] cm = {numImage, urlImage, datImage, lieImage, appImage, noteImage}; |
ColumnConfig[] cm = { numImage, urlImage, datImage, lieImage, appImage, |
noteImage }; |
modeleColonnes = new ColumnModel(cm); |
this.setColumnModel(modeleColonnes); |
this.setAutoScroll(true); |
221,20 → 236,27 |
FieldDef defUrlImage = new StringFieldDef("url_image"); |
FieldDef defNoteImage = new StringFieldDef("note_image"); |
FieldDef[] defTab = { defNumImage, defDatImage, defLieImage, |
defAppImage, defUrlImageS, defUrlImageM, defUrlImage, defNoteImage }; |
defAppImage, defUrlImageS, defUrlImageM, defUrlImage, |
defNoteImage }; |
RecordDef rd = new RecordDef(defTab); |
st = new Store(rd); |
// on associe le store |
this.setStore(st); |
this.getView().setAutoFill(true); |
|
|
// on crée un masque de chargement qui s'affichera lors des mises à jour |
this.setLoadMask("chargement"); |
|
//Enable drag and drop |
this.setEnableDragDrop(true); |
//You need to set the same group for both grids |
this.setDdGroup("DragGroupName"); |
|
// on ajoute les listeners |
ajouterListeners(); |
|
} |
|
|
/** |
* Ajoute les listeners pour la gestion des évènements |
242,22 → 264,22 |
private void ajouterListeners() { |
this.addListener(new ContainerListenerAdapter() { |
|
|
public void onHide(Component component) { |
|
} |
|
// lors du premier rendu on demande les données qui sont déjà contenues dans la galerie qui est le premier élément affiché |
|
// lors du premier rendu on demande les données qui sont déjà |
// contenues dans la galerie qui est le premier élément affiché |
|
public void onRender(Component component) { |
|
if (!isEstInstancie()) { |
setEstInstancie(true); |
setDragDropText("Glissez les images sur la liste d'observation pour les lier") ; |
getIMediateur().synchroniserSelection("galerie"); |
} |
} |
|
|
public void onShow(Component component) { |
|
} |
265,7 → 287,7 |
}); |
|
this.addGridRowListener(new GridRowListener() { |
|
|
// gestion du clic sur une ligne |
public void onRowClick(GridPanel grid, int rowIndex, EventObject e) { |
|
272,12 → 294,13 |
// on notifie le médiateur et on lui passe le nuémro de ligne |
getIMediateur().clicListeImage(rowIndex); |
} |
|
|
// gestion du clic droit |
public void onRowContextMenu(GridPanel grid, int rowIndex, |
EventObject e) { |
// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu |
e.stopEvent() ; |
// on stoppe l'évenement pour empecher le navigateur d'afficher |
// son propre menu |
e.stopEvent(); |
// on notifie le médiateur en lui passant l'évenement |
getIMediateur().montrerContextMenu(e); |
} |
293,26 → 316,67 |
this.getSelectionModel().addListener(new RowSelectionListenerAdapter() { |
|
// gestion de la sélection |
|
|
public void onSelectionChange(RowSelectionModel sm) { |
|
// si on a rien de sélectionné |
if (sm.getCount() <= 0) { |
// on notifie le médiateur (qui désactive notamment l'accès à certaines infos) |
// on notifie le médiateur (qui désactive notamment l'accès |
// à certaines infos) |
getIMediateur().aucuneSelection(); |
} else { |
// sinon on notifie le médiateur |
getIMediateur().selection(); |
// et on lui demande de synchroniser la selection avec les autres vues |
// et on lui demande de synchroniser la selection avec les |
// autres vues |
getIMediateur().synchroniserSelection("liste"); |
} |
} |
}); |
|
//Enable drag and drop |
this.setEnableDragDrop(true); |
|
//Same name in destination |
this.setDdGroup("DragGroupName"); |
DropTargetConfig dtc = new DropTargetConfig(); |
dtc.setdDdGroup("DragGroupName"); |
|
//Now this is the important part, you need a drop target |
@SuppressWarnings("unused") |
DropTarget tg = new DropTarget(this, dtc) |
{ |
public boolean notifyDrop(DragSource source, EventObject e, DragData data){ |
|
if(data instanceof GridDragData) |
{ |
GridDragData gdd = (GridDragData)data ; |
if(gdd.getGrid().getId().equals("listeImageGrid")) |
{ |
return false ; |
} |
else |
{ |
return iMediateur.lierObsDD(source, e, data, getId()) ; |
} |
} |
else |
{ |
return false ; |
} |
|
|
} |
|
public String notifyOver(DragSource source, EventObject e, DragData data){ |
return "x-dd-drop-ok"; |
} |
}; |
} |
|
/** |
* Méthode héritée de l'interface VueListable |
* Sélectionne les images dans la galerie suivant les identifiants donnés en paramètres |
* Méthode héritée de l'interface VueListable Sélectionne les images dans la |
* galerie suivant les identifiants donnés en paramètres |
*/ |
public String[] getIdSelectionnees() { |
Record[] selection = this.getSelectionModel().getSelections(); |
329,14 → 393,16 |
|
/** |
* Accesseur pour la config de colonnes |
* |
* @return la config de colonnes |
*/ |
public ColumnConfig getCl() { |
return cl; |
} |
|
|
/** |
* Accesseur pour le médiateur |
* |
* @return le médiateur associé |
*/ |
public ImageMediateur getIMediateur() { |
345,6 → 411,7 |
|
/** |
* Accesseur pour le modèle de colonnes |
* |
* @return le modèle de colonnes |
*/ |
public ColumnModel getModeleColonnes() { |
353,14 → 420,16 |
|
/** |
* Accesseur pour le store |
* |
* @return le store contenant les données |
*/ |
public Store getSt() { |
return st; |
} |
|
|
/** |
* Accesseur pour le booleen d'instanciation |
* |
* @return le booleen d'instanciation |
*/ |
public boolean isEstInstancie() { |
369,8 → 438,11 |
|
/** |
* Méthode héritée de l'interface rafraichissable |
* @param nouvelleDonnees les nouvelles données |
* @param repandreRafraichissement le booleen de notification du rafraichissement |
* |
* @param nouvelleDonnees |
* les nouvelles données |
* @param repandreRafraichissement |
* le booleen de notification du rafraichissement |
*/ |
public void rafraichir(Object nouvelleDonnees, |
boolean repandreRafraichissement) { |
383,7 → 455,7 |
st.load(); |
// et on reconfigure et rafraichit la vue |
this.reconfigure(st, this.getColumnModel()); |
|
|
} |
|
// si on doit répandre l'évenement |
395,8 → 467,10 |
} |
|
/** |
* Sélectionne des enregistrements donné |
* @param sel un tableau d'enregistrement à selectionner |
* Sélectionne des enregistrements donné |
* |
* @param sel |
* un tableau d'enregistrement à selectionner |
*/ |
public void selectionnerEnregistrements(Record[] sel) { |
|
405,33 → 479,35 |
getSelectionModel().selectRecords(sel); |
} |
} |
|
|
/** |
* Accesseur pour la toolbar de pagination |
* |
* @return la toolbar de pagination |
*/ |
public pageToolBarVue getToolBarVue() |
{ |
return bt ; |
public pageToolBarVue getToolBarVue() { |
return bt; |
} |
|
/** |
* Setteur pour le booleen d'instanciation |
* @param estInstancie la nouvelle valeur du booleen |
* |
* @param estInstancie |
* la nouvelle valeur du booleen |
*/ |
public void setEstInstancie(boolean estInstancie) { |
this.estInstancie = estInstancie; |
} |
|
public void mettreAjourInfos(String commentaires, String date, String note) { |
|
public void mettreAjourInfos(String commentaires, String date, String note) { |
|
for (int i = 0; i < getSelectionModel().getCount(); i++) { |
|
getSelectionModel().getSelections()[i].set("note_image", note) ; |
getSelectionModel().getSelections()[i].set("dat_image", date) ; |
|
|
getSelectionModel().getSelections()[i].set("note_image", note); |
getSelectionModel().getSelections()[i].set("dat_image", date); |
|
} |
|
|
} |
|
} |