3,7 → 3,6 |
import java.util.Iterator; |
|
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.i18n.Constantes; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Menu; |
12,19 → 11,17 |
import org.tela_botanica.client.modeles.ProjetListe; |
|
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.binder.TreeBinder; |
import com.extjs.gxt.ui.client.GXT; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.TreeEvent; |
import com.extjs.gxt.ui.client.event.TreePanelEvent; |
import com.extjs.gxt.ui.client.store.TreeStore; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.tree.Tree; |
import com.extjs.gxt.ui.client.widget.tree.TreeItem; |
import com.google.gwt.user.client.ui.ChangeListener; |
import com.google.gwt.user.client.ui.ClickListener; |
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.user.client.ui.ListBox; |
import com.google.gwt.user.client.ui.Widget; |
|
public class MenuVue extends ContentPanel implements Rafraichissable { |
|
31,9 → 28,8 |
private Mediateur mediateur = null; |
private Constantes i18nC = null; |
|
private Tree arbreMenus; |
private TreePanel<Menu> arbreMenus; |
private ListBox listeProjets; |
private boolean estListeProjetsInitialise = false; |
private ProjetListe projetsCache = null; |
private TreeStore<Menu> menuStore; |
|
41,74 → 37,17 |
mediateur = mediateurCourrant; |
i18nC = mediateur.i18nC; |
|
setHeading(i18nC.titreMenu()); |
setLayout(new FlowLayout()); |
setLayoutOnChange(true); |
setHeading(i18nC.titreMenu()); |
} |
|
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof ProjetListe) { |
projetsCache = (ProjetListe) nouvelleDonnees; |
afficherProjets(); |
} |
chargerProjets(); |
afficherListeProjets(); |
|
construireMenu(); |
afficherMenu(); |
} |
|
private void afficherProjets() { |
Iterator<Projet> it = projetsCache.values().iterator(); |
while (it.hasNext()) { |
Projet projetCourant = it.next(); |
listeProjets.addItem(projetCourant.getNom(), projetCourant.getId()); |
} |
} |
|
private void afficherMenu() { |
// Ajout de la sélection des projets |
listeProjets = new ListBox(false); |
listeProjets.setWidth("100%"); |
listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL"); |
add(listeProjets); |
|
// Ajout d'un écouteur pour le clic => chargement de la liste des projets |
listeProjets.addClickListener(new ClickListener() { |
public void onClick(Widget sender) { |
if(!estListeProjetsInitialise) { |
chargerProjets(); |
estListeProjetsInitialise = true; |
} |
} |
}); |
|
// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre |
listeProjets.addChangeListener(new ChangeListener() { |
public void onChange(Widget sender) { |
// TODO : récupérer la valeur passé par l'évenement et enregistrer dans le registre |
mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex()))); |
} |
}); |
|
arbreMenus = new Tree(); |
arbreMenus.getStyle().setLeafIconStyle("tree-folder"); |
arbreMenus.addListener(Events.OnClick, new Listener<TreeEvent>(){ |
public void handleEvent(TreeEvent be) { |
TreeItem f = arbreMenus.getSelectedItem(); |
Menu menuSelectionne = (Menu) f.getModel(); |
selectionMenu(menuSelectionne); |
} |
}); |
|
TreeBinder<Menu> binder = new TreeBinder<Menu>(arbreMenus, menuStore); |
binder.setAutoLoad(true); |
binder.setDisplayProperty("nom"); |
binder.init(); |
|
add(arbreMenus); |
} |
|
private void selectionMenu(Menu menuSelectionne) { |
String codeMenuSelectionne = menuSelectionne.getCode(); |
mediateur.clicMenu(codeMenuSelectionne); |
} |
|
private void construireMenu() { |
menuStore = new TreeStore<Menu>(); |
|
127,13 → 66,61 |
menuStore.add(menuPublications, false); |
} |
|
public void chargerMenus() { |
construireMenu(); |
afficherMenu(); |
private void afficherMenu() { |
arbreMenus = new TreePanel<Menu>(menuStore); |
arbreMenus.getStyle().setLeafIcon(GXT.IMAGES.tree_folder()); |
arbreMenus.setDisplayProperty("nom"); |
arbreMenus.setHeight("100%"); |
arbreMenus.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){ |
public void handleEvent(TreePanelEvent<Menu> tpe) { |
Menu menuCourant = arbreMenus.getSelectionModel().getSelectedItem(); |
selectionMenu(menuCourant); |
} |
}); |
|
add(arbreMenus); |
} |
|
private void selectionMenu(Menu menuSelectionne) { |
String codeMenuSelectionne = menuSelectionne.getCode(); |
mediateur.clicMenu(codeMenuSelectionne); |
} |
|
private void chargerProjets() { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjets(this); |
mediateur.selectionnerProjets(this); |
} |
|
private void ajouterProjetsAListe() { |
Iterator<Projet> it = projetsCache.values().iterator(); |
while (it.hasNext()) { |
Projet projetCourant = it.next(); |
listeProjets.addItem(projetCourant.getNom(), projetCourant.getId()); |
} |
} |
|
private void afficherListeProjets() { |
// Ajout de la sélection des projets |
listeProjets = new ListBox(false); |
listeProjets.setWidth("100%"); |
listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL"); |
add(listeProjets); |
|
// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre |
listeProjets.addChangeHandler(new ChangeHandler() { |
@Override |
public void onChange(ChangeEvent event) { |
mediateur.activerChargement(i18nC.chargement()); |
mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex()))); |
} |
}); |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ProjetListe) { |
projetsCache = (ProjetListe) nouvellesDonnees; |
ajouterProjetsAListe(); |
} else { |
GWT.log(mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
} |
} |