Subversion Repositories eFlore/Applications.coel

Rev

Details | 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.Iterator;
4
 
60 jpm 5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
277 jp_milcent 7
import org.tela_botanica.client.interfaces.Rafraichissable;
60 jpm 8
import org.tela_botanica.client.modeles.Menu;
328 jp_milcent 9
import org.tela_botanica.client.modeles.MenuApplicationId;
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;
328 jp_milcent 15
import com.extjs.gxt.ui.client.binder.TreeBinder;
60 jpm 16
import com.extjs.gxt.ui.client.event.Listener;
17
import com.extjs.gxt.ui.client.event.TreeEvent;
328 jp_milcent 18
import com.extjs.gxt.ui.client.store.TreeStore;
60 jpm 19
import com.extjs.gxt.ui.client.widget.ContentPanel;
190 jp_milcent 20
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
60 jpm 21
import com.extjs.gxt.ui.client.widget.tree.Tree;
22
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
149 gduche 23
import com.google.gwt.user.client.ui.ChangeListener;
24
import com.google.gwt.user.client.ui.ClickListener;
25
import com.google.gwt.user.client.ui.ListBox;
26
import com.google.gwt.user.client.ui.Widget;
60 jpm 27
 
277 jp_milcent 28
public class MenuPanneauVue extends ContentPanel implements Rafraichissable {
149 gduche 29
 
328 jp_milcent 30
	private Tree arbreMenus;
149 gduche 31
	private ListBox listeProjets;
328 jp_milcent 32
	private boolean estListeProjetsInitialise = false;
277 jp_milcent 33
	private ProjetListe projetsCache = null;
328 jp_milcent 34
	private TreeStore<Menu> menuStore;
277 jp_milcent 35
 
60 jpm 36
	public MenuPanneauVue() {
37
		setBodyBorder(false);
38
		setLayoutOnChange(true);
39
		setHeading("Menu");
190 jp_milcent 40
		setLayout(new FlowLayout());
60 jpm 41
	}
42
 
43
	public void rafraichir(Object nouvelleDonnees) {
328 jp_milcent 44
		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()	{
328 jp_milcent 51
		Iterator<Projet> it = projetsCache.values().iterator();
149 gduche 52
		while (it.hasNext())	{
328 jp_milcent 53
			Projet projetCourant = it.next();
149 gduche 54
			listeProjets.addItem(projetCourant.getNom(), projetCourant.getId());
55
		}
56
	}
57
 
328 jp_milcent 58
	private void afficherMenu() {
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) {
328 jp_milcent 69
	    	  if(!estListeProjetsInitialise) {
277 jp_milcent 70
	    		  chargerProjets();
328 jp_milcent 71
	    		  estListeProjetsInitialise = true;
149 gduche 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
 
328 jp_milcent 85
		arbreMenus = new Tree();
86
		arbreMenus.getStyle().setLeafIconStyle("tree-folder");
87
		arbreMenus.addListener(Events.OnClick, new Listener<TreeEvent>(){
60 jpm 88
 
89
			public void handleEvent(TreeEvent be) {
328 jp_milcent 90
				TreeItem f = arbreMenus.getSelectedItem();
91
				Menu menuSelectionne = (Menu) f.getModel();
92
				selectionMenu(menuSelectionne);
60 jpm 93
			}
94
 
95
		});
328 jp_milcent 96
 
97
		TreeBinder<Menu> binder = new TreeBinder<Menu>(arbreMenus, menuStore);
98
		binder.setAutoLoad(true);
99
		binder.setDisplayProperty("nom");
100
		binder.init();
60 jpm 101
 
328 jp_milcent 102
		add(arbreMenus);
60 jpm 103
	}
104
 
328 jp_milcent 105
	private void selectionMenu(Menu menuSelectionne) {
106
		String codeMenuSelectionne = menuSelectionne.getCode();
107
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu(codeMenuSelectionne);
60 jpm 108
	}
109
 
328 jp_milcent 110
	private void construireMenu() {
111
		menuStore = new TreeStore<Menu>();
60 jpm 112
 
328 jp_milcent 113
		Menu accueilMenu = new Menu("Accueil", MenuApplicationId.ACCUEIL);
114
		Menu projetMenu = new Menu("Projets", MenuApplicationId.PROJET);
115
	    Menu menuInstitution = new Menu("Institutions", MenuApplicationId.STRUCTURE);
116
	    Menu menuCollections = new Menu("Collections", MenuApplicationId.COLLECTION);
117
	    Menu menuPersonnes = new Menu("Personnes", MenuApplicationId.PERSONNE);
118
	    Menu menuPublications = new Menu("Publications", MenuApplicationId.PUBLICATION);
60 jpm 119
 
328 jp_milcent 120
	    menuStore.add(accueilMenu, false);
121
	    menuStore.add(projetMenu, false);
122
	    menuStore.add(menuInstitution, false);
123
	    menuStore.add(menuCollections, false);
124
	    menuStore.add(menuPersonnes, false);
125
	    menuStore.add(menuPublications, false);
60 jpm 126
	}
277 jp_milcent 127
 
328 jp_milcent 128
	public void chargerMenus() {
129
		construireMenu();
130
		afficherMenu();
131
	}
132
 
277 jp_milcent 133
	private void chargerProjets() {
134
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjets(this);
135
	}
136
 
137
}