Subversion Repositories eFlore/Applications.coel

Rev

Rev 444 | 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.Iterator;
4
 
60 jpm 5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
423 jp_milcent 7
import org.tela_botanica.client.i18n.Constantes;
277 jp_milcent 8
import org.tela_botanica.client.interfaces.Rafraichissable;
60 jpm 9
import org.tela_botanica.client.modeles.Menu;
328 jp_milcent 10
import org.tela_botanica.client.modeles.MenuApplicationId;
149 gduche 11
import org.tela_botanica.client.modeles.Projet;
268 jp_milcent 12
import org.tela_botanica.client.modeles.ProjetListe;
60 jpm 13
 
14
import com.extjs.gxt.ui.client.Events;
15
import com.extjs.gxt.ui.client.Registry;
328 jp_milcent 16
import com.extjs.gxt.ui.client.binder.TreeBinder;
60 jpm 17
import com.extjs.gxt.ui.client.event.Listener;
18
import com.extjs.gxt.ui.client.event.TreeEvent;
328 jp_milcent 19
import com.extjs.gxt.ui.client.store.TreeStore;
60 jpm 20
import com.extjs.gxt.ui.client.widget.ContentPanel;
190 jp_milcent 21
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
60 jpm 22
import com.extjs.gxt.ui.client.widget.tree.Tree;
23
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
149 gduche 24
import com.google.gwt.user.client.ui.ChangeListener;
25
import com.google.gwt.user.client.ui.ClickListener;
26
import com.google.gwt.user.client.ui.ListBox;
27
import com.google.gwt.user.client.ui.Widget;
60 jpm 28
 
444 jp_milcent 29
public class MenuVue extends ContentPanel implements Rafraichissable {
149 gduche 30
 
423 jp_milcent 31
	private Mediateur mediateur = null;
32
	private Constantes i18nC = null;
33
 
328 jp_milcent 34
	private Tree arbreMenus;
149 gduche 35
	private ListBox listeProjets;
328 jp_milcent 36
	private boolean estListeProjetsInitialise = false;
277 jp_milcent 37
	private ProjetListe projetsCache = null;
328 jp_milcent 38
	private TreeStore<Menu> menuStore;
277 jp_milcent 39
 
444 jp_milcent 40
	public MenuVue(Mediateur mediateurCourrant) {
423 jp_milcent 41
		mediateur = mediateurCourrant;
42
		i18nC = mediateur.i18nC;
43
 
367 jp_milcent 44
		setLayout(new FlowLayout());
60 jpm 45
		setLayoutOnChange(true);
423 jp_milcent 46
		setHeading(i18nC.titreMenu());
60 jpm 47
	}
48
 
49
	public void rafraichir(Object nouvelleDonnees) {
328 jp_milcent 50
		if (nouvelleDonnees instanceof ProjetListe) {
277 jp_milcent 51
			projetsCache = (ProjetListe) nouvelleDonnees;
52
			afficherProjets();
60 jpm 53
		}
54
	}
55
 
277 jp_milcent 56
	private void afficherProjets()	{
328 jp_milcent 57
		Iterator<Projet> it = projetsCache.values().iterator();
149 gduche 58
		while (it.hasNext())	{
328 jp_milcent 59
			Projet projetCourant = it.next();
149 gduche 60
			listeProjets.addItem(projetCourant.getNom(), projetCourant.getId());
61
		}
62
	}
63
 
328 jp_milcent 64
	private void afficherMenu() {
423 jp_milcent 65
		// Ajout de la sélection des projets
149 gduche 66
		listeProjets = new ListBox(false);
190 jp_milcent 67
		listeProjets.setWidth("100%");
423 jp_milcent 68
		listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL");
149 gduche 69
		add(listeProjets);
70
 
71
		// Ajout d'un écouteur pour le clic => chargement de la liste des projets
72
	    listeProjets.addClickListener(new ClickListener() {
73
	      public void onClick(Widget sender) {
328 jp_milcent 74
	    	  if(!estListeProjetsInitialise) {
277 jp_milcent 75
	    		  chargerProjets();
328 jp_milcent 76
	    		  estListeProjetsInitialise = true;
149 gduche 77
	    	  }
78
	      }
79
	    });
80
 
81
	    // Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
82
	    listeProjets.addChangeListener(new ChangeListener() {
83
	      public void onChange(Widget sender) {
84
	    	  // TODO : récupérer la valeur passé par l'évenement et enregistrer dans le registre
423 jp_milcent 85
	    	  mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex())));
149 gduche 86
	      }
87
	    });
88
 
328 jp_milcent 89
		arbreMenus = new Tree();
90
		arbreMenus.getStyle().setLeafIconStyle("tree-folder");
91
		arbreMenus.addListener(Events.OnClick, new Listener<TreeEvent>(){
60 jpm 92
			public void handleEvent(TreeEvent be) {
328 jp_milcent 93
				TreeItem f = arbreMenus.getSelectedItem();
94
				Menu menuSelectionne = (Menu) f.getModel();
95
				selectionMenu(menuSelectionne);
60 jpm 96
			}
97
		});
328 jp_milcent 98
 
99
		TreeBinder<Menu> binder = new TreeBinder<Menu>(arbreMenus, menuStore);
100
		binder.setAutoLoad(true);
101
		binder.setDisplayProperty("nom");
102
		binder.init();
60 jpm 103
 
328 jp_milcent 104
		add(arbreMenus);
60 jpm 105
	}
106
 
328 jp_milcent 107
	private void selectionMenu(Menu menuSelectionne) {
108
		String codeMenuSelectionne = menuSelectionne.getCode();
423 jp_milcent 109
		mediateur.clicMenu(codeMenuSelectionne);
60 jpm 110
	}
111
 
328 jp_milcent 112
	private void construireMenu() {
113
		menuStore = new TreeStore<Menu>();
60 jpm 114
 
423 jp_milcent 115
		Menu accueilMenu = new Menu(i18nC.menuAccueil(), MenuApplicationId.ACCUEIL);
116
		Menu projetMenu = new Menu(i18nC.menuProjet(), MenuApplicationId.PROJET);
117
	    Menu menuInstitution = new Menu(i18nC.menuStructure(), MenuApplicationId.STRUCTURE);
118
	    Menu menuCollections = new Menu(i18nC.menuCollection(), MenuApplicationId.COLLECTION);
119
	    Menu menuPersonnes = new Menu(i18nC.menuPersonne(), MenuApplicationId.PERSONNE);
120
	    Menu menuPublications = new Menu(i18nC.menuPublication(), MenuApplicationId.PUBLICATION);
60 jpm 121
 
328 jp_milcent 122
	    menuStore.add(accueilMenu, false);
123
	    menuStore.add(projetMenu, false);
124
	    menuStore.add(menuInstitution, false);
125
	    menuStore.add(menuCollections, false);
126
	    menuStore.add(menuPersonnes, false);
127
	    menuStore.add(menuPublications, false);
60 jpm 128
	}
277 jp_milcent 129
 
328 jp_milcent 130
	public void chargerMenus() {
131
		construireMenu();
132
		afficherMenu();
133
	}
134
 
277 jp_milcent 135
	private void chargerProjets() {
136
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjets(this);
137
	}
138
 
139
}