Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | 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;
865 jpm 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
 
499 jp_milcent 14
import com.extjs.gxt.ui.client.event.Events;
553 jp_milcent 15
import com.extjs.gxt.ui.client.GXT;
865 jpm 16
import com.extjs.gxt.ui.client.Registry;
60 jpm 17
import com.extjs.gxt.ui.client.event.Listener;
553 jp_milcent 18
import com.extjs.gxt.ui.client.event.TreePanelEvent;
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;
553 jp_milcent 22
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
23
import com.google.gwt.core.client.GWT;
24
import com.google.gwt.event.dom.client.ChangeEvent;
25
import com.google.gwt.event.dom.client.ChangeHandler;
149 gduche 26
import com.google.gwt.user.client.ui.ListBox;
60 jpm 27
 
444 jp_milcent 28
public class MenuVue extends ContentPanel implements Rafraichissable {
149 gduche 29
 
423 jp_milcent 30
	private Mediateur mediateur = null;
31
	private Constantes i18nC = null;
32
 
553 jp_milcent 33
	private TreePanel<Menu> arbreMenus;
149 gduche 34
	private ListBox listeProjets;
277 jp_milcent 35
	private ProjetListe projetsCache = null;
328 jp_milcent 36
	private TreeStore<Menu> menuStore;
277 jp_milcent 37
 
444 jp_milcent 38
	public MenuVue(Mediateur mediateurCourrant) {
423 jp_milcent 39
		mediateur = mediateurCourrant;
40
		i18nC = mediateur.i18nC;
41
 
553 jp_milcent 42
		setHeading(i18nC.titreMenu());
367 jp_milcent 43
		setLayout(new FlowLayout());
60 jpm 44
		setLayoutOnChange(true);
45
 
553 jp_milcent 46
		chargerProjets();
47
		afficherListeProjets();
48
 
49
		construireMenu();
50
		afficherMenu();
60 jpm 51
	}
52
 
328 jp_milcent 53
	private void construireMenu() {
54
		menuStore = new TreeStore<Menu>();
60 jpm 55
 
423 jp_milcent 56
		Menu accueilMenu = new Menu(i18nC.menuAccueil(), MenuApplicationId.ACCUEIL);
57
		Menu projetMenu = new Menu(i18nC.menuProjet(), MenuApplicationId.PROJET);
58
	    Menu menuInstitution = new Menu(i18nC.menuStructure(), MenuApplicationId.STRUCTURE);
59
	    Menu menuCollections = new Menu(i18nC.menuCollection(), MenuApplicationId.COLLECTION);
60
	    Menu menuPersonnes = new Menu(i18nC.menuPersonne(), MenuApplicationId.PERSONNE);
61
	    Menu menuPublications = new Menu(i18nC.menuPublication(), MenuApplicationId.PUBLICATION);
60 jpm 62
 
328 jp_milcent 63
	    menuStore.add(accueilMenu, false);
64
	    menuStore.add(projetMenu, false);
65
	    menuStore.add(menuInstitution, false);
66
	    menuStore.add(menuCollections, false);
67
	    menuStore.add(menuPersonnes, false);
68
	    menuStore.add(menuPublications, false);
60 jpm 69
	}
277 jp_milcent 70
 
553 jp_milcent 71
	private void afficherMenu() {
72
		arbreMenus = new TreePanel<Menu>(menuStore);
73
		arbreMenus.getStyle().setLeafIcon(GXT.IMAGES.tree_folder());
74
		arbreMenus.setDisplayProperty("nom");
75
		arbreMenus.setHeight("100%");
76
		arbreMenus.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
77
			public void handleEvent(TreePanelEvent<Menu> tpe) {
78
				Menu menuCourant = arbreMenus.getSelectionModel().getSelectedItem();
791 jpm 79
				mediateur.clicMenu(menuCourant.getCode());
553 jp_milcent 80
			}
81
		});
82
 
83
		add(arbreMenus);
328 jp_milcent 84
	}
85
 
791 jpm 86
	public void selectionMenu(String code) {
87
		arbreMenus.getSelectionModel().select(menuStore.findModel("code", code), false);
553 jp_milcent 88
	}
89
 
277 jp_milcent 90
	private void chargerProjets() {
553 jp_milcent 91
		mediateur.selectionnerProjets(this);
277 jp_milcent 92
	}
93
 
553 jp_milcent 94
	private void ajouterProjetsAListe()	{
95
		Iterator<Projet> it = projetsCache.values().iterator();
96
		while (it.hasNext())	{
97
			Projet projetCourant = it.next();
98
			listeProjets.addItem(projetCourant.getNom(), projetCourant.getId());
99
		}
100
	}
101
 
102
	private void afficherListeProjets() {
103
		// Ajout de la sélection des projets
104
		listeProjets = new ListBox(false);
105
		listeProjets.setWidth("100%");
106
		listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL");
107
		add(listeProjets);
108
 
109
	    // Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
110
	    listeProjets.addChangeHandler(new ChangeHandler() {
111
			@Override
112
			public void onChange(ChangeEvent event) {
113
				mediateur.activerChargement(i18nC.chargement());
114
				mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex())));
115
			}
116
		});
117
	}
118
 
119
	public void rafraichir(Object nouvellesDonnees) {
120
		if (nouvellesDonnees instanceof ProjetListe) {
121
			projetsCache = (ProjetListe) nouvellesDonnees;
865 jpm 122
			Registry.register(RegistreId.PROJETS, projetsCache);
553 jp_milcent 123
			ajouterProjetsAListe();
124
		} else {
125
			GWT.log(mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
126
		}
127
	}
277 jp_milcent 128
}