28,6 → 28,7 |
import com.gwtext.client.widgets.grid.GridView; |
import com.gwtext.client.widgets.grid.PropertyGridPanel; |
import com.gwtext.client.widgets.grid.event.GridCellListener; |
import com.gwtext.client.widgets.grid.event.GridCellListenerAdapter; |
import com.gwtext.client.widgets.layout.RowLayout; |
import com.gwtext.client.widgets.layout.RowLayoutData; |
import com.gwtext.client.widgets.layout.VerticalLayout; |
36,33 → 37,89 |
import com.gwtext.client.widgets.tree.TreeNode; |
import com.gwtext.client.widgets.tree.TreePanel; |
|
/** |
* Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il implémente l'interface rafraichissable |
* @author aurelien |
* |
*/ |
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable { |
|
/** |
* Le médiateur associé à la vue |
*/ |
private ImageMediateur imediateur = null ; |
|
/** |
* Le panneau des Exifs |
*/ |
private PropertyGridPanel ExifGrid = null ; |
/** |
* Le panneau des Iptc |
*/ |
private PropertyGridPanel IptcGrid = null ; |
|
/** |
* La grille pour le panneau des Exifs |
*/ |
private GridView gViewExif = null ; |
/** |
* La grille pour le panneau de Iptc |
*/ |
private GridView gViewIptc = null ; |
|
/** |
* L'onglet des Exifs |
*/ |
private Panel panneauExifGrid = null; |
/** |
* L'onglet des Iptc |
*/ |
private Panel panneauIptcGrid = null ; |
/** |
* L'onglet des infos |
*/ |
private Panel panneauInfoGrid = null ; |
/** |
* L'onglet des mots clés |
*/ |
private ArbreMotsClesVue panneauMotsCles = null ; |
|
/** |
* Le champ commentaire |
*/ |
private TextField commentaireGeneral = null ; |
/** |
* Le champ date |
*/ |
private DateField dateImage = null ; |
/** |
* Le bouton de validation |
*/ |
Button validerInfo = null ; |
|
/** |
* Booleen d'instanciation |
*/ |
boolean estInstancie = false ; |
|
/** |
* Constructeur sans argument (privé car ne doit pas être utilisé) |
*/ |
private PanneauMetadonneesVue() |
{ |
super() ; |
} |
|
/** |
* Constructeur avec argument |
* @param im |
*/ |
public PanneauMetadonneesVue(ImageMediateur im) |
{ |
super() ; |
|
// on associe le médiateur |
imediateur = im ; |
|
// on crée et dispose les panneaux et les champs |
panneauExifGrid = new Panel("Exif") ; |
panneauIptcGrid = new Panel("Iptc") ; |
panneauInfoGrid = new Panel("info") ; |
70,6 → 127,8 |
|
panneauInfoGrid.setLayout(new VerticalLayout()); |
panneauInfoGrid.setHeight(500); |
panneauInfoGrid.setMargins(5) ; |
panneauInfoGrid.setPaddings(5) ; |
Label labelComm = new Label("Commentaires :") ; |
labelComm.setHeight("20px") ; |
commentaireGeneral = new TextArea() ; |
83,14 → 142,6 |
dateImage.setFormat("d/m/y") ; |
|
validerInfo = new Button("OK") ; |
validerInfo.addListener(new ButtonListenerAdapter() { |
|
public void onClick(Button button, EventObject e) { |
|
getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue()) ; |
|
} |
}); |
|
panneauInfoGrid.add(labelComm) ; |
panneauInfoGrid.add(commentaireGeneral) ; |
115,25 → 166,64 |
ExifGrid.setAutoWidth(true); |
ExifGrid.setAutoHeight(true); |
ExifGrid.setSorted(false); |
ExifGrid.addGridCellListener(new GridCellListener() { |
|
gViewIptc = new GridView(); |
gViewIptc.setForceFit(true); |
|
IptcGrid = new PropertyGridPanel() ; |
IptcGrid.setId("meta_iptc"); |
IptcGrid.setView(gViewIptc); |
|
IptcGrid.setNameText("Métadonnées IPTC"); |
IptcGrid.setAutoWidth(true); |
IptcGrid.setAutoHeight(true); |
IptcGrid.setSorted(false); |
|
|
panneauExifGrid.add(ExifGrid); |
panneauIptcGrid.add(IptcGrid); |
|
// on ajoute les listeners |
ajouterListeners() ; |
|
|
// on effectue le rendu |
this.doLayout(true) ; |
|
} |
|
private void ajouterListeners() |
{ |
// on ajoute un écouteur |
validerInfo.addListener(new ButtonListenerAdapter() { |
|
// gestion du clic |
public void onClick(Button button, EventObject e) { |
|
// lors du clic sur le bouton valider on met à jour les commentaires et la date |
getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue()) ; |
|
} |
}); |
|
// gestion des clics dans la grille |
ExifGrid.addGridCellListener(new GridCellListenerAdapter() { |
|
// lors d'un clic d'une cellule |
public void onCellClick(GridPanel grid, int rowIndex, int colIndex, |
EventObject e) { |
|
// on empeche l'édition |
e.stopEvent() ; |
ExifGrid.stopEditing() ; |
|
} |
|
public void onCellContextMenu(GridPanel grid, int rowIndex, |
int cellIndex, EventObject e) { |
// TODO Auto-generated method stub |
|
} |
|
// lors du double clic sur une cellule |
public void onCellDblClick(GridPanel grid, int rowIndex, |
int colIndex, EventObject e) { |
|
// on empêche l'édition |
e.stopEvent() ; |
ExifGrid.stopEditing() ; |
|
141,36 → 231,21 |
|
}) ; |
|
gViewIptc = new GridView(); |
gViewIptc.setForceFit(true); |
|
IptcGrid = new PropertyGridPanel() ; |
IptcGrid.setId("meta_iptc"); |
IptcGrid.setView(gViewIptc); |
|
IptcGrid.setNameText("Métadonnées IPTC"); |
IptcGrid.setAutoWidth(true); |
IptcGrid.setAutoHeight(true); |
IptcGrid.setSorted(false); |
IptcGrid.addGridCellListener(new GridCellListener() { |
IptcGrid.addGridCellListener(new GridCellListenerAdapter() { |
|
// lors d'un clic d'une cellule |
public void onCellClick(GridPanel grid, int rowIndex, int colIndex, |
EventObject e) { |
|
// on empeche l'édition |
e.stopEvent() ; |
ExifGrid.stopEditing() ; |
|
} |
|
public void onCellContextMenu(GridPanel grid, int rowIndex, |
int cellIndex, EventObject e) { |
// TODO Auto-generated method stub |
|
} |
|
// lors d'un double clic d'une cellule |
public void onCellDblClick(GridPanel grid, int rowIndex, |
int colIndex, EventObject e) { |
|
// on empeche l'édition |
e.stopEvent() ; |
ExifGrid.stopEditing() ; |
|
177,34 → 252,44 |
} |
|
}) ; |
|
panneauExifGrid.add(ExifGrid); |
panneauIptcGrid.add(IptcGrid); |
|
this.doLayout(true) ; |
|
} |
|
/** |
* Desactive visuellement ce panneau |
*/ |
public void desactiverPanneau() |
{ |
this.setDisabled(true) ; |
} |
|
/** |
* Active visuellement ce panneau |
*/ |
public void activerPanneau() |
{ |
this.setDisabled(false) ; |
} |
|
/** |
* Accesseur pour le médiateur |
* @return le médiateur associé à la vue |
*/ |
public ImageMediateur getIMediateur() |
{ |
return imediateur ; |
} |
|
|
/** |
* Méthode héritée de l'interface rafraichissable |
* @param nouvelleDonnees les nouvelles données |
* @param repandreRafraichissement le booleen de notification de mise à jour |
*/ |
public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) { |
|
// si on reçoit un tableau d'objets |
if(nouvelleDonnees instanceof Object[]) |
{ |
// extrait infos, exifs et iptc |
Object meta[] = (Object[])nouvelleDonnees ; |
String[][] exif = (String[][])meta[0] ; |
String[][] iptc = (String[][])meta[1] ; |
241,6 → 326,7 |
|
dateImage.setValue(gen[1][1]) ; |
|
// et on met à jour les données pour l'affichage |
ExifGrid.setSource(exifSource); |
IptcGrid.setSource(iptcSource); |
|
248,6 → 334,7 |
} |
|
/** |
* Accesseur pour le panneau des mots clés |
* @return the panneauMotsCles |
*/ |
public ArbreMotsClesVue getPanneauMotsCles() { |