Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 542 → Rev 543

/trunk/src/org/tela_botanica/client/composants/AideFenetre.java
1,6 → 1,5
package org.tela_botanica.client.composants;
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.images.Images;
7,10 → 6,14
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.Menu;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.Print;
 
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.IconAlign;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ButtonEvent;
31,6 → 34,7
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
47,8 → 51,8
public class AideFenetre extends Dialog {
 
private static final String SERVICE_NOM = "CoelAide";
private static final String PAGE_SOMMAIRE_CODE = "AideCoelSommaire";
private static final String PAGE_A_OUVRIR_CODE = "AideCoelPresentationGenerale";
private static final String PAGE_SOMMAIRE_CODE = "AideCOELSommaire";
private static final String PAGE_A_OUVRIR_CODE = "AideCOELPresentationGenerale";
private static Menu pagePrincipale = null;
private static Menu menuAOuvrirParDefaut = null;
private TreePanel<Menu> arbre = null;
59,6 → 63,7
private ContentPanel contenuPanneau = null;
private HtmlContainer conteneurDuHtml;
private LayoutContainer entetePanneau;
private ToolBar sommaireBarreOutils;
public AideFenetre() {
setBodyBorder(false);
70,50 → 75,77
setHideOnButtonClick(true);
setLayout(new BorderLayout());
// Panneau Nord : entête
creerPanneauEntete();
creerPanneauSommaire();
getSommaireArbreModele();
creerPanneauContenu();
}
 
private void creerPanneauEntete() {
entetePanneau = new LayoutContainer();
entetePanneau.setLayout(new FlowLayout());
BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30);
add(entetePanneau, enteteDisposition);
}
 
private void creerPanneauSommaire() {
inititialiserSommaireArbreFiltre();
 
creerSommaire();
// Panneau Ouest : sommaire
creerSommaire();
sommairePanneau = new ContentPanel();
sommairePanneau.setScrollMode(Scroll.AUTO);
sommairePanneau.setHeight("100%");
sommairePanneau.setHeaderVisible(false);
creerBarreOutilSommaire();
BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350);
sommaireDisposition.setMargins(new Margins(0, 5, 0, 0));
sommaireDisposition.setSplit(true);
sommaireDisposition.setFloatable(true);
Button plierDeplierToutBtn = new Button(null, new SelectionListener<ButtonEvent>() {
add(sommairePanneau, sommaireDisposition);
}
 
private void creerBarreOutilSommaire() {
sommaireBarreOutils = new ToolBar();
// FIXME : on peut utiliser l'alignement à droite car cela pose un problème de rendu dans le Hosted Mode
//sommaireBarreOutils.setAlignment(HorizontalAlignment.RIGHT);
creerBoutonPlierDeplier();
sommairePanneau.setTopComponent(sommaireBarreOutils);
}
 
private void creerBoutonPlierDeplier() {
Button plierDeplierToutBtn = new Button();
plierDeplierToutBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
Button boutonPlierDeplierTout = (Button) be.getSource();
// CHECK : vérifier si cela marche
if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.deplierTout())) {
boutonPlierDeplierTout.setIcon(Images.ICONES.deplierTout());
boutonPlierDeplierTout.setIcon(Images.ICONES.replierTout());
arbre.expandAll();
} else if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.replierTout())) {
boutonPlierDeplierTout.setIcon(Images.ICONES.replierTout());
boutonPlierDeplierTout.setIcon(Images.ICONES.deplierTout());
arbre.collapseAll();
}
boutonPlierDeplierTout.repaint();
}
});
plierDeplierToutBtn.setIcon(Images.ICONES.deplierTout());
plierDeplierToutBtn.setScale(ButtonScale.SMALL);
plierDeplierToutBtn.setToolTip("Étendre le sommaire");
sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0);
sommaireBarreOutils.add(plierDeplierToutBtn);
}
 
private void creerPanneauContenu() {
contenuPanneau = new ContentPanel();
contenuPanneau.setScrollMode(Scroll.AUTO);
add(sommairePanneau, sommaireDisposition);
creerBarreOutilContenu();
// Chargement de l'arbre du sommaire et de son filtre
getSommaireArbreModele();
// Panneau Central : contenu
contenuPanneau = new ContentPanel();
contenuPanneau.setScrollMode(Scroll.AUTO);
// Barre d'outils
BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);
add(contenuPanneau, contenuDisposition);
}
private void creerBarreOutilContenu() {
Button imprimerBtn = new Button(null, new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
Print.it(conteneurDuHtml.el().getInnerHtml());
121,19 → 153,18
});
imprimerBtn.setIcon(Images.ICONES.imprimer());
contenuPanneau.getHeader().insertTool(imprimerBtn, 0);
BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);
add(contenuPanneau, contenuDisposition);
}
 
private void etendreArbre(Menu menuAOuvrir) {
arbre.setExpanded(menuAOuvrir, true);
if (menuAOuvrir != null) {
arbre.setExpanded(menuAOuvrir, true);
arbre.getSelectionModel().select(menuAOuvrir, false);
}
}
private void etendreArbre(String menuCode) {
Menu menuAOuvrir = magazin.findModel("code", menuCode);
if (menuAOuvrir != null) {
arbre.setExpanded(menuAOuvrir, true);
}
etendreArbre(menuAOuvrir);
}
 
private void creerSommaire() {
142,15 → 173,15
filtre.bind(magazin);
arbre = new TreePanel<Menu>(magazin);
arbre.setAutoLoad(true);
arbre.setHeight("100%");
arbre.setDisplayProperty("nom");
arbre.getStyle().setLeafIcon(Images.ICONES.aide());
arbre.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
public void handleEvent(TreePanelEvent<Menu> tpe) {
TreePanel<Menu> f = tpe.getComponent();
if (f.getModel() != null) {
Menu menu = f.getModel();
if (menu.get("code") != null) {
selectionSommaire((String) menu.get("code"));
}
Menu menuSelectionne = arbre.getSelectionModel().getSelectedItem();
if (menuSelectionne.get("code") != null) {
selectionSommaire((String) menuSelectionne.get("code"));
}
}
});
172,7 → 203,7
conteneurDuHtml = new HtmlContainer() {
public void onBrowserEvent(Event e) {
// Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().equals("A")) {
if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().toString().startsWith("http://")) {
e.preventDefault();
String urlPageAideCible = e.getEventTarget().toString();
chargerPageAide(urlPageAideCible);
180,7 → 211,7
etendreArbre(codePageAideCible);
GWT.log("Clic : "+urlPageAideCible+"::"+codePageAideCible, null);
} else {
GWT.log("Event :"+e.getType(), null);
GWT.log("Event target:"+e.getEventTarget().toString()+" - type :"+e.getTypeInt()+"="+Event.ONCLICK, null);
}
}
};
205,7 → 236,8
String nomMenu = enregistrement.getNom();
String nomMenuMinuscule = nomMenu.toLowerCase();
String nomFiltreMinuscule = filtre.toLowerCase();
if (nomMenuMinuscule.matches(".*"+nomFiltreMinuscule+".*")) {
String nomFiltreMinusculeProtege = Pattern.quote(nomFiltreMinuscule);
if (nomMenuMinuscule.matches(".*"+nomFiltreMinusculeProtege+".*")) {
retour = true;
}
return retour;
293,7 → 325,8
Menu menuCourrant = new Menu();
if (pageCourante.get("code") != null) {
menuCourrant.setCode(pageCourante.get("code").isString().stringValue());
String codeCourant = pageCourante.get("code").isString().stringValue();
menuCourrant.setCode(codeCourant);
}
if (pageCourante.get("txt") != null) {
menuCourrant.setNom(pageCourante.get("txt").isString().stringValue());
309,7 → 342,6
}
}
}
if (pageCourante.get("liste") != null) {
ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray());
}