| 1018 | aurelien | 1 | package org.tela_botanica.client.vues.image;
 | 
        
           |  |  | 2 |   | 
        
           | 2615 | aurelien | 3 | import org.tela_botanica.client.i18n.Msg;
 | 
        
           | 1018 | aurelien | 4 | import org.tela_botanica.client.image.ImageMediateur;
 | 
        
           |  |  | 5 | import org.tela_botanica.client.interfaces.Rafraichissable;
 | 
        
           |  |  | 6 | import com.google.gwt.user.client.ui.HTML;
 | 
        
           |  |  | 7 | import com.gwtext.client.widgets.Panel;
 | 
        
           |  |  | 8 |   | 
        
           |  |  | 9 | /**
 | 
        
           |  |  | 10 |  * Arbre des mots clés, qui est une vue rafraichissable, qui contient des mots
 | 
        
           |  |  | 11 |  * clés cochables et réorganisables à volonté
 | 
        
           |  |  | 12 |  *
 | 
        
           |  |  | 13 |  * @author aurelien
 | 
        
           |  |  | 14 |  *
 | 
        
           |  |  | 15 |  */
 | 
        
           |  |  | 16 | public class ImageMotsClesVue extends Panel implements Rafraichissable {
 | 
        
           |  |  | 17 |   | 
        
           |  |  | 18 | 	/**
 | 
        
           |  |  | 19 | 	 * Une string permettant connaitre les mots clés cochés en cours séparés par
 | 
        
           |  |  | 20 | 	 * des virgules
 | 
        
           |  |  | 21 | 	 */
 | 
        
           |  |  | 22 | 	private String motsClesEnCours = "";
 | 
        
           |  |  | 23 |   | 
        
           |  |  | 24 | 	private String[] tableauMotsClesEnCours = new String[0];
 | 
        
           |  |  | 25 | 	/**
 | 
        
           |  |  | 26 | 	 * Tableau contenant les mots clés qui n'ont pas encore été jaouté à l'arbre
 | 
        
           |  |  | 27 | 	 * (sert au lazy rendering quand on reçoit des mots clés avant que le rendu
 | 
        
           |  |  | 28 | 	 * du conteneur n'ai été effectué)
 | 
        
           |  |  | 29 | 	 */
 | 
        
           |  |  | 30 | 	private String[] motsClesEnAttente = new String[0];
 | 
        
           |  |  | 31 |   | 
        
           |  |  | 32 | 	private HTML motsClesAffiches = new HTML();
 | 
        
           |  |  | 33 |   | 
        
           |  |  | 34 | 	/**
 | 
        
           |  |  | 35 | 	 * Constructeur sans paramètre (privé car interdit d'utilisation)
 | 
        
           |  |  | 36 | 	 */
 | 
        
           |  |  | 37 | 	@SuppressWarnings("unused")
 | 
        
           |  |  | 38 | 	private ImageMotsClesVue() {
 | 
        
           |  |  | 39 | 		super();
 | 
        
           |  |  | 40 | 	}
 | 
        
           |  |  | 41 |   | 
        
           |  |  | 42 | 	/**
 | 
        
           |  |  | 43 | 	 * Constructeur avec paramètre
 | 
        
           |  |  | 44 | 	 *
 | 
        
           |  |  | 45 | 	 * @param im
 | 
        
           |  |  | 46 | 	 *            le médiateur à associer
 | 
        
           |  |  | 47 | 	 */
 | 
        
           |  |  | 48 | 	public ImageMotsClesVue(ImageMediateur im) {
 | 
        
           |  |  | 49 | 		// on crée le panel
 | 
        
           | 2615 | aurelien | 50 | 		super(Msg.get("mots-cles"));
 | 
        
           | 1018 | aurelien | 51 | 		this.setHeight("100%");
 | 
        
           |  |  | 52 | 		this.add(motsClesAffiches);
 | 
        
           |  |  | 53 | 		motsClesAffiches.setHeight("100%");
 | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 | 		this.setBorder(false);
 | 
        
           |  |  | 56 | 		this.setBodyBorder(false);
 | 
        
           |  |  | 57 | 		this.setCollapsible(true);
 | 
        
           |  |  | 58 | 		this.setTitleCollapse(true);
 | 
        
           |  |  | 59 |   | 
        
           |  |  | 60 | 	}
 | 
        
           |  |  | 61 |   | 
        
           |  |  | 62 | 	/**
 | 
        
           |  |  | 63 | 	 * Méthode héritée de l'interface rafraichissable
 | 
        
           |  |  | 64 | 	 *
 | 
        
           |  |  | 65 | 	 * @param nouvelleDonnees
 | 
        
           |  |  | 66 | 	 *            les nouvelles données pour l'objet
 | 
        
           |  |  | 67 | 	 * @param repandreRafraichissement
 | 
        
           |  |  | 68 | 	 *            booleen qui dit si on doit répandre l'évenement
 | 
        
           |  |  | 69 | 	 */
 | 
        
           | 1292 | aurelien | 70 | 	@Override
 | 
        
           | 1018 | aurelien | 71 | 	public void rafraichir(Object nouvelleDonnees,
 | 
        
           |  |  | 72 | 			boolean repandreRafraichissement) {
 | 
        
           |  |  | 73 |   | 
        
           |  |  | 74 | 		// Si on reçoit un tableau de String (cas ou l'on séléectionne une
 | 
        
           |  |  | 75 | 		// nouvelle image)
 | 
        
           |  |  | 76 | 		if (nouvelleDonnees instanceof String[]) {
 | 
        
           |  |  | 77 |   | 
        
           |  |  | 78 | 				// le tableau de String contient les id des mots clés associés à
 | 
        
           |  |  | 79 | 				// l'image
 | 
        
           |  |  | 80 | 				// on affiche les mots clés contenu dans le tableau
 | 
        
           |  |  | 81 | 				tableauMotsClesEnCours = (String[]) nouvelleDonnees;
 | 
        
           |  |  | 82 | 				afficherMotsCles(tableauMotsClesEnCours);
 | 
        
           |  |  | 83 | 		}
 | 
        
           |  |  | 84 | 	}
 | 
        
           |  |  | 85 |   | 
        
           |  |  | 86 | 	private void afficherMotsCles(String[] tableauMotsClesEnCours) {
 | 
        
           |  |  | 87 | 		motsClesEnCours = "<ul class=\"liste_mots_cles\">";
 | 
        
           |  |  | 88 | 		for (int i = 0; i < tableauMotsClesEnCours.length; i++) {
 | 
        
           |  |  | 89 | 			if(!tableauMotsClesEnCours[i].trim().isEmpty()) {
 | 
        
           |  |  | 90 | 				motsClesEnCours += "<li>"+tableauMotsClesEnCours[i]+"</li>";
 | 
        
           |  |  | 91 | 			}
 | 
        
           |  |  | 92 | 		}
 | 
        
           |  |  | 93 | 		motsClesEnCours += "</ul>";
 | 
        
           |  |  | 94 |   | 
        
           |  |  | 95 | 		motsClesAffiches.setHTML(motsClesEnCours);
 | 
        
           |  |  | 96 | 	}
 | 
        
           |  |  | 97 | }
 |