Subversion Repositories eFlore/Applications.coel

Rev

Rev 268 | Rev 328 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
60 jpm 1
package org.tela_botanica.client.vues;
2
 
149 gduche 3
import java.util.Collection;
4
import java.util.Iterator;
5
 
60 jpm 6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.RegistreId;
277 jp_milcent 8
import org.tela_botanica.client.interfaces.Rafraichissable;
60 jpm 9
import org.tela_botanica.client.modeles.Menu;
149 gduche 10
import org.tela_botanica.client.modeles.Projet;
268 jp_milcent 11
import org.tela_botanica.client.modeles.ProjetListe;
60 jpm 12
 
13
import com.extjs.gxt.ui.client.Events;
14
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.event.Listener;
16
import com.extjs.gxt.ui.client.event.TreeEvent;
17
import com.extjs.gxt.ui.client.util.TreeBuilder;
18
import com.extjs.gxt.ui.client.widget.ContentPanel;
190 jp_milcent 19
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
60 jpm 20
import com.extjs.gxt.ui.client.widget.tree.Tree;
21
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
149 gduche 22
import com.google.gwt.user.client.ui.ChangeListener;
23
import com.google.gwt.user.client.ui.ClickListener;
24
import com.google.gwt.user.client.ui.ListBox;
25
import com.google.gwt.user.client.ui.Widget;
60 jpm 26
 
277 jp_milcent 27
public class MenuPanneauVue extends ContentPanel implements Rafraichissable {
149 gduche 28
 
60 jpm 29
	private Tree tree;
149 gduche 30
	private ListBox listeProjets;
31
	private boolean listeProjetsInitialise = false;
277 jp_milcent 32
	private ProjetListe projetsCache = null;
33
 
60 jpm 34
	public MenuPanneauVue() {
35
		setBodyBorder(false);
36
		setLayoutOnChange(true);
37
		setHeading("Menu");
190 jp_milcent 38
		setLayout(new FlowLayout());
60 jpm 39
	}
40
 
41
	public void rafraichir(Object nouvelleDonnees) {
42
		if (nouvelleDonnees instanceof Menu) {
43
			afficherMenu((Menu) nouvelleDonnees);
268 jp_milcent 44
		} else if (nouvelleDonnees instanceof ProjetListe) {
277 jp_milcent 45
			projetsCache = (ProjetListe) nouvelleDonnees;
46
			afficherProjets();
60 jpm 47
		}
48
	}
49
 
277 jp_milcent 50
	private void afficherProjets()	{
51
		Iterator it = projetsCache.values().iterator();
149 gduche 52
		while (it.hasNext())	{
53
			Projet projetCourant = (Projet) it.next();
54
			listeProjets.addItem(projetCourant.getNom(), projetCourant.getId());
55
		}
56
	}
57
 
60 jpm 58
	private void afficherMenu(Menu menu) {
149 gduche 59
 
60
		// Greg : ajout de la sélection des projets
61
		listeProjets = new ListBox(false);
190 jp_milcent 62
		listeProjets.setWidth("100%");
149 gduche 63
		listeProjets.addItem("Choisisez un projet...", "NULL");
64
		add(listeProjets);
65
 
66
		// Ajout d'un écouteur pour le clic => chargement de la liste des projets
67
	    listeProjets.addClickListener(new ClickListener() {
68
	      public void onClick(Widget sender) {
69
	    	  if(!listeProjetsInitialise) {
277 jp_milcent 70
	    		  chargerProjets();
149 gduche 71
	    		  listeProjetsInitialise = true;
72
	    	  }
73
	      }
74
	    });
75
 
76
 
77
	    // Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
78
	    listeProjets.addChangeListener(new ChangeListener() {
79
	      public void onChange(Widget sender) {
80
	    	  // TODO : récupérer la valeur passé par l'évenement et enregistrer dans le registre
277 jp_milcent 81
	    	  ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex())));
149 gduche 82
	      }
83
	    });
84
 
60 jpm 85
		tree = new Tree();
86
		tree.getStyle().setLeafIconStyle("tree-folder");
87
		tree.addListener(Events.OnClick, new Listener<TreeEvent>(){
88
 
89
			public void handleEvent(TreeEvent be) {
90
				TreeItem f = tree.getSelectedItem();
91
				selectionMenu(f.getText());
92
			}
93
 
94
		});
95
		TreeBuilder.buildTree(tree, menu);
96
 
97
		add(tree);
98
	}
99
 
100
	private void selectionMenu(String s) {
101
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu(s);
102
	}
103
 
104
	public Menu listerMenu() {
105
		Menu menus = new Menu();
106
 
69 jpm 107
		Menu accueilMenu = new Menu("Accueil");
108
		Menu projetMenu = new Menu("Projets");
60 jpm 109
	    Menu menuInstitution = new Menu("Institutions");
110
	    Menu menuCollections = new Menu("Collections");
111
	    Menu menuPersonnes = new Menu("Personnes");
112
	    Menu menuPublications = new Menu("Publications");
113
 
69 jpm 114
	    menus.add(accueilMenu);
115
	    menus.add(projetMenu);
60 jpm 116
	    menus.add(menuInstitution);
117
	    menus.add(menuCollections);
118
	    menus.add(menuPersonnes);
119
	    menus.add(menuPublications);
120
 
121
	    return menus;
122
	}
277 jp_milcent 123
 
124
	private void chargerProjets() {
125
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjets(this);
126
	}
127
 
128
}