Rev 720 | Rev 965 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.image;
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.util.Util;
import org.tela_botanica.client.vues.MenuAideVue;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dev.util.collect.HashMap;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.SplitButton;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.ToolbarItem;
import com.gwtext.client.widgets.ToolbarMenuButton;
import com.gwtext.client.widgets.ToolbarTextItem;
import com.gwtext.client.widgets.event.SplitButtonListener;
import com.gwtext.client.widgets.event.SplitButtonListenerAdapter;
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 {
/**
* Un bouton qui sert à déployer le menu
*/
ToolbarMenuButton images = null;
/**
* Un bouton qui sert à déployer le menu
*/
ToolbarMenuButton utilisateur = null;
/**
* Bouton pour déployer le menu d'aide
*/
ToolbarMenuButton aide = null ;
/**
* Le médiateur associé à la toolbar
*/
ImageMediateur iMediateur = null;
/**
* Le menu de gestion des images
*/
MenuImageVue imageMenu = null;
/**
* Le menu de gestion des filtres
*/
OptionsImages imageMenuEtendu = null;
/**
* L'item affichant les filtres en cours
*/
ToolbarTextItem texteFiltres;
/**
* Le menu de gestion utilisateur
*/
MenuIdVue idMenu = null;
/**
* Menu de gestion d'aide
*/
MenuAideVue aideMenu = null ;
/**
* Constructeur sans argument (ne doit pas être utilisé donc privé)
*/
@SuppressWarnings("unused")
private BarreOutilsVue() {
super();
}
/**
* Constructeur avec paramètres
*
* @param im
* le médiateur à associer à la vue
*/
public BarreOutilsVue(ImageMediateur im) {
super();
iMediateur = im;
imageMenu = new MenuImageVue(im);
imageMenuEtendu = new OptionsImages(im);
//aideMenu = new MenuAideVue(im);
//images = new ToolbarMenuButton("Fichiers", imageMenu);
//aide = new ToolbarMenuButton("Aide", aideMenu);
texteFiltres = new ToolbarTextItem("");
final ToolbarMenuButton menuImage = new ToolbarMenuButton("Ajouter des images", imageMenuEtendu.getMenuImage());
menuImage.addListener(new SplitButtonListenerAdapter() {
@Override
public void onArrowClick(SplitButton menuButton, EventObject e) {
menuImage.showMenu();
}
@Override
public void onClick(Button button, EventObject e) {
menuImage.showMenu();
}
});
ToolbarButton menuSuppression = imageMenuEtendu.getBoutonSuppression();
final ToolbarMenuButton menuTampon = new ToolbarMenuButton("Tampon", imageMenuEtendu.getMenuTampon());
menuTampon.addListener(new SplitButtonListenerAdapter() {
@Override
public void onArrowClick(SplitButton menuButton, EventObject e) {
menuTampon.showMenu();
}
@Override
public void onClick(Button button, EventObject e) {
menuTampon.showMenu();
}
});
this.addButton(menuImage);
this.addButton(menuSuppression);
this.addButton(menuTampon);
this.addItem(texteFiltres);
//this.addButton(aide);
}
/**
* @return the images
*/
public ToolbarMenuButton getImages() {
return images;
}
/**
* @return the iMediateur
*/
public ImageMediateur getIMediateur() {
return iMediateur;
}
public void setFiltresEnCours(String[][] filtresEnCours) {
String texteFiltresEnCours = "";
for(int i = 0; i < filtresEnCours.length; i++) {
if(Util.filtreValide(filtresEnCours[i])) {
if(!texteFiltresEnCours.equals("")) {
texteFiltresEnCours += " - ";
}
texteFiltresEnCours += "<span class=\"affichage_filtre\">"+
transformerNomFiltre(filtresEnCours[i][0])+": "+transformerValeurFiltre(filtresEnCours[i][0], filtresEnCours[i][1])+
" <input value=\"X\" type=\"button\" rel=\""+filtresEnCours[i][0]+"\" id=\"bouton_raz_filtres_img"+filtresEnCours[i][0]+"\" />"+
"</span>";
}
}
if(!texteFiltresEnCours.equals("")) {
texteFiltresEnCours = "- <span class=\"indicateur_filtres\"> Filtres - "+texteFiltresEnCours+"</span>";
}
texteFiltres.setText(texteFiltresEnCours);
for(int i = 0; i < filtresEnCours.length; i++) {
if(Util.filtreValide(filtresEnCours[i])) {
if(Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]) != null) {
Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]).addListener("click", new EventCallback() {
public void execute(EventObject e) {
e.stopEvent();
iMediateur.viderFiltre(e.getTarget().getAttribute("rel"));
}
});
}
}
}
}
private String transformerNomFiltre(String nomFiltre) {
//TODO: si le nombre de filtre s'agrandit faire une hashmap
// (pas la peine pour le moment, un seul nom à changer)
if(nomFiltre.equals("ci_recherche_generale")) {
nomFiltre = "recherche";
}
//TODO: si le nombre de filtre s'agrandit faire une hashmap
// (pas la peine pour le moment, un seul nom à changer)
if(nomFiltre.equals("ci_meta_mots_cles")) {
nomFiltre = "mots clés";
}
return nomFiltre;
}
private String transformerValeurFiltre(String nomFiltre, String valeurFiltre) {
String valeurFiltreTransformee = valeurFiltre;
if(nomFiltre.equals("ci_meta_mots_cles")) {
String[] tabMotsCles = valeurFiltre.split(";");
String[] tabMotsClesTexte = iMediateur.obtenirTexteMotsCles(tabMotsCles);
if(tabMotsClesTexte.length > 1) {
valeurFiltreTransformee = Util.implode(",", tabMotsClesTexte);
} else {
valeurFiltreTransformee = tabMotsClesTexte[0];
}
}
if(nomFiltre.equals("mois")) {
valeurFiltreTransformee = Util.renvoyerMois(Integer.parseInt(valeurFiltre));
}
return valeurFiltreTransformee;
}
}