Subversion Repositories eFlore/Applications.coel

Rev

Rev 919 | Rev 935 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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