Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 60 → Rev 61

/trunk/src/org/tela_botanica/client/ComposantId.java
New file
0,0 → 1,11
package org.tela_botanica.client;
 
public final class ComposantId {
public static final String BTN_AIDE = "coel-id-btn-aide";
public static final String BTN_PARAMETRES = "coel-id-btn-parametres";
public static final String BTN_IDENTIFICATION = "coel-id-btn-identification";
public static final String BTN_APPLIS = "coel-id-btn-applis";
public static final String MENU_CEL = "coel-id-menu-cel";
public static final String MENU_BEL = "coel-id-menu-bel";
public static final String BTN_DECONNEXION = "coel-id-btn-deconnexion";;
}
/trunk/src/org/tela_botanica/client/vues/EntetePanneauVue.java
1,12 → 1,17
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Utilisateur;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.Info;
16,11 → 21,17
import com.extjs.gxt.ui.client.widget.button.SplitButton;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.extjs.gxt.ui.client.widget.menu.Item;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.google.gwt.user.client.Window;
 
public class EntetePanneauVue extends LayoutContainer {
public class EntetePanneauVue extends LayoutContainer implements Rafraichissable {
private ButtonBar barreBoutons = null;
private Button identificationBouton = null;
private Button deconnexionBouton = null;
public EntetePanneauVue() {
setLayout(new RowLayout(Orientation.HORIZONTAL));
setId("coel-entete");
32,30 → 43,86
html.setHtml(sb.toString());
html.setEnableState(false);
// Création de l'écouteur
SelectionListener<ComponentEvent> ecouteur = new SelectionListener<ComponentEvent>() {
HtmlContainer htmlIdentification = new HtmlContainer();
StringBuffer sb2 = new StringBuffer();
sb2.append(" <div id='coel-identification'></div>");
html.setHtml(sb.toString());
html.setEnableState(false);
// Création des écouteurs
SelectionListener<ComponentEvent> boutonEcouteur = new SelectionListener<ComponentEvent>() {
public void componentSelected(ComponentEvent ce) {
Button btn = (Button) ce.component;
Info.display(btn.getText(), "Chargement de la fenêtre '{0}' en cours...", btn.getText());
Button btn = (Button) ce.component;
Info.display(btn.getText()+" - "+btn.getId(), "Chargement de la fenêtre '{0}' en cours...", btn.getText());
if (btn.getId().equals(ComposantId.BTN_AIDE)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirAide();
} else if (btn.getId().equals(ComposantId.BTN_PARAMETRES)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirParametres();
} else if (btn.getId().equals(ComposantId.BTN_IDENTIFICATION)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirIdentification();
} else if (btn.getId().equals(ComposantId.BTN_APPLIS)) {
btn.getMenu().show(btn);
}
}
};
ButtonBar buttonBar = new ButtonBar();
buttonBar.setButtonAlign(Style.HorizontalAlignment.RIGHT);
buttonBar.add(new Button("Paramêtres", ecouteur));
buttonBar.add(new Button("Aide", ecouteur));
buttonBar.add(new Button("Identifiez vous...", ecouteur));
barreBoutons = new ButtonBar();
barreBoutons.setButtonAlign(Style.HorizontalAlignment.RIGHT);
Button parametresBouton = new Button("Paramêtres", boutonEcouteur);
parametresBouton.setId(ComposantId.BTN_PARAMETRES);
barreBoutons.add(parametresBouton);
Button aideBouton = new Button("Aide", boutonEcouteur);
aideBouton.setId(ComposantId.BTN_AIDE);
barreBoutons.add(aideBouton);
identificationBouton = new Button("Identifiez vous...", boutonEcouteur);
identificationBouton.setId(ComposantId.BTN_IDENTIFICATION);
barreBoutons.add(identificationBouton);
deconnexionBouton = new Button("Deconnexion", boutonEcouteur);
deconnexionBouton.setId(ComposantId.BTN_DECONNEXION);
deconnexionBouton.hide();
barreBoutons.add(deconnexionBouton);
SplitButton button = new SplitButton();
button.setText("Changez d'application...");
button.addSelectionListener(ecouteur);
Menu menu = new Menu();
String urlCel = ((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl();
menu.add(new MenuItem("<a href='"+urlCel+"'>Carnet en ligne</a>"));
button.setMenu(menu);
buttonBar.add(button);
SplitButton applisBouton = new SplitButton("Changez d'application...");
applisBouton.setId(ComposantId.BTN_APPLIS);
applisBouton.addSelectionListener(boutonEcouteur);
add(html, new RowData(.3, 1));
add(buttonBar, new RowData(.7, 50));
Menu menu = new Menu();
MenuItem menuCel = new MenuItem("Carnet en ligne", new SelectionListener<ComponentEvent>() {
@Override
public void componentSelected(ComponentEvent ce) {
Menu me = (Menu) ce.component;
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
Info.display(mi.getId()+" - "+mi.getText(), "Chargement du menu '{0}' en cours...", mi.getId());
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL);
}
});
menuCel.setId(ComposantId.MENU_CEL);
menu.add(menuCel);
MenuItem menuBel = new MenuItem("Biblio en ligne", new SelectionListener<ComponentEvent>() {
@Override
public void componentSelected(ComponentEvent ce) {
Menu me = (Menu) ce.component;
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
Info.display(mi.getId()+" - "+mi.getText(), "Chargement du menu '{0}' en cours...", mi.getId());
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL);
}
});
menuBel.setId(ComposantId.MENU_BEL);
menu.add(menuBel);
applisBouton.setMenu(menu);
barreBoutons.add(applisBouton);
add(html, new RowData(.3, 1));
add(htmlIdentification, new RowData(.2, 50));
add(barreBoutons, new RowData(.5, 50));
}
 
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof Utilisateur) {
identificationBouton.hide();
deconnexionBouton.show();
}
}
}
/trunk/src/org/tela_botanica/client/composants/AideFenetre.java
New file
0,0 → 1,53
package org.tela_botanica.client.composants;
 
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.fx.FxConfig;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
 
public class AideFenetre extends Dialog {
 
public AideFenetre() {
setBodyBorder(false);
setButtons(Dialog.OK);
setIconStyle("icon-app-side");
setHeading("COEL - Aide");
setWidth(400);
setHeight(225);
setHideOnButtonClick(true);
BorderLayout layout = new BorderLayout();
setLayout(layout);
// Panneau Ouest
ContentPanel panel = new ContentPanel();
panel.setHeading("Sommaire");
BorderLayoutData data = new BorderLayoutData(LayoutRegion.WEST, 150, 100, 250);
data.setMargins(new Margins(0, 5, 0, 0));
data.setSplit(true);
data.setCollapsible(true);
data.setFloatable(true);
add(panel, data);
// Panneau Central
panel = new ContentPanel();
data = new BorderLayoutData(LayoutRegion.CENTER);
add(panel, data);
}
/**
* Sur une fermeture on fait un fadeOut.
*
*/
protected void onButtonPressed(Button btn) {
if (this.isHideOnButtonClick()) {
this.el().fadeOut(FxConfig.NONE);
} else {
super.onButtonPressed(btn);
}
}
}
/trunk/src/org/tela_botanica/client/composants/IdentificationFenetre.java
7,10 → 7,16
*
* http://extjs.com/license
*/
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.modeles.Utilisateur;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.fx.FxConfig;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.StatusButtonBar;
20,99 → 26,100
 
public class IdentificationFenetre extends Dialog {
 
protected StatusButtonBar buttonBar;
protected TextField<String> userName;
protected TextField<String> password;
protected Button reset;
protected Button login;
protected StatusButtonBar buttonBar;
protected TextField<String> userName;
protected TextField<String> password;
protected Button reset;
protected Button login;
 
public IdentificationFenetre() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(90);
layout.setDefaultWidth(155);
setLayout(layout);
public IdentificationFenetre() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(90);
layout.setDefaultWidth(155);
setLayout(layout);
 
setButtons("");
setIconStyle("user");
setHeading("Collections en ligne - Identification");
setModal(true);
setBodyBorder(true);
setBodyStyle("padding: 10px;background: none");
setWidth(300);
setResizable(false);
setButtons("");
setIconStyle("user");
setHeading("Collections en ligne - Identification");
setModal(true);
setBodyBorder(true);
setBodyStyle("padding: 10px;background: none");
setWidth(300);
setResizable(false);
 
KeyListener keyListener = new KeyListener() {
public void componentKeyUp(ComponentEvent event) {
validate();
}
KeyListener keyListener = new KeyListener() {
public void componentKeyUp(ComponentEvent event) {
validate();
}
 
};
};
 
userName = new TextField<String>();
userName.setMinLength(4);
userName.setFieldLabel("Courriel");
userName.addKeyListener(keyListener);
add(userName);
userName = new TextField<String>();
userName.setMinLength(4);
userName.setFieldLabel("Courriel");
userName.addKeyListener(keyListener);
add(userName);
 
password = new TextField<String>();
password.setMinLength(4);
password.setPassword(true);
password.setFieldLabel("Mot de passe");
password.addKeyListener(keyListener);
add(password);
password = new TextField<String>();
password.setMinLength(4);
password.setPassword(true);
password.setFieldLabel("Mot de passe");
password.addKeyListener(keyListener);
add(password);
 
setFocusWidget(userName);
setFocusWidget(userName);
 
buttonBar = new StatusButtonBar();
setButtonBar(buttonBar);
buttonBar = new StatusButtonBar();
setButtonBar(buttonBar);
}
 
}
@Override
protected void createButtons() {
reset = new Button("Réinitialiser");
reset.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
userName.reset();
password.reset();
validate();
userName.focus();
}
 
@Override
protected void createButtons() {
reset = new Button("Réinitialiser");
reset.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
userName.reset();
password.reset();
validate();
userName.focus();
}
});
 
});
login = new Button("Valider");
//login.disable(); // Par défaut : dois être en mode disable
login.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
onSubmit();
}
});
 
login = new Button("Valider");
//login.disable(); // Par défaut : dois être en mode disable
login.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
onSubmit();
}
});
buttonBar.add(reset);
buttonBar.add(login);
}
 
buttonBar.add(reset);
buttonBar.add(login);
}
protected void onSubmit() {
buttonBar.getStatusBar().showBusy("Chargement en cours ...");
buttonBar.disable();
Timer t = new Timer() {
 
protected void onSubmit() {
buttonBar.getStatusBar().showBusy("Chargement en cours ...");
buttonBar.disable();
Timer t = new Timer() {
@Override
public void run() {
IdentificationFenetre.this.hide();
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(new Utilisateur(userName.getValue(), true));
}
 
@Override
public void run() {
IdentificationFenetre.this.hide();
}
};
t.schedule(2);// Par défaut : 2000
}
 
};
t.schedule(2);// Par défaut : 2000
}
protected boolean hasValue(TextField<String> field) {
return field.getValue() != null && field.getValue().length() > 0;
}
 
protected boolean hasValue(TextField<String> field) {
return field.getValue() != null && field.getValue().length() > 0;
}
 
protected void validate() {
login.setEnabled(hasValue(userName) && hasValue(password) && password.getValue().length() > 3);
}
 
protected void validate() {
login.setEnabled(hasValue(userName) && hasValue(password) && password.getValue().length() > 3);
}
}
/trunk/src/org/tela_botanica/client/modeles/Utilisateur.java
New file
0,0 → 1,76
package org.tela_botanica.client.modeles;
 
import java.io.Serializable;
import java.util.Iterator;
import java.util.Set;
 
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.google.gwt.json.client.JSONObject;
 
public class Utilisateur extends BaseModelData implements Serializable {
 
/**
*
*/
private static final long serialVersionUID = 1L;
private String identifiant = null;
private boolean identifie = false;
 
public Utilisateur(String identifiant, boolean identifie) {
this.identifiant = identifiant;
this.identifie = identifie;
}
 
/**
* Constructeur avec un objet JSON
*
* @param image
*/
public Utilisateur(JSONObject utilisateur) {
// l'objet JSON est une table de hachage
Set<String> im = utilisateur.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^cp_", "");
if (utilisateur.get(cle).isString() != null) {
String valeur = utilisateur.get(cle).isString().stringValue();
this.set(cleObjet, valeur);
} else {
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = " ";
this.set(cleObjet, valeur);
}
}
}
public void setNom(String nom) {
set("nom", nom);
}
public void setPrenom(String prenom) {
set("prenom", prenom);
}
/**
* Retourne l'identifiant de l'utilisateur identifié ou un identifiant de session.
* @return String identifiant
*/
public String getIdentifiant() {
return identifiant;
}
 
/**
* Retourne vrai si utilisateur est identifié.
* @return boolean
*/
public boolean isIdentifie() {
return identifie;
}
}
/trunk/src/org/tela_botanica/client/Mediateur.java
1,9 → 1,12
package org.tela_botanica.client;
 
import org.tela_botanica.client.composants.AideFenetre;
import org.tela_botanica.client.composants.IdentificationFenetre;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.Menu;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.ListeStructure;
import org.tela_botanica.client.modeles.Utilisateur;
import org.tela_botanica.client.vues.ContenuPanneauVue;
import org.tela_botanica.client.vues.EntetePanneauVue;
import org.tela_botanica.client.vues.StructureDetailPanneauVue;
12,6 → 15,7
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.fx.FxConfig;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
116,4 → 120,34
panneauCentre.add(institutionVue);
institutionVue.rafraichir(nouvelleDonnees);
}
 
public void ouvrirAide() {
AideFenetre aideFenetre = new AideFenetre();
aideFenetre.show();
aideFenetre.el().fadeIn(FxConfig.NONE);
}
 
public void ouvrirParametres() {
//ParametreFenetre parametresFenetre = new ParametreFenetre();
//parametresFenetre.show();
}
 
public void ouvrirIdentification() {
IdentificationFenetre identifFenetre = new IdentificationFenetre();
identifFenetre.show();
// identifFenetre.el().fadeIn(FxConfig.NONE);
}
 
public void ouvrirApplis(String id) {
if (id.equals(ComposantId.MENU_CEL)) {
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");
} else if (id.equals(ComposantId.MENU_BEL)) {
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");
}
}
 
public void connecterUtilisateur(Utilisateur utilisateur) {
panneauNord.rafraichir(utilisateur);
}
}