/branches/v0.1-dora/src/org/tela_botanica/Coel.gwt.xml |
---|
New file |
0,0 → 1,29 |
<module> |
<!-- Inherit the core Web Toolkit stuff. --> |
<inherits name="com.google.gwt.user.User"/> |
<inherits name="com.extjs.gxt.ui.GXT"/> |
<!-- Inherit the default GWT style sheet. You can change --> |
<!-- the theme of your GWT application by uncommenting --> |
<!-- any one of the following lines. --> |
<inherits name="com.google.gwt.user.theme.standard.Standard"/> |
<!-- <inherits name="com.google.gwt.user.theme.chrome.Chrome"/> --> |
<!-- <inherits name="com.google.gwt.user.theme.dark.Dark"/> --> |
<!-- Other module inherits --> |
<inherits name="com.google.gwt.i18n.I18N"/> |
<!-- <inherits name="com.google.gwt.junit.JUnit"/> --> |
<extend-property name="locale" values="fr, en"/> |
<!-- Specify the app entry point class. --> |
<entry-point class="org.tela_botanica.client.Coel"/> |
<!-- Specify the application specific style sheet. --> |
<stylesheet src="Coel.css" /> |
<!-- Specify the application specific Javascript. --> |
<script src="config.js" /> |
<!-- Permet d'accélérer le temps de compilation en compilant que pour Firefox --> |
<!-- <set-property name="user.agent" value="gecko1_8"/> --> |
</module> |
/branches/v0.1-dora/src/org/tela_botanica/client/composants/IdentificationFenetre.java |
---|
New file |
0,0 → 1,156 |
package org.tela_botanica.client.composants; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
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.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.Dialog; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.button.StatusButtonBar; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.google.gwt.core.client.GWT; |
public class IdentificationFenetre extends Dialog implements Rafraichissable { |
protected StatusButtonBar barreDeBoutons; |
protected TextField<String> login; |
protected TextField<String> motDePasse; |
protected Button reinitialiserBouton; |
protected Button validerBouton; |
private Button annulerBouton; |
private String zoneInfoTpl; |
private HtmlContainer zoneInfoHtml; |
public IdentificationFenetre() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(110); |
layout.setDefaultWidth(220); |
setLayout(layout); |
setButtons(""); |
setIconStyle("icone-utilisateur"); |
setHeading("Collections en ligne - Identification"); |
setModal(true); |
setBodyBorder(true); |
setBodyStyle("padding: 10px;background: none"); |
setWidth(450); |
setResizable(false); |
setAutoWidth(false); |
KeyListener keyListener = new KeyListener() { |
public void componentKeyUp(ComponentEvent event) { |
validate(); |
} |
}; |
zoneInfoHtml = new HtmlContainer(); |
zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>"; |
//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add(""))); |
zoneInfoHtml.hide(); |
add(zoneInfoHtml); |
login = new TextField<String>(); |
login.setMinLength(4); |
login.setFieldLabel("Courriel"); |
login.addKeyListener(keyListener); |
add(login); |
motDePasse = new TextField<String>(); |
motDePasse.setMinLength(4); |
motDePasse.setPassword(true); |
motDePasse.setFieldLabel("Mot de passe"); |
motDePasse.addKeyListener(keyListener); |
add(motDePasse); |
setFocusWidget(login); |
barreDeBoutons = new StatusButtonBar(); |
setButtonBar(barreDeBoutons); |
} |
@Override |
protected void createButtons() { |
reinitialiserBouton = new Button("Réinitialiser"); |
reinitialiserBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
login.reset(); |
motDePasse.reset(); |
validate(); |
login.focus(); |
} |
}); |
validerBouton = new Button("Valider"); |
validerBouton.disable(); // Par défaut : dois être en mode disable |
validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
onSubmit(); |
} |
}); |
annulerBouton = new Button("Annuler"); |
annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
close(); |
} |
}); |
barreDeBoutons.add(reinitialiserBouton); |
barreDeBoutons.add(annulerBouton); |
barreDeBoutons.add(validerBouton); |
} |
protected void onSubmit() { |
barreDeBoutons.getStatusBar().showBusy("Vérification..."); |
barreDeBoutons.disable(); |
//IdentificationFenetre.this.hide(); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue()); |
} |
protected boolean hasValue(TextField<String> field) { |
return field.getValue() != null && field.getValue().length() > 0; |
} |
protected void validate() { |
validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("maj_utilisateur")) { |
Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)); |
if (utilisateurCourant.isIdentifie() == false) { |
barreDeBoutons.getStatusBar().clear(); |
barreDeBoutons.enable(); |
validate(); |
zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("Mauvais login ou mot de passe"))); |
zoneInfoHtml.show(); |
layout(); |
} else { |
hide(); |
} |
} |
} else { |
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/composants/ParametreFenetre.java |
---|
New file |
0,0 → 1,60 |
package org.tela_botanica.client.composants; |
import org.tela_botanica.client.RegistreId; |
import com.extjs.gxt.ui.client.GXT; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Version; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.Window; |
import com.extjs.gxt.ui.client.widget.layout.FitData; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.google.gwt.core.client.GWT; |
public class ParametreFenetre extends Window { |
public ParametreFenetre() { |
setSize(500, 300); |
setPlain(true); |
setHeading("Paramêtres et préférences"); |
setIconStyle("icone-appli"); |
setLayout(new FitLayout()); |
TabPanel panneaux = new TabPanel(); |
panneaux.setBorders(false); |
TabItem parametresOnglet = new TabItem("Paramêtres"); |
parametresOnglet.setIconStyle("icone-param"); |
parametresOnglet.addText("Paramêtres de l'application..."); |
parametresOnglet.addStyleName("pad-text"); |
TabItem preferencesOnglet = new TabItem("Préférences"); |
preferencesOnglet.addText("Préférences de l'application..."); |
preferencesOnglet.setIconStyle("icone-preference"); |
preferencesOnglet.addStyleName("pad-text"); |
TabItem aproposOnglet = new TabItem("A propos..."); |
aproposOnglet.setIconStyle("icone-information"); |
aproposOnglet.addText("<h1>"+(String) Registry.get(RegistreId.APPLI_NOM)+"</h1>"); |
aproposOnglet.addText("Code : "+(String) Registry.get(RegistreId.APPLI_CODE)); |
aproposOnglet.addText("Version : "+(String) Registry.get(RegistreId.APPLI_VERSION)); |
aproposOnglet.addText("Révision : "+(String) Registry.get(RegistreId.APPLI_REVISION)); |
aproposOnglet.addText("<hr />"); |
aproposOnglet.addText("<h1>"+"Cadre de travail"+"</h1>"); |
aproposOnglet.addText("GWT : v"+GWT.getVersion()); |
Version gxtVersion = GXT.getVersion(); |
aproposOnglet.addText("GXT : v"+gxtVersion.getRelease()); |
aproposOnglet.addText("<hr />"); |
aproposOnglet.addText("<h1>"+"Navigateur"+"</h1>"); |
aproposOnglet.addText("COEL fonctionne actuellement dans : "+GXT.getUserAgent()); |
aproposOnglet.addStyleName("pad-text"); |
panneaux.add(parametresOnglet); |
panneaux.add(preferencesOnglet); |
panneaux.add(aproposOnglet); |
add(panneaux, new FitData(4)); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/composants/AideFenetre.java |
---|
New file |
0,0 → 1,369 |
package org.tela_botanica.client.composants; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.RegistreId; |
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.Print; |
import com.extjs.gxt.ui.client.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.binder.TreeBinder; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.event.TreeEvent; |
import com.extjs.gxt.ui.client.store.Store; |
import com.extjs.gxt.ui.client.store.TreeStore; |
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.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.StoreFilterField; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormData; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.extjs.gxt.ui.client.widget.tree.Tree; |
import com.extjs.gxt.ui.client.widget.tree.TreeItem; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.Event; |
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 Menu pagePrincipale = null; |
private static TreeItem treeItemAOuvrirParDefaut = null; |
private Tree arbre = null; |
private TreeStore<Menu> magazin = null; |
private TreeBinder<Menu> binder = null; |
private StoreFilterField<Menu> filtre = null; |
private Menu sommaire = null; |
private ContentPanel sommairePanneau = null; |
private ContentPanel contenuPanneau = null; |
private HtmlContainer conteneurDuHtml; |
private LayoutContainer entetePanneau; |
public AideFenetre() { |
setBodyBorder(false); |
setButtons(Dialog.OK); |
setIconStyle(ComposantClass.ICONE_PANNEAU_LISTE); |
setHeading("COEL - Aide"); |
setWidth(675); |
setHeight(400); |
setHideOnButtonClick(true); |
setLayout(new BorderLayout()); |
// Panneau Nord : entête |
entetePanneau = new LayoutContainer(); |
entetePanneau.setLayout(new FlowLayout()); |
BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30); |
add(entetePanneau, enteteDisposition); |
inititialiserSommaireArbreFiltre(); |
// Panneau Ouest : sommaire |
sommairePanneau = new ContentPanel(); |
sommairePanneau.setScrollMode(Scroll.AUTO); |
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<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
Button boutonPlierDeplierTout = (Button) ce.source; |
String styleIcone = boutonPlierDeplierTout.getIconStyle(); |
if (styleIcone.equals(ComposantClass.ICONE_DEPLIER_TOUT)) { |
boutonPlierDeplierTout.setIconStyle(ComposantClass.ICONE_REPLIER_TOUT); |
arbre.expandAll(); |
} else if (styleIcone.equals(ComposantClass.ICONE_REPLIER_TOUT)) { |
boutonPlierDeplierTout.setIconStyle(ComposantClass.ICONE_DEPLIER_TOUT); |
arbre.collapseAll(); |
} |
} |
}); |
plierDeplierToutBtn.setIconStyle(ComposantClass.ICONE_DEPLIER_TOUT); |
plierDeplierToutBtn.setToolTip("Étendre le sommaire"); |
sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0); |
add(sommairePanneau, sommaireDisposition); |
// Chargement de l'arbre du sommaire et de son filtre |
getSommaireArbreModele(); |
// Panneau Central : contenu |
contenuPanneau = new ContentPanel(); |
contenuPanneau.setScrollMode(Scroll.AUTO); |
// Barre d'outils |
Button imprimerBtn = new Button(null, new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
Print.it(conteneurDuHtml.el().getInnerHtml()); |
} |
}); |
imprimerBtn.setIconStyle(ComposantClass.ICONE_IMPRIMER); |
contenuPanneau.getHeader().insertTool(imprimerBtn, 0); |
BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER); |
add(contenuPanneau, contenuDisposition); |
} |
private void etendreArbre(TreeItem treeItemAOuvrir) { |
arbre.setSelectedItem(treeItemAOuvrir); |
arbre.expandPath(arbre.getSelectedItem().getPath()); |
} |
private void etendreArbre(String treeItemId) { |
arbre.setSelectedItem(chercherTreeItemParItemId(treeItemId)); |
arbre.expandPath(arbre.getSelectedItem().getPath()); |
} |
private void chargerSommaireArbre() { |
arbre = new Tree(); |
arbre.getStyle().setLeafIconStyle(ComposantClass.ICONE_AIDE); |
binder = new TreeBinder<Menu>(arbre, magazin); |
binder.setAutoLoad(true); |
binder.setDisplayProperty("nom"); |
binder.init(); |
filtre.bind(magazin); |
arbre.addListener(Events.OnClick, new Listener<TreeEvent>(){ |
public void handleEvent(TreeEvent be) { |
TreeItem f = be.item; |
if (f.getModel() != null && f.getModel().get("code") != null) { |
selectionSommaire((String) f.getModel().get("code")); |
} |
} |
}); |
} |
private void attribuerIdAuxTreeItem() { |
List<TreeItem> liste = arbre.getAllItems(); |
Iterator<TreeItem> it = liste.iterator(); |
while (it.hasNext()) { |
TreeItem ti = (TreeItem) it.next(); |
if (ti.isLeaf()) { |
String code = (String) ti.getModel().get("code"); |
ti.setItemId(code); |
definirPageAOuvrirParDefaut(ti); |
} |
} |
} |
private TreeItem chercherTreeItemParItemId(String itemIdAChercher) { |
TreeItem treeItemTrouve = null; |
if (itemIdAChercher != null) { |
String itemIdAChercherEnMinuscule = itemIdAChercher.toLowerCase(); |
List<TreeItem> liste = arbre.getAllItems(); |
Iterator<TreeItem> it = liste.iterator(); |
while(it.hasNext()) { |
TreeItem ti = (TreeItem) it.next(); |
if (ti.getModel() != null) { |
String codePageAide = (String) ti.getModel().get("code"); |
if (codePageAide != null) { |
String codePageAideEnMinuscule = codePageAide.toLowerCase(); |
if (itemIdAChercherEnMinuscule.equals(codePageAideEnMinuscule)) { |
treeItemTrouve = ti; |
break; |
} |
} |
} |
} |
} |
return treeItemTrouve; |
} |
private void definirPageAOuvrirParDefaut(TreeItem menu) { |
String code = menu.getModel().get("code"); |
if (PAGE_A_OUVRIR_CODE.equals(code)) { |
treeItemAOuvrirParDefaut = menu; |
} |
} |
private void selectionSommaire(String page) { |
String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
String aidePageUrl = serviceUrl+SERVICE_NOM+"/"+page; |
GWT.log("Sélection : "+aidePageUrl, null); |
chargerPageAide(aidePageUrl); |
} |
private void chargerPageAide(String url) { |
GWT.log("Charger : "+url, null); |
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.getTarget().getTagName().equals("A")) { |
e.preventDefault(); |
String urlPageAideCible = e.getTarget().toString(); |
chargerPageAide(urlPageAideCible); |
String codePageAideCible = urlPageAideCible.substring(urlPageAideCible.lastIndexOf("/")+1); |
etendreArbre(codePageAideCible); |
GWT.log("Clic : "+urlPageAideCible+"::"+codePageAideCible, null); |
} else { |
GWT.log("Event :"+e.getType(), null); |
} |
} |
}; |
conteneurDuHtml.setId(ComposantId.PANNEAU_AIDE); |
conteneurDuHtml.setWidth(400); |
conteneurDuHtml.sinkEvents(Event.ONCLICK); |
conteneurDuHtml.setUrl(url); |
conteneurDuHtml.recalculate(); |
contenuPanneau.removeAll(); |
contenuPanneau.add(conteneurDuHtml); |
contenuPanneau.layout(); |
} |
private void inititialiserSommaireArbreFiltre() { |
filtre = new StoreFilterField<Menu>() { |
@Override |
protected boolean doSelect(Store<Menu> magazin, Menu parent, Menu enregistrement, String propriete, String filtre) { |
Boolean retour = false; |
// Seul les feuilles sont traitées par le filtre |
String nomMenu = enregistrement.getNom(); |
String nomMenuMinuscule = nomMenu.toLowerCase(); |
String nomFiltreMinuscule = filtre.toLowerCase(); |
if (nomMenuMinuscule.matches(".*"+nomFiltreMinuscule+".*")) { |
retour = true; |
} |
return retour; |
} |
}; |
filtre.setFieldLabel("Chercher"); |
filtre.setLabelStyle("font-weight:normal;"); |
filtre.setToolTip("Filtrer le sommaire"); |
filtre.setWidth(200); |
FormLayout fl = new FormLayout(); |
fl.setLabelWidth(55); |
fl.setPadding(5); |
ContentPanel fp = new ContentPanel(); |
fp.setHeaderVisible(false); |
fp.setLayout(fl); |
fp.add(filtre); |
entetePanneau.add(fp); |
} |
public void getSommaireArbreModele() { |
String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
String sommairePageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_SOMMAIRE_CODE+"/sommaire"; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, sommairePageUrl); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray = responseValue.isArray(); |
if (jsonArray != null) { |
sommaire = new Menu("Sommaire"); |
ajouterMenuRecursivement(sommaire, jsonArray); |
magazin = new TreeStore<Menu>(); |
magazin.add(sommaire, true); |
chargerSommaireArbre(); |
attribuerIdAuxTreeItem(); |
sommairePanneau.add(arbre); |
sommairePanneau.layout(); |
// Chargement de la page racine |
selectionSommaire(pagePrincipale.getCode()); |
etendreArbre(treeItemAOuvrirParDefaut); |
} else { |
GWT.log("\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
private void ajouterMenuRecursivement(Menu brancheSommaire, JSONArray tableau) { |
final int tailleMax = tableau.size(); |
for (int i = 0; i < tailleMax; i++) { |
JSONObject pageCourante = tableau.get(i).isObject() ; |
if (pageCourante != null) { |
Menu menuCourrant = new Menu(); |
if (pageCourante.get("code") != null) { |
menuCourrant.setCode(pageCourante.get("code").isString().stringValue()); |
} |
if (pageCourante.get("txt") != null) { |
menuCourrant.setNom(pageCourante.get("txt").isString().stringValue()); |
} |
if (menuCourrant.getNom() == null && menuCourrant.getCode() == null) { |
menuCourrant = (Menu) brancheSommaire.getChild((brancheSommaire.getChildCount() - 1)); |
} else { |
if (brancheSommaire != null) { |
brancheSommaire.add(menuCourrant); |
if (pagePrincipale == null) { |
pagePrincipale = menuCourrant; |
} |
} |
} |
if (pageCourante.get("liste") != null) { |
ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray()); |
} |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Menu.java |
---|
New file |
0,0 → 1,51 |
package org.tela_botanica.client.modeles; |
import java.io.Serializable; |
import com.extjs.gxt.ui.client.data.BaseTreeModel; |
import com.extjs.gxt.ui.client.data.TreeModel; |
public class Menu extends BaseTreeModel<TreeModel> implements Serializable { |
/** |
* Identifiant pour sérialisé l'objet... |
*/ |
private static final long serialVersionUID = 4; |
public Menu() { |
} |
public Menu(String nom) { |
set("nom", nom); |
} |
public Menu(String nom, String code) { |
set("nom", nom); |
set("code", code); |
} |
public Menu(String nom, BaseTreeModel[] enfant) { |
this(nom); |
for (int i = 0; i < enfant.length; i++) { |
add(enfant[i]); |
} |
} |
public String getNom() { |
return get("nom"); |
} |
public void setNom(String nom) { |
set("nom", nom); |
} |
public String getCode() { |
return get("code"); |
} |
public void setCode(String code) { |
set("code", code); |
} |
public String toString() { |
return getNom()+" - Nbre enfant :"+this.getChildCount(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/ProjetListe.java |
---|
New file |
0,0 → 1,49 |
package org.tela_botanica.client.modeles; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
/** |
* Table de hachage composée d'informations sur les Valeurs des listes, renvoyé par un objet de type DAO |
* La clé est l'id de l'entite. |
* |
* @author Grégoire DUCHÉ |
* |
*/ |
public class ProjetListe extends aDonneeListe<Projet> { |
private static final long serialVersionUID = -9030260944108896455L; |
/** |
* Constructeur sans paramètres |
*/ |
public ProjetListe() { |
super(); |
} |
/** |
* Constructeur avec paramètre |
* @param taille la taille de la table de hachage |
*/ |
public ProjetListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste de projets |
* @param dates |
*/ |
public ProjetListe(JSONArray projetsListe) { |
super(projetsListe.size()); |
final int taillemax = projetsListe.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject projetCourant = projetsListe.get(i).isObject() ; |
if (projetCourant != null) { |
Projet projet = new Projet(projetCourant); |
this.put(projet.getId(), projet); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Configuration.java |
---|
New file |
0,0 → 1,96 |
package org.tela_botanica.client.modeles; |
import java.util.LinkedHashMap; |
import com.google.gwt.i18n.client.Dictionary; |
/** |
* Classe chargeant certains paramètres de configuration à partir d'un fichier |
* javascript (config.js) |
* |
* @author Aurélien PERONNET |
* |
*/ |
public class Configuration { |
/** |
* L'url de base du serveur jrest |
*/ |
private String serviceBaseUrl; |
/** |
* L'url de base du Carnet en Ligne |
*/ |
private String celUrl; |
/** |
* Tableau associatif contenant les identifiants des listes |
*/ |
private LinkedHashMap<String, Integer> listesId = new LinkedHashMap<String, Integer>(); |
/** |
* Constructeur sans argument |
*/ |
public Configuration() { |
// on utilise le dictionnaire d'internationalisation pour lire les variables du fichier javascript |
Dictionary configuration = Dictionary.getDictionary("configuration"); |
serviceBaseUrl = configuration.get("serviceBaseUrl"); |
celUrl = configuration.get("celUrl"); |
listesId.put("stpr", Integer.valueOf(configuration.get("listeStpr"))); |
listesId.put("stpu", Integer.valueOf(configuration.get("listeStpu"))); |
listesId.put("statut", Integer.valueOf(configuration.get("listeStatut"))); |
listesId.put("fonction", Integer.valueOf(configuration.get("listeFonction"))); |
listesId.put("botaAcronyme", Integer.valueOf(configuration.get("listeAcronymeBota"))); |
listesId.put("localStockage", Integer.valueOf(configuration.get("listeStockageLocal"))); |
listesId.put("meubleStockage", Integer.valueOf(configuration.get("listeStockageMeuble"))); |
listesId.put("parametreStockage", Integer.valueOf(configuration.get("listeStockageParametre"))); |
listesId.put("autreCollection", Integer.valueOf(configuration.get("listeCollectionAutre"))); |
listesId.put("opRestau", Integer.valueOf(configuration.get("listeRestaurationOperation"))); |
listesId.put("onep", Integer.valueOf(configuration.get("listeONEP"))); |
listesId.put("autreMateriel", Integer.valueOf(configuration.get("listeMaterielAutre"))); |
listesId.put("poisonTraitement", Integer.valueOf(configuration.get("listeEmpoisonnement"))); |
listesId.put("insecteTraitement", Integer.valueOf(configuration.get("listeDesinsectisation"))); |
listesId.put("actionValorisation", Integer.valueOf(configuration.get("listeValorisationAction"))); |
listesId.put("continentEtFr", Integer.valueOf(configuration.get("listeContinentEtFr"))); |
listesId.put("typeRecherche", Integer.valueOf(configuration.get("listeRechercheType"))); |
listesId.put("pays", Integer.valueOf(configuration.get("listePays"))); |
listesId.put("prefixe", Integer.valueOf(configuration.get("listePrefixes"))); |
listesId.put("suffixes", Integer.valueOf(configuration.get("listeSuffixes"))); |
listesId.put("sexe", Integer.valueOf(configuration.get("listeSexe"))); |
listesId.put("tel", Integer.valueOf(configuration.get("listeTel"))); |
listesId.put("region", Integer.valueOf(configuration.get("listeRegions"))); |
} |
/** |
* Accesseur pour l'url de base du serveur jrest |
* |
* @return une url de la forme http://emplacement_serveur/jrest |
*/ |
public String getServiceBaseUrl() { |
return serviceBaseUrl; |
} |
/** |
* Accesseur pour l'url de base du Carnet en Ligne |
* |
* @return une url de la forme http://emplacement_serveur/ |
*/ |
public String getCelUrl() { |
return celUrl; |
} |
/** |
* Accesseur pour l'id d'une liste |
* |
* @return l'identifiant de la liste ou null s'il n'est pas trouvé |
*/ |
public Integer getListeId(String code) { |
if (listesId.containsKey(code)) { |
return listesId.get(code); |
} |
return null; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/aDonneeListe.java |
---|
New file |
0,0 → 1,28 |
package org.tela_botanica.client.modeles; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
abstract public class aDonneeListe<T> extends HashMap<String,T> { |
private static final long serialVersionUID = -8567158151109232877L; |
public aDonneeListe() { |
super(); |
} |
public aDonneeListe(int taille) { |
super(taille); |
} |
public List<T> toList() { |
List<T> listeACreer = new ArrayList<T>(); |
Iterator<String> it = keySet().iterator(); |
while (it.hasNext()) { |
listeACreer.add((T) get(it.next())); |
} |
return listeACreer; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/PublicationListe.java |
---|
New file |
0,0 → 1,33 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import com.google.gwt.json.client.JSONObject; |
public class PublicationListe extends aDonneeListe<Publication> { |
private static final long serialVersionUID = 2600314321196345072L; |
public PublicationListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste d'institutions |
* @param dates |
*/ |
public PublicationListe(JSONObject publications) { |
super(publications.size()) ; |
Iterator<String> it = publications.keySet().iterator(); |
while (it.hasNext()) { |
JSONObject publicationCourante = publications.get(it.next()).isObject() ; |
if (publicationCourante != null) { |
Publication publication = new Publication(publicationCourante); |
this.put(publication.getId(), publication); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Utilisateur.java |
---|
New file |
0,0 → 1,138 |
package org.tela_botanica.client.modeles; |
import java.util.Collection; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class Utilisateur extends aDonnee { |
public Utilisateur(String id, boolean identifie) { |
set("id_personne", id); |
set("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 setId(String id) { |
set("id_personne", id); |
} |
public void setNomComplet(String nom_complet) { |
set("fmt_nom_complet", nom_complet); |
} |
public void setPrenom(String prenom) { |
set("prenom", prenom); |
} |
public void setNom(String nom) { |
set("nom", nom); |
} |
public void setIdentifie(Boolean bool) { |
set("identifie", bool); |
} |
public void setLogin(String l) { |
set("login", l); |
} |
public void setMotDePasse(String mdp) { |
set("mot_de_passe", mdp); |
} |
/** |
* Retourne l'id de l'utilisateur ou l'identifiant de session si la personne n'est pas identifiée. |
* @return String id de l'utilisateur |
*/ |
public String getId() { |
return get("id_personne"); |
} |
/** |
* Retourne le nom complet et formaté de l'utilisateur |
* @return String nom complet |
*/ |
public String getNomComplet() { |
return get("fmt_nom_complet"); |
} |
/** |
* Retourne le prénom de l'utilisateur |
* @return String prénom |
*/ |
public String getPrenom() { |
return get("prenom"); |
} |
/** |
* Retourne le nom de l'utilisateur |
* @return String nom |
*/ |
public String getNom() { |
return get("nom"); |
} |
/** |
* Retourne le login de l'utilisateur ou l'identifiant de session si la personne n'est pas identifiée. |
* @return String login |
*/ |
public String getLogin() { |
return get("login"); |
} |
/** |
* Retourne le mot de passe de l'utilisateur |
* @return String mot de passe |
*/ |
public String getMotDePasse() { |
return get("mot_de_passe"); |
} |
/** |
* Retourne vrai si utilisateur est identifié. |
* @return boolean |
*/ |
public boolean isIdentifie() { |
return get("identifie"); |
} |
public String toString() { |
String chaine = new String(); |
for (Iterator<String> it = this.getPropertyNames().iterator(); it.hasNext();) { |
// Si elle est associée à une valeur, nous l'ajoutons |
String cle = it.next(); |
// GXT ne prend pas en compte /n ou /r/n... |
chaine += cle+" : "+get(cle)+"\n"; |
} |
return chaine; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureAPersonneListe.java |
---|
New file |
0,0 → 1,51 |
package org.tela_botanica.client.modeles; |
import java.util.LinkedHashMap; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
/** |
* Table de hachage composée d'informations sur les Structures et les Personnes, renvoyé par un objet de type DAO |
* La clé est une concaténation des clés primaires de la table coel_structure_a_personne séparées par un tiret "-". |
* |
* @author david delon |
* |
*/ |
public class StructureAPersonneListe extends LinkedHashMap<String, StructureAPersonne> { |
/** |
* Constructeur sans paramètres |
*/ |
public StructureAPersonneListe() { |
super(); |
} |
/** |
* Constructeur avec paramètre |
* @param taille la taille de la table de hachage |
*/ |
public StructureAPersonneListe(int taille) |
{ |
super(taille); |
} |
/** |
* Constructeur pour une liste de StructureAPersonne |
* @param dates |
*/ |
public StructureAPersonneListe(JSONArray structures) |
{ |
super(structures.size()) ; |
final int taillemax = structures.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject structureAPersonneCourante = structures.get(i).isObject() ; |
if (structureAPersonneCourante != null) { |
StructureAPersonne structureAPersonne = new StructureAPersonne(structureAPersonneCourante); |
this.put(structureAPersonne.getId(), structureAPersonne); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/InterneValeur.java |
---|
New file |
0,0 → 1,31 |
package org.tela_botanica.client.modeles; |
import com.extjs.gxt.ui.client.data.BaseModelData; |
public class InterneValeur extends BaseModelData { |
public InterneValeur() { |
} |
public InterneValeur(String abr, String nom) { |
setAbr(abr); |
setNom(nom); |
} |
public String getNom() { |
return get("nom"); |
} |
public void setNom(String nom) { |
set("nom", nom); |
} |
public String getAbr() { |
return get("abr"); |
} |
public void setAbr(String abr) { |
set("abr", abr); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Personne.java |
---|
New file |
0,0 → 1,196 |
package org.tela_botanica.client.modeles; |
import java.util.Collection; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.json.client.JSONObject; |
public class Personne extends aDonnee { |
public static final String PREFIXE = "cp"; |
public static final String TELEPHONE_FIXE = "FIX"; |
public static final String TELEPHONE_GSM = "GSM"; |
/** |
* Constructeur vide |
*/ |
public Personne() { |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public Personne(JSONObject liste) { |
// l'objet JSON est une table de hachage |
Set<String> im = liste.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^" + PREFIXE + "_", ""); |
if (liste.get(cle).isString() != null) { |
String valeur = liste.get(cle).isString().stringValue(); |
this.set(cleObjet, valeur); |
} else { |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = " "; |
this.set(cleObjet, valeur); |
} |
} |
} |
//Ajout du champ courriel principal |
this.set("courriel_princ", this.getInfoDenormaliseParPosition(this.renvoyerValeurCorrecte("truk_courriel"), 1)); |
} |
// ID PERSONNE |
public String getId() { |
return renvoyerValeurCorrecte("id_personne"); |
} |
// NOM COMPLET |
public String getNomComplet() { |
return renvoyerValeurCorrecte("fmt_nom_complet"); |
} |
// NOM |
public String getNom() { |
return renvoyerValeurCorrecte("nom"); |
} |
// PRÉNOM |
public String getPrenom() { |
return renvoyerValeurCorrecte("prenom"); |
} |
public Date getDate(String nomChamp) { |
String strDate = renvoyerValeurCorrecte(nomChamp); |
Date dateRetour = null; |
try |
{ |
if ((strDate != null) && (!strDate.equals("0000-00-00"))) { |
dateRetour = DateTimeFormat.getFormat("yyyy-MM-dd").parseStrict(strDate); |
} |
} catch (StringIndexOutOfBoundsException e) { |
GWT.log("Impossible de parser la date " + strDate, e); |
} |
return dateRetour; |
} |
// TÉLÉPHONE |
public String getTelephone() { |
return renvoyerValeurCorrecte("truk_telephone"); |
} |
public void setTelephone(String t) { |
this.set("truk_telephone", t); |
} |
public void ajouterTelephone(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_telephone", type, valeur); |
} |
public String selectionnerTelephone(String type) { |
return getInfoDenormaliseParType(renvoyerValeurCorrecte("truk_telephone"), type); |
} |
// FAX |
public String getFax() { |
return renvoyerValeurCorrecte("truk_fax"); |
} |
public void setFax(String f) { |
this.set("truk_fax", f); |
} |
public void ajouterFax(Object valeur) { |
ajouterChaineDenormalise("truk_fax", valeur); |
} |
public String selectionnerFax(int position) { |
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_fax"), position); |
} |
// COURRIEL |
public String getCourriel() { |
return renvoyerValeurCorrecte("truk_courriel"); |
} |
public void setCourriel(String c) { |
this.set("truk_courriel", c); |
} |
public void ajouterCourriel(String c) { |
ajouterChaineDenormalise("truk_courriel", c); |
} |
public String selectionnerCourriel(int position) { |
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_courriel"), position); |
} |
// SPÉCIALITÉ |
public String getSpecialite() { |
return renvoyerValeurCorrecte("ce_truk_specialite"); |
} |
public void setSpecialite(String s) { |
// Pas de liste pour l'instant, donc tout passe dans "Autre". |
setChaineDenormaliseUnique("ce_truk_specialite", "AUTRE", s); |
} |
public String afficherSpecialite() { |
return getChaineDenormaliseUnique("ce_truk_specialite"); |
} |
public Object obtenirValeurChamp(String nomChamp) { |
return renvoyerValeurCorrecte(nomChamp); |
} |
public String getString(String champ) { |
return String.valueOf(renvoyerValeurCorrecte(champ)); |
} |
public void setNaissanceDate(Date naissanceDate) { |
if (naissanceDate != null) { |
this.set("naissance_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(naissanceDate)); |
} |
} |
public void setDecesDate(Date decesDate) { |
if (decesDate != null) { |
this.set("deces_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(decesDate)); |
} |
} |
public void setFmtNomComplet(String prefixe, String suffixe) { |
String fmtNomComplet = ""; |
if ((prefixe != null)&&(!prefixe.trim().equals(""))) { |
fmtNomComplet += prefixe + " "; |
} |
if ((this.getPrenom()!=null)&&(!this.getPrenom().trim().equals(""))) { |
fmtNomComplet += this.getPrenom() + " "; |
} |
if ((this.getNom()!=null)&&(!this.getNom().trim().equals(""))) { |
fmtNomComplet += this.getNom() + " "; |
} |
if ((suffixe!=null)&&(!suffixe.trim().equals(""))) { |
fmtNomComplet += suffixe; |
} |
this.set("fmt_nom_complet", fmtNomComplet); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Collection.java |
---|
New file |
0,0 → 1,106 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class Collection extends aDonnee { |
private static final long serialVersionUID = 3295310312337145716L; |
public static final String PREFIXE = "cc"; |
private CollectionBotanique botanique = null; |
public Collection() { |
} |
public Collection(JSONObject collection) { |
// l'objet JSON est une table de hachage |
Set<String> im = collection.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (collection.get(cle).isString() != null) { |
valeur = collection.get(cle).isString().stringValue(); |
} |
this.set(cleObjet, valeur); |
} |
} |
} |
// BOTANIQUE |
public CollectionBotanique getBotanique() { |
return botanique; |
} |
public void setBotanique(CollectionBotanique botaniqueAStocker) { |
botanique = botaniqueAStocker; |
} |
// ID |
public String getId() { |
return renvoyerValeurCorrecte("id_collection"); |
} |
public void setId(String idCollection) { |
this.set("id_collection", idCollection); |
} |
// CE PROJET |
public String getIdProjet() { |
return renvoyerValeurCorrecte("ce_projet"); |
} |
public void setIdProjet(String idProjet) { |
this.set("ce_projet", idProjet); |
} |
// CE STRUCTURE |
public String getIdStructure() { |
return renvoyerValeurCorrecte("ce_structure"); |
} |
public void setIdStructure(String idStructure) { |
this.set("ce_structure", idStructure); |
} |
// GUID |
public String getGuid() { |
return renvoyerValeurCorrecte("guid"); |
} |
public void setGuid(String guid) { |
this.set("guid", guid); |
} |
// NOM |
public String getNom() { |
return renvoyerValeurCorrecte("nom"); |
} |
public void setNom(String nom) { |
this.set("nom", nom); |
} |
// TRUK IDENTIFIANT ALTERNATIF |
public String getIdAlternatif() { |
return renvoyerValeurCorrecte("truk_identifiant_alternatif"); |
} |
public void setIdAlternatif(String idAlter) { |
this.set("truk_identifiant_alternatif", idAlter); |
} |
// +--------------------------------------------------------------------------------------------------------------+ |
// STRUCTURE NOM |
public String getStructureNom() { |
return renvoyerValeurCorrecte("structure_nom"); |
} |
// STRUCTURE VILLE |
public String getStructureVille() { |
return renvoyerValeurCorrecte("structure_ville"); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureConservation.java |
---|
New file |
0,0 → 1,232 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class StructureConservation extends aDonnee { |
public static final String PREFIXE = "csc"; |
/** |
* Constructeur vide |
* |
*/ |
public StructureConservation() { |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public StructureConservation(JSONObject conservation) { |
// L'objet JSON est une table de hachage |
Set<String> im = conservation.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (conservation.get(cle).isString() != null) { |
valeur = conservation.get(cle).isString().stringValue(); |
} |
this.set(cleObjet, valeur); |
} |
} |
} |
// FORMATION |
public String getFormation() { |
return renvoyerValeurCorrecte("mark_formation"); |
} |
public void setFormation(String f) { |
this.set("mark_formation", f); |
} |
// FORMATION INFO |
public String getFormationInfo() { |
return renvoyerValeurCorrecte("formation"); |
} |
public void setFormationInfo(String f) { |
this.set("formation", f); |
} |
// FORMATION INTÉRÊT |
public String getFormationInteret() { |
return renvoyerValeurCorrecte("mark_formation_interet"); |
} |
public void setFormationInteret(String f) { |
this.set("mark_formation_interet", f); |
} |
// STOCKAGE LOCAL |
public String getStockageLocal() { |
return renvoyerValeurCorrecte("truk_stockage_local"); |
} |
public void setStockageLocal(String sl) { |
this.set("truk_stockage_local", sl); |
} |
public void setStockageLocal(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_stockage_local", type, valeur); |
} |
// STOCKAGE MEUBLE |
public String getStockageMeuble() { |
return renvoyerValeurCorrecte("truk_stockage_meuble"); |
} |
public void setStockageMeuble(String sm) { |
this.set("truk_stockage_meuble", sm); |
} |
public void setStockageMeuble(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_stockage_meuble", type, valeur); |
} |
// STOCKAGE PARAMÊTRE |
public String getStockageParametre() { |
return renvoyerValeurCorrecte("truk_stockage_parametre"); |
} |
public void setStockageParametre(String sl) { |
this.set("truk_stockage_parametre", sl); |
} |
public void setStockageParametre(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_stockage_parametre", type, valeur); |
} |
// COLLECTION COMMUNE |
public String getCollectionCommune() { |
return renvoyerValeurCorrecte("mark_collection_commune"); |
} |
public void setCollectionCommune(String ccm) { |
this.set("mark_collection_commune", ccm); |
} |
// COLLECTION AUTRE |
public String getCollectionAutre() { |
return renvoyerValeurCorrecte("truk_collection_autre"); |
} |
public void setCollectionAutre(String ca) { |
this.set("truk_collection_autre", ca); |
} |
public void setCollectionAutre(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_collection_autre", type, valeur); |
} |
// ACCÈS CONTROLÉ |
public String getAccesControle() { |
return renvoyerValeurCorrecte("mark_acces_controle"); |
} |
public void setAccesControle(String ac) { |
this.set("mark_acces_controle", ac); |
} |
// RESTAURATION |
public String getRestauration() { |
return renvoyerValeurCorrecte("mark_restauration"); |
} |
public void setRestauration(String ccm) { |
this.set("mark_restauration", ccm); |
} |
// RESTAURATION OPÉRATION |
public String getRestaurationOperation() { |
return renvoyerValeurCorrecte("truk_restauration_operation"); |
} |
public void setRestaurationOperation(String ro) { |
this.set("truk_restauration_operation", ro); |
} |
public void setRestaurationOperation(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_restauration_operation", type, valeur); |
} |
// MATERIEL CONSERVATION |
public String getMaterielConservation() { |
return renvoyerValeurCorrecte("ce_materiel_conservation"); |
} |
public void setMaterielConservation(String mc) { |
this.set("ce_materiel_conservation", mc); |
} |
// MATERIEL AUTRE |
public String getMaterielAutre() { |
return renvoyerValeurCorrecte("truk_materiel_autre"); |
} |
public void setMaterielAutre(String ma) { |
this.set("truk_materiel_autre", ma); |
} |
public void setMaterielAutre(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_materiel_autre", type, valeur); |
} |
// TRAITEMENT |
public String getTraitement() { |
return renvoyerValeurCorrecte("mark_traitement"); |
} |
public void setTraitement(String t) { |
this.set("mark_traitement", t); |
} |
// TRAITEMENTS |
public String getTraitements() { |
return renvoyerValeurCorrecte("truk_traitement"); |
} |
public void setTraitements(String t) { |
this.set("truk_traitement", t); |
} |
public void setTraitements(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_traitement", type, valeur); |
} |
// ACQUISITION COLLECTION |
public String getAcquisitionCollection() { |
return renvoyerValeurCorrecte("mark_acquisition_collection"); |
} |
public void setAcquisitionCollection(String ac) { |
this.set("mark_acquisition_collection", ac); |
} |
// ACQUISITION ECHANTILLON |
public String getAcquisitionEchantillon() { |
return renvoyerValeurCorrecte("mark_acquisition_echantillon"); |
} |
public void setAcquisitionEchantillon(String ae) { |
this.set("mark_acquisition_echantillon", ae); |
} |
// ACQUISITION TRAITEMENT |
public String getAcquisitionTraitement() { |
return renvoyerValeurCorrecte("mark_acquisition_traitement"); |
} |
public void setAcquisitionTraitement(String at) { |
this.set("mark_acquisition_traitement", at); |
} |
// ACQUISITION TRAITEMENT POISON |
public String getAcquisitionTraitementPoison() { |
return renvoyerValeurCorrecte("truk_acquisition_traitement_poison"); |
} |
public void setAcquisitionTraitementPoison(String atp) { |
this.set("truk_acquisition_traitement_poison", atp); |
} |
public void setAcquisitionTraitementPoison(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_acquisition_traitement_poison", type, valeur); |
} |
// ACQUISITION TRAITEMENT INSECTE |
public String getAcquisitionTraitementInsecte() { |
return renvoyerValeurCorrecte("truk_acquisition_traitement_insecte"); |
} |
public void setAcquisitionTraitementInsecte(String ati) { |
this.set("truk_acquisition_traitement_insecte", ati); |
} |
public void setAcquisitionTraitementInsecte(String type, Object valeur) { |
ajouterChaineDenormaliseAvecType("truk_acquisition_traitement_insecte", type, valeur); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/UtilisateurAsyncDao.java |
---|
New file |
0,0 → 1,175 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.UtilDAO; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONBoolean; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
/** |
* Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour |
* |
*/ |
public class UtilisateurAsyncDao { |
private static final String SERVICE_NOM = "CoelUtilisateur"; |
private Utilisateur utilisateur = null; |
private String urlServiceBase = null; |
private Rafraichissable vueARafraichir = null; |
/** |
* Constructeur |
* @param retour : méthode appellée en retour d'appel. |
*/ |
public UtilisateurAsyncDao(Rafraichissable r) { |
vueARafraichir = r; |
urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
} |
/** |
* Méthode de classe d'appel du service des gestion d'identification. |
*/ |
public void getEtatUtilisateur() { |
// Recherche identifiant utilisateur identifie |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/") ; |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP |
} |
public void onResponseReceived(Request request, Response response) { |
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
// Identifiant utilisateur ou identifiant de session si non identifié |
String login = ((JSONString) jsonArray.get(0)).stringValue(); |
// Drapeau leve si utilisateur deja identifié |
boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue(); |
utilisateur.setIdentifie(identifie); |
utilisateur.setLogin(login); |
vueARafraichir.rafraichir(utilisateur); |
} |
} |
}) ; |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
/** |
* Méthode déconnectant un utilisateur de l'application. |
* @param identifiant de l'utilisateur à déconnecter. |
*/ |
public void deconnecterUtilisateur() { |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/"+utilisateur.getId()) ; |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP |
} |
public void onResponseReceived(Request request, Response response) { |
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
// Identifiant utilisateur ou identifiant de session si non identifié |
String id = ((JSONString) jsonArray.get(0)).stringValue(); |
// Drapeau levé si l'utilisateur est déjà identifié |
boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue(); |
// Nous réinitialisons l'utilisateur |
utilisateur = new Utilisateur(id, identifie); |
GWT.log(utilisateur.toString(), null); |
vueARafraichir.rafraichir(utilisateur); |
} |
} |
}) ; |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
/** |
* Méthode connectant un utilisateur à l'application. |
* @param Utilisateur l'utilisateur courant. |
*/ |
public void connecterUtilisateur () { |
String[] parametres = new String[2]; |
parametres[0] = utilisateur.getLogin(); |
parametres[1] = utilisateur.getMotDePasse(); |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
if (jsonArray.size() > 0) { |
// Identifiant de l'utilisateur ou identifiant de session si non identifié |
utilisateur.setId(((JSONString) jsonArray.get(0)).stringValue()); |
// Drapeau levé si l'utilisateur est déjà identifié |
GWT.log(jsonArray.toString(), null); |
utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue()); |
// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentaires |
if (jsonArray.size() > 2) { |
// Nom complet de l'utilisateur |
if (jsonArray.get(2).isString() != null) { |
utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue()); |
} |
// Prénom de l'utilisateur |
if (jsonArray.get(3).isString() != null) { |
utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue()); |
} |
// Nom de l'utilisateur |
if (jsonArray.get(4).isString() != null) { |
utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue()); |
} |
GWT.log(utilisateur.toString(), null); |
} |
vueARafraichir.rafraichir(utilisateur); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
} |
Property changes: |
Added: svn:mergeinfo |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Valeur.java |
---|
New file |
0,0 → 1,84 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class Valeur extends aDonnee { |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public Valeur(JSONObject liste) { |
// l'objet JSON est une table de hachage |
Set<String> im = liste.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("^cmlv_", ""); |
if (liste.get(cle).isString() != null) { |
String valeur = liste.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 Valeur(String id, String nom, String abr, String description) { |
this.set("id_valeur", id); |
this.set("nom", nom); |
this.set("abreviation", abr); |
this.set("description", description); |
} |
/** Accesseur à l'identifiant de la valeur. |
* |
* @return String l'identifiant de la valeur. |
*/ |
public String getId() { |
return (String) renvoyerValeurCorrecte("id_valeur"); |
} |
/** Accesseur au nom de la valeur. |
* |
* @return String le nom de la valeur. |
*/ |
public String getNom() { |
return (String) renvoyerValeurCorrecte("nom"); |
} |
/** Accesseur à l'abréviation de la valeur. |
* |
* @return String l'abréviation de la valeur. |
*/ |
public String getAbreviation() { |
return (String) renvoyerValeurCorrecte("abreviation"); |
} |
/** Accesseur à la description de la valeur. |
* |
* @return String la descripion de la valeur. |
*/ |
public String getDescription() { |
return (String) renvoyerValeurCorrecte("description"); |
} |
/** Accesseur à l'identifiant parent de la valeur. |
* |
* @return String l'identifiant de la valeur. |
*/ |
public String getParentId() { |
return (String) renvoyerValeurCorrecte("ce_parent"); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/ValeurListe.java |
---|
New file |
0,0 → 1,82 |
package org.tela_botanica.client.modeles; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONString; |
/** |
* Table de hachage composée d'informations sur les Valeurs des listes, renvoyé par un objet de type DAO |
* La clé est le nom de l'entite + le nom de l'entite parente |
* |
* @author david delon |
* |
*/ |
public class ValeurListe extends aDonneeListe<Valeur> { |
/** |
* Identifiant pour sérialisé l'objet... |
*/ |
private static final long serialVersionUID = 7784635999621813450L; |
private int id = 0; |
/** |
* Constructeur sans paramètres |
*/ |
public ValeurListe() { |
super(); |
} |
/** |
* Constructeur avec paramètre |
* @param taille la taille de la table de hachage |
*/ |
public ValeurListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste d'institutions |
* @param dates |
*/ |
public ValeurListe(JSONArray liste) { |
super(liste.size()); |
this.constuireObjet(liste); |
} |
public ValeurListe(JSONString listeId, JSONArray listeValeurs) { |
super(listeValeurs.size()); |
this.setId(Integer.parseInt(listeId.stringValue())); |
this.constuireObjet(listeValeurs); |
} |
private void constuireObjet(JSONArray liste) { |
final int taillemax = liste.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject listeValeur = liste.get(i).isObject(); |
if (listeValeur != null) { |
Valeur valeur = new Valeur(listeValeur); |
this.put(valeur.getId(), valeur); |
} |
} |
} |
/** |
* @param id l'identifiant à définir |
*/ |
public void setId(int id) { |
this.id = id; |
} |
/** |
* @return l'identifiant de la liste |
*/ |
public Integer getId() { |
return id; |
} |
public void ajouter(Valeur val) { |
this.put(val.getId(), val); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Structure.java |
---|
New file |
0,0 → 1,322 |
package org.tela_botanica.client.modeles; |
import java.util.Date; |
import java.util.Iterator; |
import java.util.Set; |
import com.extjs.gxt.ui.client.data.BaseModelData; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.json.client.JSONObject; |
public class Structure extends aDonnee { |
public static final String PREFIXE = "cs"; |
public static final String URL_SITE = "WEB"; |
public static final String URL_LOGO = "LOGO"; |
private BaseModelData urls = null; |
private StructureAPersonneListe personnel = null; |
private StructureValorisation valorisation = null; |
private StructureConservation conservation = null; |
/** |
* Constructeur vide |
* |
*/ |
public Structure() { |
// Constructions du tableau des urls interne |
urls = new BaseModelData(); |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public Structure(JSONObject institution) { |
// Constructions du tableau des urls interne |
urls = new BaseModelData(); |
// l'objet JSON est une table de hachage |
Set<String> im = institution.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (institution.get(cle).isString() != null) { |
valeur = institution.get(cle).isString().stringValue(); |
} |
if (cleObjet.equals("truk_url")) { |
this.setUrl(valeur); |
} else { |
this.set(cleObjet, valeur); |
} |
} |
} |
} |
public String getId() { |
return (String) renvoyerValeurCorrecte("id_structure"); |
} |
public void setId(String idStructure) { |
this.set("id_structure", idStructure); |
} |
public String getIdProjet() { |
return (String) renvoyerValeurCorrecte("ce_projet"); |
} |
public void setIdProjet(String idProjet) { |
this.set("ce_projet", idProjet); |
} |
public String getIdMere() { |
return (String) renvoyerValeurCorrecte("ce_mere"); |
} |
public void setIdMere(String idMere) { |
this.set("ce_mere", idMere); |
} |
public String getGuid() { |
return (String) renvoyerValeurCorrecte("guid"); |
} |
public void setGuid(String guid) { |
this.set("guid", guid); |
} |
public String getIdAlternatif() { |
return (String) renvoyerValeurCorrecte("truk_identifiant_alternatif"); |
} |
public void setIdAlternatif(String idAlter) { |
this.set("truk_identifiant_alternatif", idAlter); |
} |
public String getNom() { |
return (String) renvoyerValeurCorrecte("nom"); |
} |
public void setNom(String nom) { |
this.set("nom", nom); |
} |
public String getNomAlternatif() { |
return (String) renvoyerValeurCorrecte("truk_nom_alternatif"); |
} |
public String getDescription() { |
return (String) renvoyerValeurCorrecte("description"); |
} |
public String getType() { |
return (String) renvoyerValeurCorrecte("ce_type"); |
} |
public void setType(String type) { |
this.set("ce_type", type); |
} |
public String getTypePrive() { |
return (String) renvoyerValeurCorrecte("ce_truk_type_prive"); |
} |
public void setTypePrive(String typePrive) { |
this.set("ce_truk_type_prive", typePrive); |
} |
public String getTypePublic() { |
return (String) renvoyerValeurCorrecte("ce_truk_type_public"); |
} |
public void setTypePublic(String typePublic) { |
this.set("ce_truk_type_public", typePublic); |
} |
public String getAdresse() { |
return (String) renvoyerValeurCorrecte("adresse_01"); |
} |
public void setAdresse(String adr) { |
this.set("adresse_01", adr); |
} |
public String getAdresseComplement() { |
return (String) renvoyerValeurCorrecte("adresse_02"); |
} |
public String getDateFondationFormatMysql() { |
return (String) renvoyerValeurCorrecte("date_fondation"); |
} |
public String getDateFondationFormatLong() { |
String dateFormatee = ""; |
Date dateFondation = getDateFondation(); |
if (dateFondation != null) { |
dateFormatee = DateTimeFormat.getLongDateFormat().format(dateFondation); |
} |
return dateFormatee; |
} |
public Date getDateFondation() { |
Date fondationDate = null; |
String fondationChaine = (String) renvoyerValeurCorrecte("date_fondation"); |
if (!fondationChaine.isEmpty() && !fondationChaine.equals("0000-00-00")) { |
fondationDate = DateTimeFormat.getFormat("yyyy-MM-dd").parseStrict(fondationChaine); |
} |
return fondationDate; |
} |
public void setDateFondation(Date dateFondation) { |
if (dateFondation != null) { |
this.set("date_fondation", DateTimeFormat.getFormat("yyyy-MM-dd").format(dateFondation)); |
} |
} |
public void setDateFondation(String dateFondation) { |
if (dateFondation != null) { |
this.set("date_fondation", dateFondation); |
} |
} |
public String getCodePostal() { |
return (String) renvoyerValeurCorrecte("code_postal"); |
} |
public void setCodePostal(String codePostal) { |
this.set("code_postal", codePostal); |
} |
public String getVille() { |
return (String) renvoyerValeurCorrecte("ville"); |
} |
public void setVille(String ville) { |
this.set("ville", ville); |
} |
public String getRegion() { |
return (String) renvoyerValeurCorrecte("region"); |
} |
public void setRegion(String region) { |
this.set("region", region); |
} |
public String getPays() { |
return (String) renvoyerValeurCorrecte("pays"); |
} |
public void setPays(String pays) { |
this.set("pays", pays); |
} |
public String getLatitude() { |
return (String) renvoyerValeurCorrecte("latitude"); |
} |
public String getLongitude() { |
return (String) renvoyerValeurCorrecte("longitude"); |
} |
public String getTelephone() { |
return (String) renvoyerValeurCorrecte("telephone"); |
} |
public void setTelephone(String tel) { |
this.set("telephone", tel); |
} |
public String getFax() { |
return (String) renvoyerValeurCorrecte("fax"); |
} |
public void setFax(String fax) { |
this.set("fax", fax); |
} |
public String getCourriel() { |
return (String) renvoyerValeurCorrecte("courriel"); |
} |
public void setCourriel(String courriel) { |
this.set("courriel", courriel); |
} |
public String getUrl(String type) { |
return urls.get(type); |
} |
public String getUrl() { |
String urlsDenormalise = ""; |
Set<String> proprietes = urls.getProperties().keySet(); |
for (Iterator<String> it = proprietes.iterator(); it.hasNext();) { |
String cle = it.next(); |
urlsDenormalise += cle+"##"+urls.get(cle)+";;"; |
} |
urlsDenormalise.replaceFirst(";;$", ""); |
return urlsDenormalise; |
} |
public void setUrl(String urlsDenormalise) { |
if (urlsDenormalise != null && !urlsDenormalise.equals("")) { |
//GWT.log(urlsDenormalise, null); |
String[] tableauUrls = urlsDenormalise.split(";;"); |
for (int i = 0; i < tableauUrls.length; i++) { |
String url = tableauUrls[i]; |
//GWT.log("\t"+url, null); |
String[] tableauUrl = url.split("##"); |
if (tableauUrl.length == 2) { |
//GWT.log("\t\t"+tableauUrl[0]+"-"+tableauUrl[1], null); |
urls.set(tableauUrl[0], tableauUrl[1]); |
} |
} |
} |
} |
public void setUrl(String type, String url) { |
if (url != null) { |
urls.set(type, url); |
} |
} |
public int getNbrePersonne() { |
if (renvoyerValeurCorrecte("nbre_personne").equals("")) { |
return 0; |
} else { |
return Integer.parseInt(renvoyerValeurCorrecte("nbre_personne")); |
} |
} |
public void setNbrePersonne(int nbrePersonne) { |
this.set("nbre_personne", Integer.toString(nbrePersonne)); |
} |
public String getConditionAcces() { |
return (String) renvoyerValeurCorrecte("condition_acces"); |
} |
public String getConditionUsage() { |
return (String) renvoyerValeurCorrecte("condition_usage"); |
} |
public StructureAPersonneListe getPersonnel() { |
return personnel; |
} |
public void setPersonnel(StructureAPersonneListe personnelAStocker) { |
personnel = personnelAStocker; |
} |
public StructureValorisation getValorisation() { |
return valorisation; |
} |
public void setValorisation(StructureValorisation valorisationAStocker) { |
valorisation = valorisationAStocker; |
} |
public StructureConservation getConservation() { |
return conservation; |
} |
public void setConservation(StructureConservation conservationAStocker) { |
conservation = conservationAStocker; |
} |
public String toString() { |
String sortie = ""; |
// Champs du BaseModelData |
Set<String> proprietes = this.getProperties().keySet(); |
for (Iterator<String> it = proprietes.iterator(); it.hasNext();) { |
String cle = it.next(); |
sortie += cle+" : "+this.get(cle)+"\n"; |
} |
// Champs spéciaux |
sortie += getUrl(); |
return sortie; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureListe.java |
---|
New file |
0,0 → 1,47 |
package org.tela_botanica.client.modeles; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
/** |
* Table de hachage composée d'informations sur les Structures, renvoyé par un objet de type DAO |
* La clé est le nom de l'entite + le nom de l'entite parente |
* |
* @author david delon |
* |
*/ |
public class StructureListe extends aDonneeListe<Structure> { |
private static final long serialVersionUID = 7384579567038300856L; |
public StructureListe() { |
super(); |
} |
public StructureListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste d'institutions |
* @param dates |
*/ |
public StructureListe(JSONArray structures) { |
super(structures.size()) ; |
final int taillemax = structures.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject structureCourante = structures.get(i).isObject() ; |
if (structureCourante != null) { |
Structure structure = new Structure(structureCourante); |
StructureValorisation valorisation = new StructureValorisation(structureCourante); |
structure.setValorisation(valorisation); |
StructureConservation conservation = new StructureConservation(structureCourante); |
structure.setConservation(conservation); |
this.put(structure.getId(), structure); |
} |
} |
} |
} |
Property changes: |
Added: svn:mergeinfo |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Aide.java |
---|
New file |
0,0 → 1,42 |
package org.tela_botanica.client.modeles; |
import com.extjs.gxt.ui.client.data.BaseTreeModel; |
import com.extjs.gxt.ui.client.data.TreeModel; |
public class Aide extends BaseTreeModel<TreeModel> { |
public Aide() { |
} |
public Aide(String n) { |
set("nom", n); |
} |
public Aide(String nom, String code, String auteur, String groupe) { |
set("nom", nom); |
set("code", code); |
set("auteur", auteur); |
set("groupe", groupe); |
} |
public String getNom() { |
return (String) get("nom"); |
} |
public String getCode() { |
return (String) get("code"); |
} |
public String getAuteur() { |
return (String) get("auteur"); |
} |
public String getGroupe() { |
return (String) get("groupe"); |
} |
public String toString() { |
return getNom(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/CollectionBotanique.java |
---|
New file |
0,0 → 1,35 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class CollectionBotanique extends aDonnee { |
public static final String PREFIXE = "ccb"; |
public CollectionBotanique() { |
} |
public CollectionBotanique(JSONObject botanique) { |
// l'objet JSON est une table de hachage |
Set<String> im = botanique.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (botanique.get(cle).isString() != null) { |
valeur = botanique.get(cle).isString().stringValue(); |
} |
this.set(cleObjet, valeur); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Projet.java |
---|
New file |
0,0 → 1,72 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
public class Projet extends aDonnee { |
/** |
* Constructeur vide |
*/ |
public Projet() { |
this.set("mark_contact", false); |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public Projet(JSONObject liste) { |
// l'objet JSON est une table de hachage |
Set<String> im = liste.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("^cpr_", ""); |
if (liste.get(cle).isString() != null) { |
String valeur = liste.get(cle).isString().stringValue(); |
this.set(cleObjet, valeur); |
} else { |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = " "; |
this.set(cleObjet, valeur); |
} |
} |
} |
/** |
* Constructeur avec la fonction à passer en paramètre |
* |
* @param image |
* |
/*public Projets(String fonction) { |
this.set("ce_truk_fonction", fonction); |
this.set("mark_contact", false); |
}*/ |
public String getId() { |
return (String) renvoyerValeurCorrecte("id_projet"); |
} |
public String getNom() { |
return (String) renvoyerValeurCorrecte("nom"); |
} |
/*public String getFonction() { |
String fonction = (String) renvoyerValeurCorrecte("ce_truk_fonction"); |
if (fonction.equals(Valeur.FONCTION_DIRECTEUR)) { |
return "Directeur"; |
} else if (fonction.equals(Valeur.FONCTION_CONSERVATEUR)) { |
return "Conservateur"; |
} else { |
return ""; |
} |
}*/ |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/MenuApplicationId.java |
---|
New file |
0,0 → 1,11 |
package org.tela_botanica.client.modeles; |
public class MenuApplicationId { |
public static final String ACCUEIL = "Accueil"; |
public static final String PROJET = "Projets"; |
public static final String STRUCTURE = "Structures"; |
public static final String COLLECTION = "Collections"; |
public static final String PERSONNE = "Personnes"; |
public static final String PUBLICATION = "Publications"; |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/aDonnee.java |
---|
New file |
0,0 → 1,374 |
package org.tela_botanica.client.modeles; |
import java.io.Serializable; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.LinkedList; |
import java.util.List; |
import java.util.Map; |
import java.util.Set; |
import java.util.TreeSet; |
import org.tela_botanica.client.util.UtilArray; |
import com.extjs.gxt.ui.client.data.BaseModelData; |
import com.google.gwt.http.client.URL; |
/** |
* @author jpm |
* |
*/ |
public abstract class aDonnee extends BaseModelData implements Serializable { |
/** |
* Identifiant pour sérialisé l'objet... |
*/ |
private static final long serialVersionUID = 3527760464061629791L; |
/** |
* Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par |
* cette fonction qui retire les charactères nuls qui font planter |
* l'affichage, il ne faut pas utiliser get directement |
* |
* @param cle |
* @return la valeur associée à la clé |
*/ |
protected String renvoyerValeurCorrecte(String cle) { |
String sortie = ""; |
if (this.get(cle) != null) { |
String valeur = this.get(cle); |
if (! valeur.equals("null")) { |
char nullChar = '\u0000'; |
String sNull = "" + nullChar; |
valeur = valeur.replaceAll(sNull, ""); |
sortie = valeur; |
} |
} |
return sortie; |
} |
/** |
* Ajoute un nouvel élément avec son type à une chaine dénormalisée. |
* Champ de type "truk" contenant des valeurs séparées par ";;" qui elle même possèdent un type séparé par "##". |
* Si l'élément existe déjà, il ne sera pas ajouté. |
* |
* @param champ le nom du champ dénormalisé |
* @param type le type de la valeur à ajouter |
* @param valeur la valeur à ajouter |
*/ |
protected void ajouterChaineDenormaliseAvecType(String champ, String type, Object valeur) { |
if (valeur instanceof String) { |
String chaineExistante = renvoyerValeurCorrecte(champ); |
if (chaineExistante.equals("")) { |
this.set(champ, type+"##"+valeur); |
} else { |
// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons |
if (!chaineExistante.matches("(^|;;)"+type+"##"+valeur+"(;;|$)")) { |
this.set(champ, chaineExistante+";;"+type+"##"+valeur); |
} |
} |
} |
} |
protected void supprimerTypeDansChaineDenormalise(String champ, String type) { |
String chaineExistante = renvoyerValeurCorrecte(champ); |
if (!chaineExistante.equals("")) { |
// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons |
if (chaineExistante.matches("(^|;;)"+type+"##")) { |
chaineExistante = chaineExistante.replaceFirst(type+"##", ""); |
chaineExistante = chaineExistante.replaceAll(";;;;", ";;"); |
chaineExistante = chaineExistante.replaceAll("(^;;|;;$)", ""); |
this.set(champ, chaineExistante); |
} |
} |
} |
protected void remplacerTypeDansChaineDenormalise(String champ, String type, Object valeur) { |
if (valeur != null && !valeur.equals("")) { |
ajouterChaineDenormaliseAvecType(champ, type, valeur); |
} else { |
supprimerTypeDansChaineDenormalise(champ, type); |
} |
} |
/** |
* Ajoute un nouvel élément sans type à une chaine dénormalisée. |
* Champ de type "truk" contenant seulement des valeurs séparées par ";;". |
* Si l'élément existe déjà, il ne sera pas ajouté. |
* |
* @param champ le nom du champ dénormalisé |
* @param valeur la valeur à ajouter |
*/ |
protected void ajouterChaineDenormalise(String champ, Object valeur) { |
if (valeur instanceof String) { |
String chaineExistante = renvoyerValeurCorrecte(champ); |
if (chaineExistante.equals("")) { |
this.set(champ, valeur); |
} else { |
// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons |
if (!chaineExistante.matches("(^|;;)"+valeur+"(;;|$)")) { |
this.set(champ, chaineExistante+";;"+valeur); |
} |
} |
} |
} |
/** |
* Permet de constuire correctement une chaine dénormalisée unique (champ de type "ce_truk"). |
* |
* @param champ le nom du champ dénormalisé |
* @param type le type de la valeur à ajouter |
* @param valeur la valeur à ajouter |
*/ |
protected void setChaineDenormaliseUnique(String champ, String type, Object valeur) { |
if (valeur instanceof String) { |
this.set(champ, type+"##"+valeur); |
} |
} |
/** |
* Permet de récupérer pour l'affichage une chaine dénormalisée unique (champ de type "ce_truk"). |
* |
* @param champ le nom du champ dénormalisé |
*/ |
protected String getChaineDenormaliseUnique(String champ) { |
String sortie = renvoyerValeurCorrecte(champ); |
if (!sortie.equals("")) { |
sortie = sortie.replaceFirst("^AUTRE##", ""); |
} |
return sortie; |
} |
protected String getInfoDenormaliseParType(String chaineExistante, String type) { |
String sortie = ""; |
if (!chaineExistante.equals("")) { |
String[] valeurs = chaineExistante.split(";;"); |
for (int i = 0; i < valeurs.length; i++) { |
if (valeurs[i].startsWith(type+"##")) { |
sortie = valeurs[i].replaceFirst("^"+type+"##", ""); |
} |
} |
} |
return sortie; |
} |
/** |
* Permet de récupérer une map avec toutes les valeurs de la chaine truk sous la forme clé => valeur |
* |
* @param champ le nom du champ dénormalisé |
* @return map ou liste en fonction du type de chaine truk (list si champ;;champ;; map si type##champ;;) |
*/ |
public Object getChaineDenormaliseAsMapOrList(String champ) { |
Object retourObjet = null; |
String valeurChamp = renvoyerValeurCorrecte(champ); |
if ((valeurChamp!=null)&&(!valeurChamp.trim().equals(""))) { |
String[] valeurs = valeurChamp.split(";;"); |
if (valeurs.length > 0) { |
if (valeurs[0].contains("##")) { |
// Les champs sont typés, on en fait une Map |
HashMap mapValeurs = new HashMap(); |
for (int i = 0; i < valeurs.length; i++) { |
String typeEtValeur[] = valeurs[i].split("##"); |
mapValeurs.put(typeEtValeur[1], typeEtValeur[0]); |
} |
retourObjet = mapValeurs; |
} |
else { |
//Les champs ne sont pas typés, on en fait une Liste |
LinkedList listeValeurs = new LinkedList<String>(); |
for (int i = 0; i < valeurs.length; i++) { |
if ((valeurs[i]!=null)&&(!valeurs[i].equals(""))) { |
listeValeurs.add(valeurs[i]); |
} |
} |
retourObjet = listeValeurs; |
} |
} |
} |
return retourObjet; |
} |
/** |
* Permet de modifier correctement une chaine dénormalisée (champ de type "truk"). |
* Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée. |
* |
* @param champ le nom du champ dénormalisé |
* @param type le type de la valeur à modifier |
* @param valeur la valeur pour le type en question |
*/ |
protected void modifierChaineDenormaliseParType(String champ, String type, Object valeur) { |
if (valeur instanceof String) { |
String chaineExistante = renvoyerValeurCorrecte(champ); |
if (chaineExistante.equals("")) { |
this.set(champ, type+"##"+valeur); |
} else { |
String[] valeurs = chaineExistante.split(";;"); |
for (int i = 0; i < valeurs.length; i++) { |
if (valeurs[i].startsWith(type+"##") || i == (valeurs.length -1)) { |
valeurs[i] = type+"##"+valeur; |
break; |
} |
} |
this.set(champ, UtilArray.implode(valeurs, ";;")); |
} |
} |
} |
protected String getInfoDenormaliseParPosition(String chaineExistante, int position) { |
String sortie = ""; |
if (!chaineExistante.equals("")) { |
String[] valeurs = chaineExistante.split(";;"); |
if (valeurs.length >= position) { |
for (int i = 0; i < valeurs.length; i++) { |
if (i == (position - 1)) { |
if (valeurs[i].contains("##")) { |
sortie = valeurs[i].replaceFirst("^[^#]+##", ""); |
} else { |
sortie = valeurs[i]; |
} |
break; |
} |
} |
} |
} |
return sortie; |
} |
/** |
* Permet de modifier correctement une chaine dénormalisée (champ de type "truk"). |
* Remplace par la valeur l'instance dont la position a été indiquée. |
* Si la chaine dénormalisée est vide, l'élement est ajouté quelque soit la position indiquée. |
* Si la position est supérieure au nombre d'élément de la chaine dénormalisé, rien n'est modifié. |
* |
* @param champ le nom du champ dénormalisé |
* @param position le type de la valeur à modifier |
* @param valeur la valeur à remplacer à la position indiquée |
*/ |
protected void modifierChaineDenormaliseParPosition(String champ, int position, Object valeur) { |
if (valeur instanceof String) { |
String chaineExistante = renvoyerValeurCorrecte(champ); |
if (!chaineExistante.equals("")) { |
String[] valeurs = chaineExistante.split(";;"); |
if (valeurs.length == 0) { |
this.set(champ, valeur); |
} else if (valeurs.length >= position) { |
for (int i = 0; i < valeurs.length; i++) { |
if (i == (position - 1)) { |
valeurs[i] = (String) valeur; |
break; |
} |
} |
this.set(champ, UtilArray.implode(valeurs, ";;")); |
} |
} |
} |
} |
public String getDateModification() { |
return (String) renvoyerValeurCorrecte("cmhl_date_modification"); |
} |
public String getNotes() { |
return (String) renvoyerValeurCorrecte("cmhl_notes"); |
} |
public String getIdModifierPar() { |
return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par"); |
} |
public String getIdEtat() { |
return (String) renvoyerValeurCorrecte("cmhl_ce_etat"); |
} |
public String getIp() { |
return (String) renvoyerValeurCorrecte("cmhl_ip"); |
} |
/** (non-Javadoc) |
* @see java.lang.Object#toString() |
*/ |
public String toString() { |
String sortie = ""; |
// Champs du BaseModelData |
Set<String> proprietes = this.getProperties().keySet(); |
TreeSet<String> proprietesTriees = new TreeSet<String>(proprietes); |
for (Iterator<String> it = proprietesTriees.iterator(); it.hasNext();) { |
String cle = it.next(); |
if (this.get(cle) != null && !this.get(cle).equals("")) { |
sortie += cle+" : "+this.get(cle)+"\n"; |
} |
} |
return sortie; |
} |
public Boolean comparer(BaseModelData objetAComparer) { |
Boolean retour = true; |
Map<String, Object> a = this.getProperties(); |
Map<String, Object> b = objetAComparer.getProperties(); |
if (a.size() != b.size()) { |
retour = false; |
} else { |
Set<String> cles = a.keySet(); |
Iterator<String> it = cles.iterator(); |
while (it.hasNext()) { |
String cle = it.next(); |
if (a.get(cle) != null && !a.get(cle).equals(b.get(cle))) { |
retour = false; |
break; |
} |
} |
} |
return retour; |
} |
public Object cloner(BaseModelData nouvelleInstance) { |
Map<String, Object> proprietes = this.getProperties(); |
Set<String> cles = proprietes.keySet(); |
for (Iterator<String> it = cles.iterator(); it.hasNext();) { |
String cle = it.next(); |
nouvelleInstance.set(cle, this.get(cle)); |
} |
return nouvelleInstance; |
} |
/** |
* Renvoie une chaine de caractère formatée et encodée pour POST avec toutes les propriétés du modèle |
* */ |
public String obtenirChaineJSON() { |
String chaineJSON = ""; |
HashMap hmProperties = (HashMap) getProperties(); |
Collection<String> keys = hmProperties.keySet(); |
Iterator<String> it = keys.iterator(); |
while (it.hasNext()) { |
String key = it.next(); |
chaineJSON += "cp_" + key + "=" + hmProperties.get(key); |
if (it.hasNext()) { |
chaineJSON += "&"; |
} |
} |
URL.encode(chaineJSON); |
return chaineJSON; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Publication.java |
---|
New file |
0,0 → 1,156 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Map; |
import java.util.Set; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.user.client.Window; |
public class Publication extends aDonnee { |
/** |
* Préfixe à retirer pour construire les noms des clés |
* et à rajouter lors de la transformation en requête |
*/ |
private static String prefixe = "cpu"; |
/** |
* Constructeur vide |
* |
*/ |
public Publication() { |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public Publication(JSONObject institution) { |
// l'objet JSON est une table de hachage |
Set<String> im = institution.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("^"+prefixe, ""); |
if (institution.get(cle).isString() != null) { |
String valeur = institution.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 Publication(String nom_complet, String uri, String auteur, String collection, String titre, String editeur, |
String dateParution, String indicationNvt, String fascicule, String pages) { |
this.set("fmt_nom_complet", nom_complet); |
this.set("ce_projet", ""); |
this.set("uri", uri); |
this.set("fmt_auteur", auteur); |
this.set("collection", collection); |
this.set("titre", nom_complet); |
this.set("fmt_nom_complet", titre); |
this.set("ce_truk_editeur", editeur); |
this.set("date_parution", dateParution); |
this.set("indication_nvt", indicationNvt); |
this.set("fascicule", fascicule); |
this.set("truk_pages", pages); |
this.set("ce_meta", ""); |
} |
public Publication(String idPublication,String idProjet, String nom_complet, String uri, String auteur, String collection, String titre, String editeur, |
String dateParution, String indicationNvt, String fascicule, String pages) { |
this.set("id_publication", idPublication); |
this.set("ce_projet", idProjet); |
this.set("fmt_nom_complet", nom_complet); |
this.set("uri", uri); |
this.set("fmt_auteur", auteur); |
this.set("collection", collection); |
this.set("titre", nom_complet); |
this.set("fmt_nom_complet", titre); |
this.set("ce_truk_editeur", editeur); |
this.set("date_parution", dateParution); |
this.set("indication_nvt", indicationNvt); |
this.set("fascicule", fascicule); |
this.set("truk_pages", pages); |
this.set("ce_meta", ""); |
} |
public String getId() { |
return (String) renvoyerValeurCorrecte("id_publication"); |
} |
public String getProjet() { |
return (String) renvoyerValeurCorrecte("ce_projet"); |
} |
public String getNomComplet() { |
return (String) renvoyerValeurCorrecte("fmt_nom_complet"); |
} |
public String getURI() { |
return (String) renvoyerValeurCorrecte("uri"); |
} |
public String getAuteur() { |
return (String) renvoyerValeurCorrecte("fmt_auteur"); |
} |
public String getCollection() { |
return (String) renvoyerValeurCorrecte("collection"); |
} |
public String getTitre() { |
return (String) renvoyerValeurCorrecte("titre"); |
} |
public String getEditeur() { |
return (String) renvoyerValeurCorrecte("ce_truk_editeur"); |
} |
public String getDateParution() { |
return (String) renvoyerValeurCorrecte("date_parution"); |
} |
public String getIndicationNvt() { |
return (String) renvoyerValeurCorrecte("indication_nvt"); |
} |
public String getFascicule() { |
return (String) renvoyerValeurCorrecte("fascicule"); |
} |
public String getPages() { |
return (String) renvoyerValeurCorrecte("truk_pages"); |
} |
public String getMeta() { |
return (String) renvoyerValeurCorrecte("ce_meta"); |
} |
public String getIdAuteur() { |
return (String) renvoyerValeurCorrecte("id_personne"); |
} |
public String toReqString() { |
String reqString = "" ; |
Map<String,Object> clesValeurs = getProperties() ; |
for(Iterator<String> it = clesValeurs.keySet().iterator(); it.hasNext();) { |
String cle = it.next(); |
reqString += "&"+prefixe+"_"+cle+"="+URL.encode((String)clesValeurs.get(cle)); |
} |
GWT.log(reqString, null); |
return reqString; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureAPersonne.java |
---|
New file |
0,0 → 1,286 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Set; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
import com.google.gwt.json.client.JSONObject; |
public class StructureAPersonne extends aDonnee { |
public static final String FONCTION_DIRECTEUR = "2028"; |
public static final String FONCTION_CONSERVATEUR = "2029"; |
public static final String FONCTION_TECHNICIEN = "2030"; |
public static final String ROLE_ADMIN = "2026"; |
public static final String ROLE_EQUIPE = "2027"; |
public static final String PREFIXE = "csap"; |
public static final String ETAT_AJOUTE = "A"; |
/** |
* Constructeur vide |
* |
*/ |
public StructureAPersonne() { |
// Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet |
this.set("contact", false); |
this.set("fonction", ""); |
this.set("statut", ""); |
this.set("travail", 0); |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param |
*/ |
public StructureAPersonne(JSONObject personnel) { |
// Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet |
this.set("contact", false); |
this.set("fonction", ""); |
this.set("statut", ""); |
this.set("travail", 0); |
// L'objet JSON est une table de hachage |
Set<String> im = personnel.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (personnel.get(cle).isString() != null) { |
valeur = personnel.get(cle).isString().stringValue(); |
} |
this.set(cleObjet, valeur); |
if (cle.equals("mark_contact")) { |
this.set("contact", (valeur.equals("1") ? true : false)); |
} else if (cle.equals("bota_travail_hebdo_tps")) { |
this.set("travail", Integer.parseInt(valeur)); |
} |
} |
if (cle.startsWith(Personne.PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+Personne.PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (personnel.get(cle).isString() != null) { |
valeur = personnel.get(cle).isString().stringValue(); |
} |
if (cleObjet.equals("truk_telephone")) { |
this.set("telephone", getInfoDenormaliseParType(valeur, "FIX")); |
} else if (cleObjet.equals("truk_fax")) { |
this.set("fax", getInfoDenormaliseParPosition(valeur, 1)); |
} else if (cleObjet.equals("truk_courriel")) { |
this.set("courriel", getInfoDenormaliseParPosition(valeur, 1)); |
} else if (cleObjet.equals("ce_truk_specialite")) { |
this.set("specialite", getInfoDenormaliseParPosition(valeur, 1)); |
} else { |
this.set(cleObjet, valeur); |
} |
} |
} |
} |
/** |
* Constructeur avec la fonction à passer en paramètre |
* |
* @param fonction fonction de la personne dans la structure. |
* @param role identifiant du rôle de la personne vis à vis de la structure. |
*/ |
public StructureAPersonne(String fonction, String roleId) { |
setFonction(fonction); |
setIdRole(roleId); |
// Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet |
this.set("contact", false); |
this.set("fonction", fonction); |
this.set("statut", ""); |
this.set("travail", 0); |
} |
/** |
* Constructeur avec la fonction à passer en paramètre |
* |
* @param fonction fonction de la personne dans la structure. |
* @param role identifiant du rôle de la personne vis à vis de la structure. |
*/ |
public StructureAPersonne(String fonction, String roleId, String codeEtat) { |
setFonction(fonction); |
setIdRole(roleId); |
// Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet |
this.set("contact", false); |
this.set("fonction", fonction); |
this.set("statut", ""); |
this.set("travail", 0); |
this.set("etat", codeEtat); |
} |
// ID |
/** Génère un identifiant de StructureAPersonne. |
* |
* C'est une concaténation des clés primaires de la table coel_structure_a_personne séparées par un tiret "-". |
* |
* @return identifiant unique d'une relation "structure à personne". |
*/ |
public String getId() { |
String idStructure = renvoyerValeurCorrecte("id_structure"); |
String idPersonne = renvoyerValeurCorrecte("id_personne"); |
String idRole = renvoyerValeurCorrecte("id_role"); |
if (idStructure.equals("") && idPersonne.equals("") && idRole.equals("")) { |
return null; |
} else { |
return (idStructure+"-"+idPersonne+"-"+idRole); |
} |
} |
//+---------------------------------------------------------------------------------------------------------------+ |
// CHAMPS PROVENANT de la TABLE COEL_STRUCTURE_A_PERSONNE |
// ID STRUCTURE |
public String getIdStructure() { |
return renvoyerValeurCorrecte("id_structure"); |
} |
public void setIdStructure(String is) { |
this.set("id_structure", is); |
} |
// ID PERSONNE |
public String getIdPersonne() { |
return renvoyerValeurCorrecte("id_personne"); |
} |
public void setIdPersonne(String ip) { |
this.set("id_personne", ip); |
} |
// ID RôLE |
public String getIdRole() { |
return renvoyerValeurCorrecte("id_role"); |
} |
public void setIdRole(String ir) { |
this.set("id_role", ir); |
} |
// FONCTION |
public String getFonction() { |
return renvoyerValeurCorrecte("ce_truk_fonction"); |
} |
public void setFonction(String ctf) { |
this.set("ce_truk_fonction", ctf); |
} |
public void setFonction(String type, Object valeur) { |
setChaineDenormaliseUnique("ce_truk_fonction", type, valeur); |
} |
// SERVICE |
public String getService() { |
return renvoyerValeurCorrecte("service"); |
} |
public void setService(String s) { |
this.set("service", s); |
} |
// STATUT |
public String getStatut() { |
return renvoyerValeurCorrecte("ce_truk_statut"); |
} |
public void setStatut(String cts) { |
this.set("ce_truk_statut", cts); |
} |
public void setStatut(String type, Object valeur) { |
setChaineDenormaliseUnique("ce_truk_statut", type, valeur); |
} |
// CONTACT |
public String getContact() { |
return renvoyerValeurCorrecte("mark_contact"); |
} |
public void setContact(String c) { |
//this.set("contact", (c.equals("1") ? true : false)); |
this.set("mark_contact", c); |
} |
public void setContact(Boolean c) { |
setContact((c.equals(Boolean.TRUE) ? "1" : "0")); |
} |
// BOTA TRAVAIL HEBDO TPS |
public String getBotaTravailHebdoTps() { |
return renvoyerValeurCorrecte("bota_travail_hebdo_tps"); |
} |
public void setBotaTravailHebdoTps(String btht) { |
this.set("bota_travail_hebdo_tps", btht); |
} |
//+---------------------------------------------------------------------------------------------------------------+ |
// CHAMPS PROVENANT de la TABLE COEL_PERSONNE |
// PRÉNOM |
public String getPrenom() { |
return renvoyerValeurCorrecte("prenom"); |
} |
public void setPrenom(String p) { |
this.set("prenom", p); |
} |
// NOM |
public String getNom() { |
return renvoyerValeurCorrecte("nom"); |
} |
public void setNom(String n) { |
this.set("nom", n); |
} |
// TÉLÉPHONE |
public String getTelephone() { |
return renvoyerValeurCorrecte("telephone"); |
} |
public void setTelephone(String t) { |
// Nous remplaçons le premier numéro de Téléphone FIX de la personne |
this.modifierChaineDenormaliseParType("telephone", "FIX", t); |
} |
public String selectionnerTelephone(String type) { |
return getInfoDenormaliseParType(renvoyerValeurCorrecte("telephone"), type); |
} |
// FAX |
public String getFax() { |
return renvoyerValeurCorrecte("fax"); |
} |
public void setFax(String f) { |
// Nous remplaçons le numéro de Fax en position 1 (principal) |
this.modifierChaineDenormaliseParPosition("fax", 1, f); |
} |
public String selectionnerFax(int position) { |
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("fax"), position); |
} |
// COURRIEL |
public String getCourriel() { |
return renvoyerValeurCorrecte("courriel"); |
} |
public void setCourriel(String c) { |
// Nous remplaçons le courriel en position 1 (principal) |
this.modifierChaineDenormaliseParPosition("courriel", 1, c); |
} |
public String selectionnerCourriel(int position) { |
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("courriel"), position); |
} |
// SPÉCIALITÉ |
public String getSpecialite() { |
return renvoyerValeurCorrecte("specialite"); |
} |
public void setSpecialite(String s) { |
// Nous remplaçons le premier numéro de Téléphone FIX de la personne |
this.setChaineDenormaliseUnique("specialite", "AUTRE", s); |
} |
public String afficherSpecialite() { |
return getChaineDenormaliseUnique("specialite"); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/PersonneAsyncDao.java |
---|
New file |
0,0 → 1,291 |
package org.tela_botanica.client.modeles; |
import java.util.HashMap; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.UtilDAO; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class PersonneAsyncDao { |
private static final String SERVICE_NOM = "CoelPersonne"; |
private Rafraichissable vueARafraichir = null; |
public PersonneAsyncDao(Rafraichissable vue) { |
vueARafraichir = vue; |
} |
public void selectionner(String personneId, String projetId, String nomComplet) { |
// Ajout des paramètres et données à selectionner dans l'URL |
String[] parametres = new String[3]; |
parametres[0] = (personneId == null ? "*" : personneId); |
parametres[1] = (projetId == null ? "*" : projetId); |
parametres[2] = (nomComplet == null ? "*" : nomComplet); |
final RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
// Transformation du tableau JSON réponse en ListeInstitution |
Information info = new Information("liste_personne"); |
PersonneListe personnes = new PersonneListe(reponse); |
info.setDonnee(0, personnes); |
// et on met à jour le demandeur des données |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}); |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void supprimer(final Rafraichissable r, String structureId) { |
String utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId(); |
// Ajout des paramètres et données à supprimer dans l'URL |
String[] parametres = new String[2]; |
parametres[0] = utilisateurId; |
parametres[1] = structureId; |
//System.out.println(structureId); |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, "POST"); |
try { |
rb.sendRequest("action=DELETE", new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
//Affichage des informations de débug |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(reponse.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
info.setDeboguages(reponseEnteteDeboguage.isArray()); |
} |
GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null); |
Info.display("Une erreur s'est produite lors de la suppression - Err. "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanisme d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("suppression_personne", responseValue.isString().stringValue()); |
r.rafraichir(info); |
} else { |
// GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
//GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void ajouter(final Rafraichissable vue, Personne personne) { |
String utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId(); |
// Ajout des paramètres et données à supprimer dans l'URL |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM + "/", null, null, "POST"); |
try { |
String strChaineJson = personne.obtenirChaineJSON(); |
strChaineJson += "&cmhl_ce_modifier_par=" + utilisateurId; |
rb.sendRequest(strChaineJson, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (ajout)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanisme d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("ajout_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
// GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
//GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaut null", null); |
} |
} |
} |
}}); |
} |
catch (RequestException e) { |
GWT.log("Exception", e); |
} |
} |
public void modifier(final Rafraichissable vue, Personne personne) { |
String utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId(); |
String[] parametres = new String [1]; |
parametres[0] = personne.getId(); |
// Ajout des paramètres et données à supprimer dans l'URL |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, "POST"); |
try { |
String strChaineJson = personne.obtenirChaineJSON(); |
strChaineJson += "&cmhl_ce_modifier_par=" + utilisateurId; |
rb.sendRequest(strChaineJson, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (ajout)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanisme d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
Information info = new Information("modification_personne", responseValue.isString().stringValue()); |
if (responseValue.isString() != null) { |
vue.rafraichir(info); |
} else { |
// GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
//GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaut null", null); |
} |
} |
} |
}}); |
} |
catch (RequestException e) { |
GWT.log("Exception", e); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/CollectionAsyncDao.java |
---|
New file |
0,0 → 1,60 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.http.JsonRestRequestBuilder; |
import org.tela_botanica.client.http.JsonRestRequestCallback; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONValue; |
public class CollectionAsyncDao { |
public static final String SERVICE_NOM = "CoelCollection"; |
public void selectionner(final Rafraichissable vueARafraichir, final String projetId, final String collectionId) { |
// Ajout des paramètres et données à selectionner dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
(projetId == null ? "*" : projetId) + "/" + |
(collectionId == null ? "*" : collectionId) + "/" + |
""; |
JsonRestRequestBuilder rb = new JsonRestRequestBuilder(RequestBuilder.GET, url); |
rb.envoyerRequete(null, new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
if (responseValue != null) { |
// Si la requête est un succès, reception d'un objet ou d'un tableau |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
Collection collection = new Collection(reponse); |
CollectionBotanique collectionBotanique = new CollectionBotanique(reponse); |
Information info = new Information("selection_collection"); |
info.setDonnee(0, collection); |
info.setDonnee(1, collectionBotanique); |
vueARafraichir.rafraichir(info); |
} else if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
CollectionListe collections = new CollectionListe(reponse); |
vueARafraichir.rafraichir(collections); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
// Dans le cas, où nous demandons toutes les institutions et qu'il n'y en a pas, nous retournons un objet vide |
if (collectionId == null) { |
CollectionListe collections = new CollectionListe(0); |
vueARafraichir.rafraichir(collections); |
} |
} |
} |
}); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/ValeurListeAsyncDao.java |
---|
New file |
0,0 → 1,89 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.UtilDAO; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
public class ValeurListeAsyncDao { |
private static final String SERVICE_NOM = "CoelValeurListe"; |
private Rafraichissable vue = null; |
public ValeurListeAsyncDao() { |
// TODO Auto-generated constructor stub |
} |
public ValeurListeAsyncDao(Rafraichissable vueARafraichir) { |
vue = vueARafraichir; |
} |
public void obtenirListe(Integer cle) { |
selectionner("id", cle, "*", "*"); |
} |
public void selectionner(String type, Integer cleParent, String abv, String idValeur) { |
// Ajout des paramètres et données à selectionner dans l'URL |
String[] parametres = new String[4]; |
parametres[0] = type; |
parametres[1] = cleParent.toString(); |
parametres[2] = "*"; |
if (!type.equals("id")) { |
parametres[2] = abv; |
} |
parametres[3] = idValeur; |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(Request request, Response response) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isObject() != null) { |
try { |
final JSONObject reponse = responseValue.isObject(); |
JSONString listeId = reponse.get("id").isString(); |
JSONArray listeValeurs = reponse.get("valeurs").isArray(); |
if (listeId != null) { |
// Transformation du tableau JSON réponse en Liste |
ValeurListe liste = new ValeurListe(listeId, listeValeurs); |
// et on met à jour le demandeur des données |
vue.rafraichir(liste); |
} |
} catch (NullPointerException e) { |
e.printStackTrace(); |
} |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureAsyncDao.java |
---|
New file |
0,0 → 1,428 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class StructureAsyncDao { |
private static final String SERVICE_NOM = "CoelStructure"; |
public void selectionner(final Rafraichissable vueARafraichir, final String projetId, final String structureId) { |
// Ajout des paramètres et données à selectionner dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
(projetId == null ? "*" : projetId) + "/" + |
(structureId == null ? "*" : structureId) + "/" + |
""; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
Information info = new Information("selection_structure"); |
if (response.getHeader("X-DebugJrest-Data").length() != 0) { |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
info.setDeboguages(reponseEnteteDeboguage.isArray()); |
GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null); |
} |
} |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un objet ou d'un tableau |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
Structure structure = new Structure(reponse); |
StructureConservation structureConservation = new StructureConservation(reponse); |
StructureValorisation structureValorisation = new StructureValorisation(reponse); |
info.setDonnee(0, structure); |
info.setDonnee(1, structureConservation); |
info.setDonnee(2, structureValorisation); |
vueARafraichir.rafraichir(info); |
} else if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
StructureListe structures = new StructureListe(reponse); |
vueARafraichir.rafraichir(structures); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
if (structureId == null) { |
// Dans le cas, où nous demandons toutes les institutions et qu'il n'y en a pas, nous retournons un objet vide |
StructureListe structures = new StructureListe(0); |
vueARafraichir.rafraichir(structures); |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
public void ajouter(final Rafraichissable r, String utilisateurId, final Structure str, StructureConservation conservation, StructureValorisation valorisation) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
""; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId + |
"&cs_ce_projet=" + str.getIdProjet() + |
"&cs_ce_mere=" + str.getIdMere() + |
"&cs_guid=" + str.getGuid() + |
"&cs_truk_identifiant_alternatif=" + str.getIdAlternatif() + |
"&cs_nom=" + str.getNom() + |
"&cs_truk_nom_alternatif=" + str.getNomAlternatif() + |
"&cs_ce_type=" + str.getType() + |
"&cs_ce_truk_type_prive=" + str.getTypePrive() + |
"&cs_ce_truk_type_public=" + str.getTypePublic() + |
"&cs_adresse_01=" + str.getAdresse() + |
"&cs_adresse_02=" + str.getAdresseComplement() + |
"&cs_date_fondation=" + str.getDateFondationFormatMysql() + |
"&cs_code_postal=" + str.getCodePostal() + |
"&cs_ville=" + str.getVille() + |
"&cs_region=" + str.getRegion() + |
"&cs_pays=" + str.getPays() + |
"&cs_telephone=" + str.getTelephone() + |
"&cs_fax=" + str.getFax() + |
"&cs_truk_url=" + str.getUrl() + |
"&cs_nbre_personne=" + Integer.toString(str.getNbrePersonne()); |
if (conservation != null) { |
postDonnees += "&csc_mark_formation=" + conservation.getFormation() + |
"&csc_formation=" + conservation.getFormationInfo() + |
"&csc_mark_formation_interet=" + conservation.getFormationInteret() + |
"&csc_truk_stockage_local=" + conservation.getStockageLocal() + |
"&csc_truk_stockage_meuble=" + conservation.getStockageMeuble() + |
"&csc_truk_stockage_parametre=" + conservation.getStockageParametre() + |
"&csc_mark_collection_commune=" + conservation.getCollectionCommune() + |
"&csc_truk_collection_autre=" + conservation.getCollectionAutre() + |
"&csc_mark_acces_controle=" + conservation.getAccesControle() + |
"&csc_mark_restauration=" + conservation.getRestauration() + |
"&csc_truk_restauration_operation=" + conservation.getRestaurationOperation() + |
"&csc_ce_materiel_conservation=" + conservation.getMaterielConservation() + |
"&csc_truk_materiel_autre=" + conservation.getMaterielAutre() + |
"&csc_mark_traitement=" + conservation.getTraitement() + |
"&csc_truk_traitement=" + conservation.getTraitements() + |
"&csc_mark_acquisition_collection=" + conservation.getAcquisitionCollection() + |
"&csc_mark_acquisition_echantillon=" + conservation.getAcquisitionEchantillon() + |
"&csc_mark_acquisition_traitement=" + conservation.getAcquisitionTraitement() + |
"&csc_truk_acquisition_traitement_poison=" + conservation.getAcquisitionTraitementPoison() + |
"&csc_truk_acquisition_traitement_insecte=" + conservation.getAcquisitionTraitementInsecte(); |
} |
if (valorisation != null) { |
postDonnees += "&csv_mark_action=" + valorisation.getAction() + |
"&csv_truk_action=" + valorisation.getActionInfo() + |
"&csv_publication=" + valorisation.getPublication() + |
"&csv_collection_autre=" + valorisation.getCollectionAutre() + |
"&csv_mark_action_future=" + valorisation.getActionFuture() + |
"&csv_action_future=" + valorisation.getActionFutureInfo() + |
"&csv_mark_recherche=" + valorisation.getRecherche() + |
"&csv_truk_recherche_provenance=" + valorisation.getRechercheProvenance() + |
"&csv_truk_recherche_type=" + valorisation.getRechercheType() + |
"&csv_mark_acces_ss_motif=" + valorisation.getAccesSansMotif() + |
"&csv_acces_ss_motif=" + valorisation.getAccesSansMotifInfo() + |
"&csv_mark_visite_avec_motif=" + valorisation.getVisiteAvecMotif() + |
"&csv_visite_avec_motif=" + valorisation.getVisiteAvecMotifInfo(); |
} |
String postDonneesEncodees = URL.encode(postDonnees); |
try { |
rb.sendRequest(postDonneesEncodees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (ajout)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
Information info = new Information("ajout_structure"); |
if (response.getHeader("X-DebugJrest-Data").length() != 0) { |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
info.setDeboguages(reponseEnteteDeboguage.isArray()); |
GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null); |
} |
} |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
info.setMessage(responseValue.isString().stringValue()); |
} else { |
info.setDeboguage("La réponse n'est pas une chaine JSON."); |
} |
} else { |
if (response.getText() == null) { |
info.setDeboguage("tLa réponse vaut null"); |
} else if (response.getText().length() == 0) { |
info.setDeboguage("tLa réponse a une taille de 0"); |
} |
} |
r.rafraichir(info); |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (ajouter)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void supprimer(final Rafraichissable vueARafraichir, String utilisateurId, String structureId) { |
// Ajout des paramètres et données à supprimer dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
utilisateurId + "/" + |
structureId + |
""; |
// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "action=DELETE"; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
Information info = new Information("suppression_structure"); |
if (response.getHeader("X-DebugJrest-Data").length() != 0) { |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
info.setDeboguages(reponseEnteteDeboguage.isArray()); |
GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null); |
} |
} |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
info.setMessage(responseValue.isString().stringValue()); |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void modifier(final Rafraichissable vueARafraichir, String utilisateurId, String structureId, Structure str, StructureConservation conservation, StructureValorisation valorisation) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + structureId; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId; |
if (str != null) { |
postDonnees += "&cs_ce_projet=" + str.getIdProjet() + |
"&cs_ce_mere=" + str.getIdMere() + |
"&cs_guid=" + str.getGuid() + |
"&cs_truk_identifiant_alternatif=" + str.getIdAlternatif() + |
"&cs_nom=" + str.getNom() + |
"&cs_truk_nom_alternatif=" + str.getNomAlternatif() + |
"&cs_ce_type=" + str.getType() + |
"&cs_ce_truk_type_prive=" + str.getTypePrive() + |
"&cs_ce_truk_type_public=" + str.getTypePublic() + |
"&cs_adresse_01=" + str.getAdresse() + |
"&cs_adresse_02=" + str.getAdresseComplement() + |
"&cs_date_fondation=" + str.getDateFondationFormatMysql() + |
"&cs_code_postal=" + str.getCodePostal() + |
"&cs_ville=" + str.getVille() + |
"&cs_region=" + str.getRegion() + |
"&cs_pays=" + str.getPays() + |
"&cs_telephone=" + str.getTelephone() + |
"&cs_fax=" + str.getFax() + |
"&cs_courriel=" + str.getCourriel() + |
"&cs_truk_url=" + str.getUrl() + |
"&cs_nbre_personne=" + Integer.toString(str.getNbrePersonne()); |
} |
if (conservation != null) { |
postDonnees += "&csc_mark_formation=" + conservation.getFormation() + |
"&csc_formation=" + conservation.getFormationInfo() + |
"&csc_mark_formation_interet=" + conservation.getFormationInteret() + |
"&csc_truk_stockage_local=" + conservation.getStockageLocal() + |
"&csc_truk_stockage_meuble=" + conservation.getStockageMeuble() + |
"&csc_truk_stockage_parametre=" + conservation.getStockageParametre() + |
"&csc_mark_collection_commune=" + conservation.getCollectionCommune() + |
"&csc_truk_collection_autre=" + conservation.getCollectionAutre() + |
"&csc_mark_acces_controle=" + conservation.getAccesControle() + |
"&csc_mark_restauration=" + conservation.getRestauration() + |
"&csc_truk_restauration_operation=" + conservation.getRestaurationOperation() + |
"&csc_ce_materiel_conservation=" + conservation.getMaterielConservation() + |
"&csc_truk_materiel_autre=" + conservation.getMaterielAutre() + |
"&csc_mark_traitement=" + conservation.getTraitement() + |
"&csc_truk_traitement=" + conservation.getTraitements() + |
"&csc_mark_acquisition_collection=" + conservation.getAcquisitionCollection() + |
"&csc_mark_acquisition_echantillon=" + conservation.getAcquisitionEchantillon() + |
"&csc_mark_acquisition_traitement=" + conservation.getAcquisitionTraitement() + |
"&csc_truk_acquisition_traitement_poison=" + conservation.getAcquisitionTraitementPoison() + |
"&csc_truk_acquisition_traitement_insecte=" + conservation.getAcquisitionTraitementInsecte(); |
} |
if (valorisation != null) { |
postDonnees += "&csv_mark_action=" + valorisation.getAction() + |
"&csv_truk_action=" + valorisation.getActionInfo() + |
"&csv_publication=" + valorisation.getPublication() + |
"&csv_collection_autre=" + valorisation.getCollectionAutre() + |
"&csv_mark_action_future=" + valorisation.getActionFuture() + |
"&csv_action_future=" + valorisation.getActionFutureInfo() + |
"&csv_mark_recherche=" + valorisation.getRecherche() + |
"&csv_truk_recherche_provenance=" + valorisation.getRechercheProvenance() + |
"&csv_truk_recherche_type=" + valorisation.getRechercheType() + |
"&csv_mark_acces_ss_motif=" + valorisation.getAccesSansMotif() + |
"&csv_acces_ss_motif=" + valorisation.getAccesSansMotifInfo() + |
"&csv_mark_visite_avec_motif=" + valorisation.getVisiteAvecMotif() + |
"&csv_visite_avec_motif=" + valorisation.getVisiteAvecMotifInfo(); |
} |
String postDonneesEncodees = URL.encode(postDonnees); |
GWT.log(postDonnees, null); |
try { |
rb.sendRequest(postDonneesEncodees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (modif)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
Information info = new Information("modif_structure"); |
if (response.getHeader("X-DebugJrest-Data").length() != 0) { |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
info.setDeboguages(reponseEnteteDeboguage.isArray()); |
GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null); |
} |
} |
if (response.getText() != null && response.getText().length() != 0) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
info.setMessage(responseValue.isString().stringValue()); |
} else { |
info.setDeboguage("La réponse n'est pas une chaine JSON."); |
} |
} else { |
if (response.getText() == null) { |
info.setDeboguage("La réponse vaul null"); |
} else if (response.getText().length() == 0) { |
info.setDeboguage("La réponse a une taille de 0"); |
} |
} |
vueARafraichir.rafraichir(info); |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (modif)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/InterneValeurListe.java |
---|
New file |
0,0 → 1,39 |
package org.tela_botanica.client.modeles; |
import java.util.ArrayList; |
import java.util.List; |
public class InterneValeurListe { |
public static List<InterneValeur> getTypeAcronyme() { |
List<InterneValeur> acronymes = new ArrayList<InterneValeur>(); |
acronymes.add(new InterneValeur("", "Aucun")); |
acronymes.add(getTypeAcronymeIH()); |
acronymes.add(getTypeAcronymeMNHN()); |
return acronymes; |
} |
public static List<InterneValeur> getTypeStructure() { |
List<InterneValeur> types = new ArrayList<InterneValeur>(); |
types.add(new InterneValeur("", "Aucun")); |
types.add(getTypePublique()); |
types.add(getTypePrivee()); |
return types; |
} |
public static InterneValeur getTypePublique() { |
return new InterneValeur("stpu", "Publique"); |
} |
public static InterneValeur getTypePrivee() { |
return new InterneValeur("stpr", "Privée"); |
} |
public static InterneValeur getTypeAcronymeIH() { |
return new InterneValeur("IH", "Index Herbariorum"); |
} |
public static InterneValeur getTypeAcronymeMNHN() { |
return new InterneValeur("MNHN", "Muséum National d'Histoire Naturelle de Paris"); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/Information.java |
---|
New file |
0,0 → 1,119 |
package org.tela_botanica.client.modeles; |
import java.util.ArrayList; |
import com.google.gwt.json.client.JSONArray; |
public class Information { |
private String type = null; |
private ArrayList<String> messages = null; |
private ArrayList<String> deboguages = null; |
private ArrayList<Object> donnees = null; |
public Information() { |
donnees = new ArrayList<Object>(); |
messages = new ArrayList<String>(); |
deboguages = new ArrayList<String>(); |
} |
public Information(String t) { |
donnees = new ArrayList<Object>(); |
messages = new ArrayList<String>(); |
deboguages = new ArrayList<String>(); |
type = t; |
} |
public Information(String t, String m) { |
donnees = new ArrayList<Object>(); |
messages = new ArrayList<String>(); |
messages.add(m); |
deboguages = new ArrayList<String>(); |
type = t; |
} |
public Information(String t, JSONArray jsonArray) { |
donnees = new ArrayList<Object>(); |
messages = new ArrayList<String>(); |
for(int i = 0 ; i < jsonArray.size() ; i++) { |
if (jsonArray.get(i).isString() != null) { |
messages.add(jsonArray.get(i).isString().stringValue()); |
} |
} |
deboguages = new ArrayList<String>(); |
type = t; |
} |
public Information(String t, Object o) { |
donnees = new ArrayList<Object>(); |
donnees.add(o); |
messages = new ArrayList<String>(); |
deboguages = new ArrayList<String>(); |
type = t; |
} |
public void setType(String t) { |
type = t; |
} |
public String getType() { |
return type; |
} |
public void setMessage(String message) { |
messages.add(message); |
} |
public String getMessage(int index) { |
return messages.get(index); |
} |
public ArrayList<String> getMessages() { |
return messages; |
} |
public void setDeboguage(String messageDeboguage) { |
deboguages.add(messageDeboguage); |
} |
public void setDeboguages(JSONArray jsonArray) { |
for(int i = 0 ; i < jsonArray.size() ; i++) { |
if (jsonArray.get(i).isString() != null) { |
deboguages.add(jsonArray.get(i).isString().stringValue()); |
} |
} |
} |
public String getDeboguage(int index) { |
return deboguages.get(index); |
} |
public ArrayList<String> getDeboguages() { |
return deboguages; |
} |
public void setDonnee(Object objet) { |
donnees.add(objet); |
} |
public void setDonnee(int index, Object objet) { |
if (objet != null) { |
donnees.add(index, objet); |
} |
} |
public Object getDonnee(int index) { |
try { |
return donnees.get(index); |
} catch (Exception e) { |
return null; |
} |
} |
public ArrayList<Object> getDonnees() { |
return donnees; |
} |
public String toString() { |
String chaine = new String(); |
if (messages != null) { |
for(int i = 0 ; i < messages.size() ; i++) { |
// GXT ne prend pas en compte /n ou /r/n... |
chaine += getMessage(i)+"\n"; |
} |
} |
return chaine; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/ProjetAsyncDao.java |
---|
New file |
0,0 → 1,89 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.UtilDAO; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONException; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class ProjetAsyncDao { |
private static final String SERVICE_NOM = "CoelProjet"; |
private ProjetListe projets = null; |
private Rafraichissable vue = null; |
public ProjetAsyncDao(Rafraichissable vueARafraichir) { |
vue = vueARafraichir; |
} |
public void selectionner() { |
// Appel du service JREST pour avoir toutes les personnes |
RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selectionner)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
// La requête doit renvoyer une chaîne de caratères, parsable avec JSON |
// Si ce n'est pas le cas, on log une erreur |
if (!response.getText().equals("")) { |
try { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
// Transformation du tableau JSON réponse en ListePersonnes |
projets = new ProjetListe(reponse); |
} |
} catch (JSONException e) { |
// Cette exception est levée si la chaîne de caractère n'a pu être parsée par JSON |
GWT.log("ERREUR parsing JSON", e); |
Info.display("Erreur DAO", "Échec du traitement des données des projets."); |
} |
} |
} |
// Quelque soit l'issue, il faut retourner une liste vide. |
if (projets == null) { |
projets = new ProjetListe(); |
} |
// Mise à jour du demandeur des données |
vue.rafraichir(projets); |
} |
}); |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selectionner)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/PersonneListe.java |
---|
New file |
0,0 → 1,50 |
package org.tela_botanica.client.modeles; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
/** |
* Table de hachage composée d'informations sur les Valeurs des listes, renvoyé par un objet de type DAO |
* La clé est le nom de l'entite + le nom de l'entite parente |
* |
* @author david delon |
* |
*/ |
public class PersonneListe extends aDonneeListe<Personne> { |
private static final long serialVersionUID = 2930530504922300155L; |
/** |
* Constructeur sans paramètres |
*/ |
public PersonneListe() { |
super(); |
} |
/** |
* Constructeur avec paramètre |
* @param taille la taille de la table de hachage |
*/ |
public PersonneListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste de personne |
* @param dates |
*/ |
public PersonneListe(JSONArray personneListe) { |
super(personneListe.size()); |
final int taillemax = personneListe.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject personneCourante = personneListe.get(i).isObject() ; |
if (personneCourante != null) { |
Personne personne = new Personne(personneCourante); |
this.put(personne.getId(), personne); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/PublicationAsyncDao.java |
---|
New file |
0,0 → 1,192 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.Modele; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.Window; |
public class PublicationAsyncDao { |
private static final String SERVICE_NOM = "CoelPublication"; |
private PublicationListe publications = null; |
private Rafraichissable rafraichissement = null; |
public PublicationAsyncDao(Rafraichissable r) { |
rafraichissement = r ; |
} |
public void obtenirListePublication() { |
// Demande de toutes les structures |
String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url+SERVICE_NOM+"/"); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(Request request, Response response) { |
Boolean defaut = true; |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
// Transformation du tableau JSON réponse en ListeInstitution |
publications = new PublicationListe(reponse); |
// et on met à jour le demandeur des données |
rafraichissement.rafraichir(publications); |
// Tout c'est bien déroulé, on courcircuite l'affichage par défaut |
defaut = false; |
} |
} |
if (defaut == true) { |
publications = new PublicationListe(0); |
rafraichissement.rafraichir(publications); |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
public void modifierPublication(String utilisateurId, Publication pubAModifier) { |
// Demande de toutes les structures |
String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url+SERVICE_NOM+"/"+pubAModifier.getId()); |
try { |
rb.sendRequest(pubAModifier.toReqString()+"&cmhl_ce_modifier_par="+utilisateurId, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(Request request, Response response) { |
Boolean defaut = true; |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isArray() != null) { |
final JSONObject reponse = responseValue.isObject(); |
// Transformation du tableau JSON réponse en ListeInstitution |
publications = new PublicationListe(reponse); |
// et on met à jour le demandeur des données |
rafraichissement.rafraichir(publications); |
// Tout c'est bien déroulé, on courcircuite l'affichage par défaut |
defaut = false; |
} |
} |
if (defaut == true) { |
publications = new PublicationListe(0); |
rafraichissement.rafraichir(publications); |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
public void ajouterPublication(String utilisateurId, Publication pubAModifier) { |
String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url+SERVICE_NOM+"/"); |
try { |
rb.sendRequest(pubAModifier.toReqString()+"&cmhl_ce_modifier_par="+utilisateurId, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
} |
public void onResponseReceived(Request request, Response response) { |
Boolean defaut = true; |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
// Transformation du tableau JSON réponse en ListeInstitution |
publications = new PublicationListe(reponse); |
// et on met à jour le demandeur des données |
rafraichissement.rafraichir(publications); |
// Tout c'est bien déroulé, on courcircuite l'affichage par défaut |
defaut = false; |
} |
} |
if (defaut == true) { |
publications = new PublicationListe(0); |
rafraichissement.rafraichir(publications); |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
public void supprimerPublication(String utilisateurId, String idPubs) { |
String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url+SERVICE_NOM+"/"+utilisateurId+"/"+idPubs); |
try { |
rb.sendRequest("action=DELETE", new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
GWT.log("Erreur dans la requête de suppression", exception); |
} |
public void onResponseReceived(Request request, Response response) { |
Boolean defaut = true; |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
// Transformation du tableau JSON réponse en ListeInstitution |
publications = new PublicationListe(reponse); |
// et on met à jour le demandeur des données |
rafraichissement.rafraichir(publications); |
// Tout c'est bien déroulé, on courcircuite l'affichage par défaut |
defaut = false; |
} |
} |
if (defaut == true) { |
publications = new PublicationListe(0); |
rafraichissement.rafraichir(publications); |
} |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureValorisation.java |
---|
New file |
0,0 → 1,165 |
package org.tela_botanica.client.modeles; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.json.client.JSONObject; |
public class StructureValorisation extends aDonnee { |
public static final String PREFIXE = "csv"; |
/** |
* Constructeur vide |
* |
*/ |
public StructureValorisation() { |
} |
/** |
* Constructeur avec un objet JSON |
* |
* @param image |
*/ |
public StructureValorisation(JSONObject valorisation) { |
// L'objet JSON est une table de hachage |
Set<String> im = valorisation.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(); |
if (cle.startsWith(PREFIXE+"_")) { |
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet |
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", ""); |
// Sinon, nous ajoutons la clé avec une valeur vide |
String valeur = ""; |
if (valorisation.get(cle).isString() != null) { |
valeur = valorisation.get(cle).isString().stringValue(); |
} |
this.set(cleObjet, valeur); |
} |
} |
} |
// ACTION |
public String getAction() { |
return renvoyerValeurCorrecte("mark_action"); |
} |
public void setAction(String a) { |
this.set("mark_action", a); |
} |
// ACTION INFO |
public String getActionInfo() { |
return renvoyerValeurCorrecte("truk_action"); |
} |
public void setActionInfo(String a) { |
this.set("truk_action", a); |
} |
public void setActionInfo(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_action", type, valeur); |
} |
// PUBLICATION |
public String getPublication() { |
return renvoyerValeurCorrecte("publication"); |
} |
public void setPublication(String p) { |
this.set("publication", p); |
} |
// COLLECTION AUTRE |
public String getCollectionAutre() { |
return renvoyerValeurCorrecte("collection_autre"); |
} |
public void setCollectionAutre(String ca) { |
this.set("collection_autre", ca); |
} |
public void setCollectionAutre(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("collection_autre", type, valeur); |
} |
// ACTION FUTURE |
public String getActionFuture() { |
return renvoyerValeurCorrecte("mark_action_future"); |
} |
public void setActionFuture(String af) { |
this.set("mark_action_future", af); |
} |
// ACTION FUTURE INFO |
public String getActionFutureInfo() { |
return renvoyerValeurCorrecte("action_future"); |
} |
public void setActionFutureInfo(String af) { |
this.set("action_future", af); |
} |
// RECHERCHE |
public String getRecherche() { |
return renvoyerValeurCorrecte("mark_recherche"); |
} |
public void setRecherche(String r) { |
this.set("mark_recherche", r); |
} |
// RECHERCHE PROVENANCE |
public String getRechercheProvenance() { |
return renvoyerValeurCorrecte("truk_recherche_provenance"); |
} |
public void setRechercheProvenance(String rp) { |
this.set("truk_recherche_provenance", rp); |
} |
public void setRechercheProvenance(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_recherche_provenance", type, valeur); |
} |
// RECHERCHE TYPE |
public String getRechercheType() { |
return renvoyerValeurCorrecte("truk_recherche_type"); |
} |
public void setRechercheType(String rt) { |
this.set("truk_recherche_type", rt); |
} |
public void setRechercheType(String type, Object valeur) { |
remplacerTypeDansChaineDenormalise("truk_recherche_type", type, valeur); |
} |
// ACCES SANS MOTIF |
public String getAccesSansMotif() { |
return renvoyerValeurCorrecte("mark_acces_ss_motif"); |
} |
public void setAccesSansMotif(String asm) { |
this.set("mark_acces_ss_motif", asm); |
} |
// ACCES SANS MOTIF INFO |
public String getAccesSansMotifInfo() { |
return renvoyerValeurCorrecte("acces_ss_motif"); |
} |
public void setAccesSansMotifInfo(String asm) { |
this.set("acces_ss_motif", asm); |
} |
// VISITE AVEC MOTIF |
public String getVisiteAvecMotif() { |
return renvoyerValeurCorrecte("mark_visite_avec_motif"); |
} |
public void setVisiteAvecMotif(String vam) { |
this.set("mark_visite_avec_motif", vam); |
} |
// VISITE AVEC MOTIF INFO |
public String getVisiteAvecMotifInfo() { |
return renvoyerValeurCorrecte("visite_avec_motif"); |
} |
public void setVisiteAvecMotifInfo(String vam) { |
this.set("visite_avec_motif", vam); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/CollectionListe.java |
---|
New file |
0,0 → 1,46 |
package org.tela_botanica.client.modeles; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
/** |
* Table de hachage composée d'informations sur les Structures, renvoyé par un objet de type DAO |
* La clé est le nom de l'entite + le nom de l'entite parente |
* |
* @author david delon |
* |
*/ |
public class CollectionListe extends aDonneeListe<Collection> { |
private static final long serialVersionUID = 8024454926649039456L; |
public CollectionListe() { |
super(); |
} |
public CollectionListe(int taille) { |
super(taille); |
} |
/** |
* Constructeur pour une liste d'institutions |
* @param dates |
*/ |
public CollectionListe(JSONArray structures) { |
super(structures.size()) ; |
final int taillemax = structures.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject collectionCourante = structures.get(i).isObject() ; |
if (collectionCourante != null) { |
Collection collection = new Collection(collectionCourante); |
CollectionBotanique botanique = new CollectionBotanique(collectionCourante); |
collection.setBotanique(botanique); |
this.put(collection.getId(), collection); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/modeles/StructureAPersonneAsyncDao.java |
---|
New file |
0,0 → 1,304 |
package org.tela_botanica.client.modeles; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class StructureAPersonneAsyncDao { |
private static final String SERVICE_NOM = "CoelStructureAPersonne"; |
public void selectionner(final Rafraichissable r, String idUtilisateur, final String idStructure, final String idRole) { |
// Ajout des paramètres et données à selectionner dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
(idStructure == null ? "*" : idStructure) + "/" + |
(idRole == null ? "*" : idRole) + "/" + |
""; |
GWT.log("StructureAPersonne : "+url, null); |
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url); |
try { |
rb.sendRequest(null, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
// Transformation du tableau JSON réponse en ListeInstitution |
Information info = new Information("liste_structure_a_personne"); |
StructureAPersonneListe personnel = new StructureAPersonneListe(reponse); |
info.setDonnee(0, personnel); |
// et on met à jour le demandeur des données |
r.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
if (idStructure == null) { |
// Dans le cas, où nous demandons toutes les relations Structure à Personne et qu'il n'y en a pas, nous retournons un message d'information |
Information info = new Information("liste_structure_a_personne"); |
info.setMessage("Aucun personnel"); |
r.rafraichir(info); |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
} |
}); |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void ajouter(final Rafraichissable vue, String utilisateurId, String structureId, StructureAPersonne personnel) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/"; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId + |
"&csap_id_structure=" + structureId + |
"&csap_id_personne=" + URL.encodeComponent(personnel.getIdPersonne()) + |
"&csap_id_role=" + URL.encodeComponent(personnel.getIdRole()) + |
"&csap_ce_truk_fonction=" + URL.encodeComponent(personnel.getFonction()) + |
"&csap_service=" + URL.encodeComponent(personnel.getService()) + |
"&csap_ce_truk_statut=" + URL.encodeComponent(personnel.getStatut()) + |
"&csap_mark_contact=" + URL.encodeComponent(personnel.getContact()) + |
"&csap_bota_travail_hebdo_tps=" + URL.encodeComponent(personnel.getBotaTravailHebdoTps()) + |
"&cp_prenom=" + URL.encodeComponent(personnel.getPrenom()) + |
"&cp_nom=" + URL.encodeComponent(personnel.getNom()) + |
"&cp_truk_telephone=" + URL.encodeComponent(personnel.getTelephone()) + |
"&cp_truk_fax=" + URL.encodeComponent(personnel.getFax()) + |
"&cp_truk_courriel=" + URL.encodeComponent(personnel.getCourriel()) + |
"&cp_ce_truk_specialite=" + URL.encodeComponent(personnel.getSpecialite()) + |
""; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (ajout)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("ajout_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (ajout)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void modifier(final Rafraichissable vue, String utilisateurId, StructureAPersonne personnel) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
personnel.getIdStructure() + "/" + |
personnel.getIdPersonne() + "/" + |
personnel.getIdRole() |
; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId + |
"&csap_ce_truk_fonction=" + URL.encodeComponent(personnel.getFonction()) + |
"&csap_service=" + URL.encodeComponent(personnel.getService()) + |
"&csap_ce_truk_statut=" + URL.encodeComponent(personnel.getStatut()) + |
"&csap_mark_contact=" + URL.encodeComponent(personnel.getContact()) + |
"&csap_bota_travail_hebdo_tps=" + URL.encodeComponent(personnel.getBotaTravailHebdoTps()) + |
"&cp_prenom=" + URL.encodeComponent(personnel.getPrenom()) + |
"&cp_nom=" + URL.encodeComponent(personnel.getNom()) + |
"&cp_truk_telephone=" + URL.encodeComponent(personnel.getTelephone()) + |
"&cp_truk_fax=" + URL.encodeComponent(personnel.getFax()) + |
"&cp_truk_courriel=" + URL.encodeComponent(personnel.getCourriel()) + |
"&cp_ce_truk_specialite=" + URL.encodeComponent(personnel.getSpecialite()) + |
""; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (modif)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("modif_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (modif)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void supprimer(final Rafraichissable vue, String utilisateurId, String idStrAPer) { |
// Ajout des paramètres et données à supprimer dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
utilisateurId + "/" + |
idStrAPer + |
""; |
// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "action=DELETE"; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("suppression_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/ComposantClass.java |
---|
New file |
0,0 → 1,26 |
package org.tela_botanica.client; |
public final class ComposantClass { |
public static final String ICONE_AIDE = "icone-aide"; |
public static final String ICONE_AJOUTER = "icone-ajouter"; |
public static final String ICONE_BASCULE = "icone-bascule"; |
public static final String ICONE_BEL = "icone-bel"; |
public static final String ICONE_CEL = "icone-cel"; |
public static final String ICONE_CONNEXION = "icone-connexion"; |
public static final String ICONE_DECONNEXION = "icone-deconnexion"; |
public static final String ICONE_DEPLIER_TOUT = "icone-deplier-tout"; |
public static final String ICONE_IMPRIMER = "icone-imprimer"; |
public static final String ICONE_MODIFIER = "icone-modifier"; |
public static final String ICONE_PANNEAU_LISTE = "icone-appli-panneau-liste"; |
public static final String ICONE_PARAMETRE = "icone-param"; |
public static final String ICONE_PREFERENCE = "icone-preference"; |
public static final String ICONE_RAFRAICHIR = "icone-rafraichir"; |
public static final String ICONE_REPLIER_TOUT = "icone-replier-tout"; |
public static final String ICONE_SUPPRIMER = "icone-supprimer"; |
public static final String DETAIL_CORPS_CONTENU = "coel-detail-corps-contenu"; |
public static final String LABEL = "coel-label"; |
public static final String FIELDSET = "coel-fieldset"; |
public static final String CLEAR = "coel-clear"; |
public static final String META = "coel-meta"; |
public static final String INDENTATION = "coel-indentation"; |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/util/Print.java |
---|
New file |
0,0 → 1,69 |
package org.tela_botanica.client.util; |
import com.google.gwt.user.client.Element; |
import com.google.gwt.user.client.ui.UIObject; |
/** |
* <pre> |
* Generic printing class |
* can be used to print the Window it self, DOM.Elements, UIObjects (Widgets) and plain HTML |
* |
* Usage: |
* You must insert this iframe in your host page: |
* <iframe id="__printingFrame" style="width:0;height:0;border:0"></iframe> |
* |
* Window: |
* Print.it(); |
* |
* Objects/HTML: |
* Print.it(RootPanel.get("myId")); |
* Print.it(DOM.getElementById("myId")); |
* Print.it("Just <b>Print.it()</b>!"); |
* |
* Objects/HTML using styles: |
* Print.it("<link rel='StyleSheet' type='text/css' media='paper' href='/paperStyle.css'>", RootPanel.get('myId')); |
* Print.it("<style type='text/css' media='paper'> .newPage {page-break-after: always; } </style>","Hi<p class='newPage'></p>By"); |
* </pre> |
*/ |
public class Print { |
public static native void it() /*-{ |
$wnd.print(); |
}-*/; |
public static native void it(String html) /*-{ |
var frame = $doc.getElementById('__printingFrame'); |
if (!frame) { |
$wnd.alert("Error: Can't find printing frame."); |
return; |
} |
frame = frame.contentWindow; |
var doc = frame.document; |
doc.open(); |
doc.write(html); |
doc.close(); |
frame.focus(); |
frame.print(); |
}-*/; |
public static void it(UIObject obj) { |
it("", obj.getElement().toString()); |
} |
public static void it(Element element) { |
it("", element.toString()); |
} |
public static void it(String style, String it) { |
it("<it><header>"+style+"</header><body>"+it+"</body></it>"); |
} |
public static void it(String style, UIObject obj) { |
it(style, obj.getElement().toString()); |
} |
public static void it(String style, Element element) { |
it(style, element.toString()); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/util/UtilArray.java |
---|
New file |
0,0 → 1,20 |
package org.tela_botanica.client.util; |
public class UtilArray { |
/** |
* @see http://leghumped.com/blog/2007/12/20/in_array-and-implode-for-java/ |
* @param ary |
* @param delim |
* @return |
*/ |
public static String implode(String[] ary, String delim) { |
String out = ""; |
for (int i = 0; i < ary.length; i++) { |
if (i != 0) { out += delim; } |
out += ary[i]; |
} |
return out; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/util/UtilDAO.java |
---|
New file |
0,0 → 1,118 |
package org.tela_botanica.client.util; |
import java.util.HashMap; |
import java.util.Iterator; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.modeles.Configuration; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.URL; |
public class UtilDAO { |
/** |
* @author greg |
* @description La classe utilDAO fournit des méthodes communes pour les outils DAO |
* */ |
private static String baseUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
/** |
* @author greg |
* @description La classe construireRequete permet de revonyer un object RequestBuilder pour le service JREST |
* @param nomService String le nom du service JREST |
* @param strParametres String le paramètre pour le service |
*/ |
public static RequestBuilder construireRequete(String nomService, String strParametres) { |
String[] arrParametres = {strParametres}; |
return construireRequete(nomService, arrParametres); |
} |
/** |
* |
* @param nomService |
* @param arrParametres |
* @return |
*/ |
public static RequestBuilder construireRequete(String nomService, String[] arrParametres) { |
return construireRequete(nomService, arrParametres, "GET"); |
} |
public static RequestBuilder construireRequete(String nomService, String[] arrParametres, String typeRequete) { |
HashMap<String, String> hmRestrictions = null; |
return construireRequete(nomService, arrParametres, hmRestrictions, typeRequete); |
} |
public static RequestBuilder construireRequete(String nomService, HashMap<String, String> hmRestrictions) { |
return construireRequete(nomService, hmRestrictions, "GET"); |
} |
public static RequestBuilder construireRequete(String nomService, HashMap<String, String> hmRestrictions, String typeRequete) { |
String[] arrParametres = null; |
return construireRequete( nomService, arrParametres, hmRestrictions, typeRequete); |
} |
public static RequestBuilder construireRequete(String nomService, String[] arrParametres, HashMap<String, String> hmRestrictions, String typeRequete) { |
String restrictions = ""; |
//Les restrictions sont ajoutées en paramètres GET |
if ((hmRestrictions!=null)&&(hmRestrictions.size() > 0)) { |
Iterator<String> itRestrictions = hmRestrictions.keySet().iterator(); |
while (itRestrictions.hasNext()) { |
String cle = itRestrictions.next(); |
restrictions += cle + "=" + hmRestrictions.get(cle); |
if (itRestrictions.hasNext()) { |
restrictions = restrictions + "&"; |
} |
} |
restrictions = "?" + restrictions; |
} |
String strParametres = "/"; |
if (arrParametres != null) { |
for (int i=0; i < arrParametres.length; i++) { |
if (arrParametres[i] != null) { |
strParametres += arrParametres[i]+ "/"; |
} |
} |
} |
String wholeUrl = baseUrl + nomService + strParametres + restrictions; |
wholeUrl = URL.encode(wholeUrl); |
RequestBuilder rb; |
if (typeRequete.equals("GET")) { |
rb = new RequestBuilder(RequestBuilder.GET, wholeUrl); |
} else { |
rb = new RequestBuilder(RequestBuilder.POST, wholeUrl); |
} |
return rb; |
} |
/** |
* |
* @param nomService String le nom du service |
* @return un objet RB |
*/ |
public static RequestBuilder construireRequete(String nomService) { |
String[] arrParametres = null; |
return construireRequete(nomService, arrParametres); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/util/UtilTruk.java |
---|
New file |
0,0 → 1,34 |
package org.tela_botanica.client.util; |
import java.util.Iterator; |
import java.util.LinkedList; |
public class UtilTruk { |
/** |
* Traite une liste récupéré de truk et renvoie une chaîne de caractère formatée |
* |
* @param la liste truk |
* @param le séparateur pour chaque valeur |
* */ |
public static String traiterTrukListe(LinkedList<String> listTruk, String separateur) { |
String listeRetour = ""; |
Iterator<String> it = listTruk.iterator(); |
while (it.hasNext()) { |
String valeurCourante = it.next(); |
listeRetour += valeurCourante; |
if (it.hasNext()) { |
listeRetour += separateur; |
} |
} |
return listeRetour; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/Mediateur.java |
---|
New file |
0,0 → 1,705 |
package org.tela_botanica.client; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.composants.AideFenetre; |
import org.tela_botanica.client.composants.IdentificationFenetre; |
import org.tela_botanica.client.composants.ParametreFenetre; |
import org.tela_botanica.client.i18n.Constantes; |
import org.tela_botanica.client.i18n.ErrorMessages; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Collection; |
import org.tela_botanica.client.modeles.CollectionListe; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneListe; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureListe; |
import org.tela_botanica.client.modeles.StructureValorisation; |
import org.tela_botanica.client.modeles.Utilisateur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.vues.CollectionListeVue; |
import org.tela_botanica.client.vues.CollectionVue; |
import org.tela_botanica.client.vues.ContenuVue; |
import org.tela_botanica.client.vues.EnteteVue; |
import org.tela_botanica.client.vues.PersonneForm; |
import org.tela_botanica.client.vues.PublicationForm; |
import org.tela_botanica.client.vues.StructureForm; |
import org.tela_botanica.client.vues.PersonneVue; |
import org.tela_botanica.client.vues.PopupChargement; |
import org.tela_botanica.client.vues.PublicationVue; |
import org.tela_botanica.client.vues.StatutVue; |
import org.tela_botanica.client.vues.StructureVue; |
import org.tela_botanica.client.vues.MenuVue; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.WindowEvent; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.Dialog; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.Viewport; |
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; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.RootPanel; |
public class Mediateur implements Rafraichissable { |
private Viewport viewport; |
private Modele modele = null; |
public Constantes i18nC; |
public ErrorMessages messages; |
private EnteteVue panneauNord = null; |
private MenuVue panneauOuest = null; |
private ContenuVue panneauCentre = null; |
private StatutVue panneauSud = null; |
private Rafraichissable contenuPanneauCentre = null; |
private IdentificationFenetre fenetreIdentification = null; |
public Mediateur() { |
// Enregistrement du Médiateur dans le Registre |
Registry.register(RegistreId.MEDIATEUR, this); |
// Gestion de l'i18n |
i18nC = GWT.create(Constantes.class); |
messages = GWT.create(ErrorMessages.class); |
// Création du Modèle qui s'enregistre lui même dans le Registre |
modele = new Modele(); |
// Création de l'utilisateur courrant |
Registry.register(RegistreId.UTILISATEUR_COURANT, new Utilisateur(null, false)); |
this.connecterUtilisateur(null, null); |
// Création du projet courrant |
Registry.register(RegistreId.PROJET_COURANT, new Projet()); |
// Création du Viewport qui contient la disposition globale de l'application |
viewport = new Viewport(); |
viewport.setLayout(new BorderLayout()); |
// Création des différents panneaux |
creerPanneauNord(); |
creerPanneauOuest(); |
creerPanneauCentral(); |
creerPanneauSud(); |
// Registry utile car présent partout! |
Registry.register(RegistreId.VIEWPORT, viewport); |
Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest); |
Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre); |
Registry.register(RegistreId.PANNEAU_SUD, panneauSud); |
// Chargement du menu |
chargeMenuApplication(); |
// Retour à GWT du Viewport une fois constuit |
RootPanel.get().add(viewport); |
masquerPopinChargement(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION des PANNEAUX PRINCIPAUX |
//+----------------------------------------------------------------------------------------------------------------+ |
private void creerPanneauNord() { |
panneauNord = new EnteteVue(this); |
BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100); |
regionNord.setCollapsible(true); |
regionNord.setFloatable(true); |
regionNord.setSplit(false); |
regionNord.setMargins(new Margins(5, 5, 0, 5)); |
viewport.add(panneauNord, regionNord); |
} |
private void creerPanneauOuest() { |
panneauOuest = new MenuVue(this); |
BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200); |
regionOuest.setSplit(true); |
regionOuest.setCollapsible(true); |
regionOuest.setMargins(new Margins(5)); |
viewport.add(panneauOuest, regionOuest); |
} |
private void creerPanneauCentral() { |
panneauCentre = new ContenuVue(this); |
BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER); |
regionCentre.setMargins(new Margins(5, 5, 5, 0)); |
viewport.add(panneauCentre, regionCentre); |
} |
private void creerPanneauSud() { |
panneauSud = new StatutVue(); |
BorderLayoutData regionSud = new BorderLayoutData(LayoutRegion.SOUTH, 20); |
regionSud.setCollapsible(true); |
regionSud.setFloatable(true); |
regionSud.setSplit(false); |
regionSud.setMargins(new Margins(0)); |
viewport.add(panneauSud, regionSud); |
} |
public void actualiserPanneauCentral() { |
System.out.println(panneauCentre); |
panneauCentre.layout(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION du MENU |
//+----------------------------------------------------------------------------------------------------------------+ |
public void chargeMenuApplication() { |
((MenuVue) Registry.get(RegistreId.PANNEAU_OUEST)).chargerMenus(); |
} |
public void clicMenu(String codeMenuClique) { |
activerChargement(codeMenuClique); |
panneauCentre.removeAll(); |
if (codeMenuClique.equals(MenuApplicationId.STRUCTURE)) { |
modele.selectionnerStructure(panneauCentre, getProjetId(), null); |
} else if (codeMenuClique.equals(MenuApplicationId.PUBLICATION)) { |
modele.selectionnerPublications(panneauCentre); |
} else if (codeMenuClique.equals(MenuApplicationId.PERSONNE)) { |
modele.selectionnerPersonne(panneauCentre, null, getProjetId(), null); |
} else if (codeMenuClique.equals(MenuApplicationId.COLLECTION)) { |
selectionnerCollection(panneauCentre, null); |
} else { |
GWT.log("Non implémenté! Menu id : "+codeMenuClique, null); |
} |
panneauCentre.layout(); |
} |
public void activerChargement(String message) { |
afficherPopinChargement(); |
panneauSud.showBusy(i18nC.chargement()+" "+message); |
} |
public void desactiverChargement() { |
masquerPopinChargement(); |
panneauSud.clear(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES FENÊTRES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void ouvrirAide() { |
AideFenetre aideFenetre = new AideFenetre(); |
aideFenetre.show(); |
// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs... |
//aideFenetre.el().fadeIn(FxConfig.NONE); |
} |
public void ouvrirParametres() { |
ParametreFenetre parametresFenetre = new ParametreFenetre(); |
parametresFenetre.show(); |
} |
public void ouvrirIdentification() { |
fenetreIdentification = new IdentificationFenetre(); |
fenetreIdentification.show(); |
} |
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(), "Biblio en ligne", ""); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de l'UTILISATEUR et de l'IDENTIFICATION |
//+----------------------------------------------------------------------------------------------------------------+ |
/** |
* Retourne l'identifiant de l'utilisateur courrant de l'application. |
*/ |
public String getUtilisateurId() { |
String id = null; |
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
if (!utilisateurCourant.getId().equals("")) { |
id = utilisateurCourant.getId(); |
} |
return id; |
} |
public void connecterUtilisateur(String login, String mdp) { |
modele.connecterUtilisateur(this, login, mdp); |
} |
public void deconnecterUtilisateur() { |
modele.deconnecterUtilisateur(this); |
} |
public void mettreAJourEtatIdentification(Utilisateur utilisateur) { |
// Mise à jour du registre |
Registry.register(RegistreId.UTILISATEUR_COURANT, utilisateur); |
// Création de l'information de mise à jour de l'utilisateur |
Information info = new Information("maj_utilisateur"); |
// Rafraichissement de la fenêtre d'Identification |
if (fenetreIdentification != null) { |
fenetreIdentification.rafraichir(info); |
} |
// Rafraichissement du panneau Nord |
panneauNord.rafraichir(info); |
// Rafraichissement du panneau Centre |
if (contenuPanneauCentre != null) { |
contenuPanneauCentre.rafraichir(info); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES VALEURS ET LISTES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void afficherListeValeurs(ValeurListe nouvelleDonnees) { |
if (panneauCentre.getId().equals(ComposantId.PANNEAU_STRUCTURE_FORM)) { |
((StructureForm) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees); |
} else { |
GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null); |
} |
} |
public void obtenirListeValeurEtRafraichir(Rafraichissable vue, String listeId) { |
modele.obtenirListeValeurs(vue, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId)); |
} |
public void obtenirValeurEtRafraichir(Rafraichissable vue, String listeId, String identifiantValeur) { |
modele.obtenirValeur(vue, "abv", ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), identifiantValeur); |
} |
public void obtenirListeRegionsEtRafraichir(Rafraichissable vue, String strListeId, String strPays) { |
modele.obtenirListeRegion(vue, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(strListeId), strPays+".__"); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION des PROJETS |
//+----------------------------------------------------------------------------------------------------------------+ |
/** |
* Retourne l'identifiant du projet courrant de l'application. |
*/ |
public String getProjetId() { |
String id = null; |
Projet projetCourant = (Projet) Registry.get(RegistreId.PROJET_COURANT); |
if (projetCourant != null && !projetCourant.getId().equals("")) { |
id = projetCourant.getId(); |
} |
return id; |
} |
//Greg : ajout d'un écouteur pour le changement liste projet |
public void selectionnerProjets(Rafraichissable vue) { |
modele.selectionnerProjets(vue); |
} |
public void afficherListeProjets(ProjetListe projets) { |
panneauOuest.rafraichir(projets); |
} |
public void selectionnerProjetCourant(Projet projetSelectionne) { |
Registry.register(RegistreId.PROJET_COURANT, projetSelectionne); |
if (contenuPanneauCentre instanceof PersonneVue) { |
modele.selectionnerPersonne(contenuPanneauCentre, null, getProjetId(), null); |
//FIXME Le rafraichissement du panneau ne se fait pas! |
} else if (contenuPanneauCentre instanceof StructureVue) { |
modele.obtenirListeStructures(contenuPanneauCentre, getProjetId()); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES STRUCTURES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void afficherListeStructures(StructureListe structuresACharger) { |
// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacher |
StructureVue institutionVue = new StructureVue(this); |
panneauCentre.add(institutionVue); |
panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_LISTE); |
contenuPanneauCentre = institutionVue; |
institutionVue.rafraichir(structuresACharger); |
} |
public void clicListeStructure(Structure structure) { |
contenuPanneauCentre.rafraichir(structure); |
if (structure.getPersonnel() == null) { |
selectionnerStructureAPersonne(contenuPanneauCentre, structure.getId(), StructureAPersonne.ROLE_EQUIPE); |
} else { |
GWT.log("OK personnel déjà chargé", null); |
} |
} |
public void clicAjouterStructure() { |
panneauCentre.removeAll(); |
StructureForm structureForm = new StructureForm(this, StructureForm.MODE_AJOUTER); |
panneauCentre.add(structureForm); |
panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM); |
panneauCentre.layout(); |
} |
public void clicModifierStructure(List<Structure> structureSelection) { |
if (structureSelection.size() == 0) { |
Info.display("Information", "Veuillez sélectionner une structure."); |
} else if (structureSelection.size() > 1) { |
Info.display("Information", "Veuillez sélectionner une seule structure à la fois."); |
} else if (structureSelection.size() == 1) { |
panneauCentre.removeAll(); |
StructureForm structureForm = new StructureForm(this, StructureForm.MODE_MODIFIER); |
panneauCentre.add(structureForm); |
panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM); |
selectionnerStructure(structureForm, structureSelection.get(0).getId()); |
selectionnerStructureAPersonne(structureForm, structureSelection.get(0).getId(), StructureAPersonne.ROLE_EQUIPE); |
panneauCentre.layout(); |
} else { |
Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierStructure() du Médiateur."); |
} |
} |
public void clicSupprimerStructure(final Rafraichissable vue, final List<Structure> structureSelection) { |
if (structureSelection.size() == 0) { |
Info.display("Information", "Veuillez sélectionner une structure."); |
} else if(structureSelection.size() > 0) { |
String message = "Êtes vous sur de vouloir supprimer les structures sélectionnées ?"; |
if (structureSelection.size() == 1) { |
message = "Êtes vous sur de vouloir supprimer la structure sélectionnée ?"; |
} |
final Listener<WindowEvent> suppressionEcouteur = new Listener<WindowEvent>() { |
public void handleEvent(WindowEvent ce) { |
Dialog dialog = (Dialog) ce.component; |
Button btn = dialog.getButtonPressed(); |
if (btn.getText().equals(dialog.yesText)) { |
String idStr = "" ; |
for(int i = 0 ; i < structureSelection.size() ; i++) { |
idStr += structureSelection.get(i).getId()+"," ; |
} |
supprimerStructure(vue, idStr); |
} |
} |
}; |
MessageBox.confirm("Supprimer une structure", message, suppressionEcouteur); |
} else { |
Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerStructure() du Médiateur."); |
} |
} |
public void selectionnerStructure(Rafraichissable vue, String structureId) { |
modele.selectionnerStructure(vue, getProjetId(), structureId); |
} |
public void ajouterStructure(Rafraichissable vue, Structure structure, StructureConservation conservation, StructureValorisation valorisation) { |
modele.ajouterStructure(vue, getUtilisateurId(), structure, conservation, valorisation); |
} |
public void modifierStructure(Rafraichissable vue, String structureId, Structure structure, StructureConservation conservation, StructureValorisation valorisation) { |
modele.modifierStructure(vue, getUtilisateurId(), structureId, structure, conservation, valorisation); |
} |
public void supprimerStructure(Rafraichissable vueARafraichir, String IdentifiantsStructureSepareParVirgule) { |
modele.supprimerStructure(vueARafraichir, getUtilisateurId(), IdentifiantsStructureSepareParVirgule); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de la relation STRUCTURE A PERSONNE |
public void selectionnerStructureAPersonne(Rafraichissable vue, String structureId, String roleId) { |
GWT.log("Structure : "+structureId, null); |
modele.selectionnerStructureAPersonne(vue, getUtilisateurId(), null, structureId, roleId); |
} |
public void ajouterStructureAPersonne(Rafraichissable vue, String structureId, StructureAPersonneListe personnelAjoute) { |
if (personnelAjoute != null && personnelAjoute.size() > 0) { |
for (Iterator<String> it = personnelAjoute.keySet().iterator(); it.hasNext();) { |
modele.ajouterStructureAPersonne(vue, getUtilisateurId(), structureId, (StructureAPersonne) personnelAjoute.get(it.next())); |
} |
} |
} |
public void modifierStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelModifie) { |
if (personnelModifie != null && personnelModifie.size() > 0) { |
GWT.log("Mediateur :modif", null); |
for (Iterator<String> it = personnelModifie.keySet().iterator(); it.hasNext();) { |
modele.modifierStructureAPersonne(vue, getUtilisateurId(), (StructureAPersonne) personnelModifie.get(it.next())); |
} |
} |
} |
public void supprimerStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelSupprime) { |
if (personnelSupprime != null && personnelSupprime.size() > 0) { |
String idStrAPer = "" ; |
for (Iterator<String> it = personnelSupprime.keySet().iterator(); it.hasNext();) { |
idStrAPer += personnelSupprime.get(it.next()).getId()+"," ; |
} |
modele.supprimerStructureAPersonne(vue, getUtilisateurId(), idStrAPer); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION des COLLECTIONS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void afficherListeCollections(CollectionListe collectionsACharger) { |
CollectionVue collectionVue = new CollectionVue(this); |
panneauCentre.add(collectionVue); |
panneauCentre.setId(ComposantId.PANNEAU_COLLECTION_LISTE); |
contenuPanneauCentre = collectionVue; |
collectionVue.rafraichir(collectionsACharger); |
} |
public void clicListeCollection(Collection collectionCliquee) { |
contenuPanneauCentre.rafraichir(collectionCliquee); |
} |
public void clicAjouterCollection() { |
// TODO Auto-generated method stub |
} |
public void clicModifierCollection(List<Collection> selection) { |
// TODO Auto-generated method stub |
} |
public void clicSupprimerCollection(CollectionListeVue collectionListeVue, List<Collection> collectionsASupprimer) { |
// TODO Auto-generated method stub |
} |
public void selectionnerCollection(Rafraichissable vueARafraichir, String collectionId) { |
modele.selectionnerCollection(vueARafraichir, getProjetId(), collectionId); |
} |
public void ajouterCollection(Rafraichissable vueARafraichir, Collection collection) { |
modele.ajouterCollection(vueARafraichir, getUtilisateurId(), collection); |
} |
public void modifierCollection(Rafraichissable vueARafraichir, Collection collection) { |
modele.modifierCollection(vueARafraichir, getUtilisateurId(), collection); |
} |
public void supprimerCollection(Rafraichissable vueARafraichir, String IdentifiantsCollectionSepareParVirgule) { |
modele.supprimerCollection(vueARafraichir, getUtilisateurId(), IdentifiantsCollectionSepareParVirgule); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PERSONNES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void clicListePersonne(Personne personne) { |
contenuPanneauCentre.rafraichir(personne); |
} |
public void afficherListePersonnes(PersonneListe personnesACharger) { |
PersonneVue personneVue = new PersonneVue(); |
contenuPanneauCentre = personneVue; |
panneauCentre.add(personneVue); |
contenuPanneauCentre.rafraichir(personnesACharger); |
//contenuPanneauCentre.layout(); |
} |
public void clicAjouterPersonne() { |
afficherPopinChargement(); |
panneauCentre.removeAll(); |
PersonneForm formulairePersonneVue = new PersonneForm(PersonneForm.MODE_AJOUTER); |
contenuPanneauCentre = formulairePersonneVue; |
panneauCentre.add(formulairePersonneVue); |
panneauCentre.layout(); |
} |
public void clicModifierPersonne(Personne personne) { |
if (personne!=null) { |
panneauCentre.removeAll(); |
PersonneForm formulairePersonneVue = new PersonneForm(PersonneForm.MODE_MODIFIER); |
contenuPanneauCentre = formulairePersonneVue; |
panneauCentre.add(formulairePersonneVue); |
selectionnerPersonne(formulairePersonneVue, personne); |
panneauCentre.layout(); |
} |
} |
public void selectionnerPersonne(Rafraichissable vue, Personne personne) { |
modele.selectionnerPersonne(vue, personne.getId(), null, null); |
} |
public void clicSupprimerPersonne(final Rafraichissable vue,final List<Personne> personneSelection) { |
if (personneSelection.size() == 0) { |
Info.display("Information", "Veuillez sélectionner une personne."); |
} else if(personneSelection.size() > 0) { |
String message = "Êtes vous sur de vouloir supprimer les personnes sélectionnées ?"; |
if (personneSelection.size() == 1) { |
message = "Êtes vous sur de vouloir supprimer la personne sélectionnée ?"; |
} |
final Listener<WindowEvent> listenerSuppression = new Listener<WindowEvent>() { |
public void handleEvent(WindowEvent ce) { |
Dialog dialog = (Dialog) ce.component; |
Button btn = dialog.getButtonPressed(); |
if (btn.getText().equals(dialog.yesText)) { |
String idStr = "" ; |
Iterator<Personne> itPersonne = personneSelection.iterator(); |
while (itPersonne.hasNext()) { |
Personne personneCourante = itPersonne.next(); |
idStr += personneCourante.getId(); |
idStr +=","; |
} |
modele.supprimerPersonne(vue, idStr); |
} |
} |
}; |
MessageBox.confirm("Supprimer une personne", message, listenerSuppression); |
} else { |
Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerPersonne() du Médiateur."); |
} |
} |
public void selectionnerPersonneParNomComplet(Rafraichissable vue, String projetId, String nomComplet) { |
modele.selectionnerPersonne(vue, null, projetId, nomComplet); |
} |
public void enregistrerPersonne(Rafraichissable vue, Personne personne){ |
if (personne.getId()!=null && !personne.getId().trim().equals("")) { |
modele.modifierPersonne(vue, personne); |
} else { |
modele.ajouterPersonne(vue, personne); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PUBLICATIONS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void afficherListePublication(PublicationListe nouvelleDonnees) { |
PublicationVue publicationVue = new PublicationVue() ; |
panneauCentre.removeAll(); |
panneauCentre.add(publicationVue); |
contenuPanneauCentre = publicationVue; |
publicationVue.rafraichir(nouvelleDonnees); |
} |
public void clicListePublication(Publication publication) { |
panneauCentre.rafraichir(publication); |
} |
public void clicAjouterPublication() { |
panneauCentre.removeAll(); |
PublicationForm publicationForm = new PublicationForm(); |
panneauCentre.add(publicationForm); |
panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION); |
panneauCentre.layout(); |
} |
public void clicModifierPublication(List<Publication> publicationListe) { |
if(publicationListe.size() <= 0) { |
MessageBox.alert("Attention", "Vous devez sélectionner une publication", null); |
} else { |
Publication pubAModifier = publicationListe.get(publicationListe.size() -1); |
panneauCentre.removeAll(); |
PublicationForm publicationForm = new PublicationForm(); |
panneauCentre.add(publicationForm); |
panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION); |
panneauCentre.layout(); |
publicationForm.rafraichir(pubAModifier); |
} |
} |
public void clicSupprimerPublication(final List<Publication> publicationListe) { |
if (publicationListe.size() <= 0) { |
MessageBox.alert("Attention", "Vous devez sélectionner une publication", null); |
} else { |
String message = "Voulez-vous vraiment supprimer ces publication ?"; |
if(publicationListe.size() == 1) { |
message = "Voulez-vous vraiment supprimer cette publication ?"; |
} |
final Listener<WindowEvent> listenerSuppression = new Listener<WindowEvent>() { |
public void handleEvent(WindowEvent ce) { |
Dialog dialog = (Dialog) ce.component; |
Button btn = dialog.getButtonPressed(); |
if (btn.getText().equals(dialog.yesText)) { |
modele.supprimerPublication(contenuPanneauCentre, getUtilisateurId(),publicationListe); |
} |
} |
}; |
MessageBox.confirm("Supprimer une publication", message, listenerSuppression); |
} |
} |
public void ajouterPublication(PublicationForm publicationForm, Publication publi) { |
modele.ajouterPublication(contenuPanneauCentre, getUtilisateurId(), publi); |
} |
public void modifierPublication(PublicationForm publicationForm, Publication publi) { |
modele.modifierPublication(contenuPanneauCentre, getUtilisateurId(), publi); |
} |
public void clicObtenirListeEditeurs(Rafraichissable vueARafraichir) { |
modele.selectionnerStructure(vueARafraichir, null, null); |
} |
public void clicObtenirListeAuteurs(Rafraichissable vueARafraichir) { |
modele.selectionnerPersonne(vueARafraichir, null, null, null); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// RAFRAICHISSEMENT |
//+----------------------------------------------------------------------------------------------------------------+ |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Utilisateur) { |
mettreAJourEtatIdentification((Utilisateur) nouvelleDonnees); |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION du STATUT |
//+----------------------------------------------------------------------------------------------------------------+ |
public void afficherPopinChargement() { |
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).center(); |
} |
public void masquerPopinChargement() { |
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/http/JsonRestRequestBuilder.java |
---|
New file |
0,0 → 1,26 |
package org.tela_botanica.client.http; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestBuilder; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
public class JsonRestRequestBuilder extends RequestBuilder { |
public JsonRestRequestBuilder(Method httpMethod, String url) { |
super(httpMethod, url); |
// TODO Auto-generated constructor stub |
} |
public Request envoyerRequete(String donneesRequete, RequestCallback retour) { |
Request requeteSortie = null; |
try { |
requeteSortie = sendRequest(donneesRequete, retour); |
} catch (RequestException e) { |
GWT.log("Une exception est survenue lors de l'envoie de la requête JRest", e); |
} |
return requeteSortie; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/http/JsonRestRequestCallback.java |
---|
New file |
0,0 → 1,84 |
package org.tela_botanica.client.http; |
import org.tela_botanica.client.modeles.Information; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.Request; |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class JsonRestRequestCallback implements RequestCallback { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service : "+request.toString(), exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (avoirEnteteDebug(response)) { |
final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data")); |
if (reponseEnteteDeboguage.isArray() != null) { |
GWT.log("DEBOGUAGE:\n"+formaterDeboguages(reponseEnteteDeboguage.isArray()), null); |
} |
} |
JSONValue responseValue = null; |
if (avoirContenu(response)) { |
responseValue = JSONParser.parse(response.getText()); |
} |
surReponse(responseValue); |
} |
} |
public void surReponse(JSONValue responseValue) { |
} |
public String formaterDeboguages(JSONArray jsonArray) { |
String deboguageFormate = ""; |
for (int i = 0 ; i < jsonArray.size() ; i++) { |
if (jsonArray.get(i).isString() != null) { |
deboguageFormate += jsonArray.get(i).isString().stringValue()+"\n"; |
} |
} |
return deboguageFormate; |
} |
public Boolean avoirEnteteDebug(Response reponse) { |
Boolean retour = false; |
if (reponse.getHeader("X-DebugJrest-Data") != null && reponse.getHeader("X-DebugJrest-Data").length() != 0) { |
retour = true; |
} |
return retour; |
} |
public Boolean avoirContenu(Response reponse) { |
Boolean retour = false; |
if (reponse.getText() != null && reponse.getText().length() != 0) { |
retour = true; |
} else if (reponse.getText() == null) { |
GWT.log("La réponse vaul null", null); |
} else if (reponse.getText().length() == 0) { |
GWT.log("La réponse a une taille de 0", null); |
} |
return retour; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/Constantes.java |
---|
New file |
0,0 → 1,144 |
package org.tela_botanica.client.i18n; |
import com.google.gwt.i18n.client.ConstantsWithLookup; |
public interface Constantes extends ConstantsWithLookup{ |
// Général |
String chargement(); |
String oui(); |
String non(); |
String autres(); |
// Boutons |
String ajouter(); |
String modifier(); |
String supprimer(); |
// Téléphone |
String FIX(); |
String PORT1(); |
String PORT2(); |
// Menu |
String titreMenu(); |
String txtListeProjetDefaut(); |
String menuAccueil(); |
String menuProjet(); |
String menuStructure(); |
String menuCollection(); |
String menuPersonne(); |
String menuPublication(); |
// Structure : titres |
String titreStructureListe(); |
String titreAjoutFormStructurePanneau(); |
String titreModifFormStructurePanneau(); |
// Structure : actions |
String suppressionStructure(); |
// Structure : identification |
String structureInfoGeneral(); |
String titreCommunication(); |
String titreAdministratif(); |
String acronyme(); |
String acces(); |
String dateFondation(); |
String nbrePersonnel(); |
String description(); |
String adresse(); |
String codePostal(); |
String ville(); |
String region(); |
String pays(); |
String telephone(); |
String courriel(); |
String siteWeb(); |
// Structure : personnel |
String structureInfoPersonnel(); |
String titrePersonnel(); |
String titreMembre(); |
String nbrePersonnelCollection(); |
String fonction(); |
String prenom(); |
String nom(); |
String telephoneFixe(); |
String fax(); |
String courrielPrincipal(); |
String statut(); |
String tpsTravail(); |
String specialite(); |
String boolContact(); |
// Structure : conservation |
String structureInfoConservation(); |
String titreLocal(); |
String localSpecifique(); |
String titreConservationPersonnel(); |
String formation(); |
String formationInteret(); |
String meubleSpecifique(); |
String localParametre(); |
String conservationEnCommun(); |
String accesControle(); |
String titreOperation(); |
String restauration(); |
String materielConservation(); |
String traitement(); |
String titreAcquisition(); |
String acquisitionCollection(); |
String acquisitionEchantillon(); |
String acquisitionTraitement(); |
String acquisitionTraitementInsecte(); |
String acquisitionTraitementPoison(); |
// Structure : valorisation |
String structureInfoValorisation(); |
String titreActionValorisation(); |
String titreRechercherScientifique(); |
String titreAccesUsage(); |
String action(); |
String actionPublication(); |
String collectionAutre(); |
String actionFuture(); |
String recherche(); |
String rechercheProvenance(); |
String rechercheType(); |
String visite(); |
// Collection : liste |
String collectionListeTitre(); |
String structure(); |
String suppressionCollection(); |
//Personne |
String personneListeLabel(); |
String personneModeAjout(); |
String personneModeModifier(); |
String personneNomComplet(); |
String personneCodePostal(); |
String personneVille(); |
String personneCourriel(); |
String personneNom(); |
String personneNomAutre(); |
String personneAbreviation(); |
String personneAbreviationAutre(); |
String personneDateNaissance(); |
String personneLieuNaissance(); |
String personneEstDecedee(); |
String personneDateDeces(); |
String personneLieuDeces(); |
String personnePrenom(); |
String personneIdentite(); |
String personneInfoNat(); |
String personneProjet(); |
String personneAdresses(); |
String personneLogos(); |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/ErrorMessages.java |
---|
New file |
0,0 → 1,9 |
package org.tela_botanica.client.i18n; |
import com.google.gwt.i18n.client.Messages; |
public interface ErrorMessages extends Messages { |
String erreurRafraichir(Class inClass, Class currentClass); |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/AppliConstantes.properties |
---|
New file |
0,0 → 1,4 |
# Application |
appliNom = Collections en ligne |
appliCode = COEL |
appliVersion = 0.1 |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/AppliConstantes.java |
---|
New file |
0,0 → 1,9 |
package org.tela_botanica.client.i18n; |
import com.google.gwt.i18n.client.ConstantsWithLookup; |
public interface AppliConstantes extends ConstantsWithLookup{ |
String appliNom(); |
String appliCode(); |
String appliVersion(); |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/Constantes.properties |
---|
New file |
0,0 → 1,137 |
# Général |
chargement = Chargement ... |
oui = oui |
non = non |
autres = Autres |
# Boutons |
ajouter = Ajouter |
modifier = Modifier |
supprimer = Supprimer |
# Téléphone |
FIX = Tél. Fixe |
PORT2 = Tél. Portable |
PORT1 = Tél. Portable |
# Menus |
titreMenu = Menu |
txtListeProjetDefaut = Choisisez un projet... |
menuAccueil = Accueil |
menuProjet = Projets |
menuStructure = Institutions |
menuCollection = Collections |
menuPersonne = Personnes |
menuPublication = Publications |
# Structure : titres |
titreStructureListe = Institutions |
titreAjoutFormStructurePanneau = Ajout d'une institution |
titreModifFormStructurePanneau = Modification d'une institution |
# Structure : actions |
suppressionStructure = Suppression d'une Institution |
# Grille/Table personnel |
fonction = Fonction |
prenom = Prénom |
nom = Nom |
telephoneFixe = Téléphone fixe |
fax = Fax |
courrielPrincipal = Courriel principal |
statut = Statut |
tpsTravail = Temps de travail |
specialite = Spécialité principale |
boolContact = Contact ? |
# Structure : identification |
structureInfoGeneral = Général |
titreAdministratif = Renseignements administratifs |
titreCommunication = Communication |
acronyme = Acronyme |
acces = Condition d'accès |
dateFondation = Date de fondation |
nbrePersonnel = Personne travaillant dans l'institution |
description = Description |
adresse = Adresse |
codePostal = Code Postal |
ville = Ville |
region = Région |
pays = Pays |
telephone = Téléphone |
courriel = Courriel |
siteWeb = Site web |
# Structure : personnel |
structureInfoPersonnel = Personnel |
titrePersonnel = Personnel |
titreMembre = Membres du personnel |
nbrePersonnelCollection = Personnel des collections |
# Structure : conservation |
structureInfoConservation = Conservation |
titreLocal = Local |
titreConservationPersonnel = Formation du personnel à la conservation |
titreOperation = Opérations & matériels |
titreAcquisition = Acquisitions |
formation = Formation en conservation |
formationInteret = Intérêt pour une formation |
localSpecifique = Locaux spécifiques aux collections |
meubleSpecifique = Meubles spécifiques aux collections |
localParametre = Paramêtres maîtrisés |
conservationEnCommun = Conservation des collections en commun |
accesControle = Accès contrôlé |
restauration = Opérations actuelles de restauration |
materielConservation = Utilisation de matériel de conservation |
traitement = Traitements globaux |
acquisitionCollection = Acquisition de nouvelles collections |
acquisitionEchantillon = Mise en herbier de nouveaux échnatillons |
acquisitionTraitement = Traitement avant intégration |
acquisitionTraitementInsecte = Désinsectisation |
acquisitionTraitementPoison = Empoisonnement |
# Structure : valorisation |
structureInfoValorisation = Valorisation |
titreActionValorisation = Actions de valorisation |
titreRechercherScientifique = Recherches scientifiques |
titreAccesUsage = Accès & Usages |
action = Réalisation d'actions de valorisation |
actionPublication = Publications |
collectionAutre = Autres collections |
actionFuture = Futures actions de valorisation |
recherche = Utilisation pour la recherche |
rechercheProvenance = Provenance des chercheurs |
rechercheType = Type de recherche |
visite = Condition de visite |
# Collection : liste |
collectionListeTitre = Collections |
structure = Institution |
suppressionCollection = Suppression d'une collection |
# Personne : Form |
personneListeLabel = Personnes |
personneModeAjout = Ajouter une personne |
personneModeModifier = Modifier une personne |
personneNomComplet = Nom Complet |
personneCodePostal = Code Postal |
personneVille = Ville |
personneCourriel = Courriel |
personneNom = Nom |
personneNomAutre = Autre Nom |
personneAbreviation = Abréviation |
personneAbreviationAutre = Autres abréviations |
personneDateNaissance = Date de naissance |
personneLieuNaissance = Lieu de naissance |
personneEstDecedee = Est decedee |
personneDateDeces = Date de décès |
personneLieuDeces = Lieu de décès |
personneIdentite = Identité |
personnePrenom = Prénom |
personneInfoNat = Informations Naturalistes |
personneProjet = Projet |
personneAdresses = Adresses |
personneLogos = Logos |
/branches/v0.1-dora/src/org/tela_botanica/client/i18n/ErrorMessages.properties |
---|
New file |
0,0 → 1,0 |
erreurRafraichir = Pas de correspondance {0} dans la methode rafraichir() de la classe {1} |
/branches/v0.1-dora/src/org/tela_botanica/client/ComposantId.java |
---|
New file |
0,0 → 1,23 |
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_CONNEXION = "coel-id-btn-connexion"; |
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"; |
public static final String PANNEAU_AIDE = "coel-id-panneau-aide"; |
public static final String PANNEAU_COLLECTION_LISTE = "coel-id_panneau-liste-collection"; |
public static final String PANNEAU_STRUCTURE_FORM = "coel-id_panneau-form-structure"; |
public static final String PANNEAU_STRUCTURE_LISTE = "coel-id_panneau-liste-structure"; |
public static final String PANNEAU_FORM_PUBLICATION = "coel-id_panneau-form-publication"; |
public static final String PANNEAU_ENTETE = "coel-entete"; |
public static final String DIV_TITRE = "coel-titre"; |
public static final String DIV_IDENTIFICATION = "coel-identification"; |
public static final String DIV_IDENTIFICATION_MSG = "coel-identification-zone-msg"; |
public static final String PANNEAU_STATUT = "coel-statut"; |
public static final String ZONE_DETAIL_ENTETE = "coel-detail-entete"; |
public static final String ZONE_DETAIL_CORPS = "coel-detail-corps"; |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/RegistreId.java |
---|
New file |
0,0 → 1,21 |
package org.tela_botanica.client; |
public final class RegistreId { |
public static final String APPLI_NOM = "Application Nom"; |
public static final String APPLI_CODE = "Code de l'Application"; |
public static final String APPLI_VERSION = "Version"; |
public static final String APPLI_REVISION = "Revision"; |
public static final String CONFIG = "Configuration"; |
public static final String MEDIATEUR = "Médiateur"; |
public static final String MODELE = "Modèle"; |
public static final String VIEWPORT = "Viewport"; |
public static final String PANNEAU_OUEST = "Panneau ouest"; |
public static final String PANNEAU_CENTRE = "Panneau central"; |
public static final String PANNEAU_INSTITUTION_DETAIL = "Panneau Institution détail"; |
public static final String PANNEAU_PUBLICATION_DETAIL = "panneau Publication détail"; |
public static final String PANNEAU_PERSONNE_DETAIL = "panneau Personne détail"; |
public static final String UTILISATEUR_COURANT = "Utilisateur courant"; |
public static final String PROJET_COURANT = "Objet Projet courant"; |
public static final String POPUP_CHARGEMENT = "Popup chargement"; |
public static final String PANNEAU_SUD = "Barre de statut"; |
} |
Property changes: |
Added: svn:keywords |
+Revision |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/client/Coel.java |
---|
New file |
0,0 → 1,48 |
package org.tela_botanica.client; |
import org.tela_botanica.client.i18n.AppliConstantes; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.vues.PopupChargement; |
import com.extjs.gxt.ui.client.GXT; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.EntryPoint; |
import com.google.gwt.core.client.GWT; |
public class Coel implements EntryPoint { |
private AppliConstantes i18nC = null; |
private Mediateur mediateur = null; |
public void onModuleLoad() { |
GXT.hideLoadingPanel("loading"); |
i18nC = getI18nConstante(); |
initialiserRegistre(); |
mediateur = getMediateur(); |
// J'appelle directement la page où je travaille |
mediateur.clicMenu(MenuApplicationId.COLLECTION); |
} |
protected void initialiserRegistre() { |
Registry.register(RegistreId.APPLI_NOM, i18nC.appliNom()); |
Registry.register(RegistreId.APPLI_CODE, i18nC.appliCode()); |
Registry.register(RegistreId.APPLI_VERSION, i18nC.appliVersion()); |
Registry.register(RegistreId.APPLI_REVISION, "$Revision$"); |
Registry.register(RegistreId.CONFIG, new Configuration()); |
Registry.register(RegistreId.POPUP_CHARGEMENT, new PopupChargement()); |
} |
protected Mediateur getMediateur() { |
return new Mediateur(); |
} |
protected AppliConstantes getI18nConstante() { |
return GWT.create(AppliConstantes.class); |
} |
} |
Property changes: |
Added: svn:keywords |
+Revision GlobalRev |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PersonneListeVue.java |
---|
New file |
0,0 → 1,183 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.Style.SelectionMode; |
import com.extjs.gxt.ui.client.Style.SortDir; |
import com.extjs.gxt.ui.client.binder.TableBinder; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.table.Table; |
import com.extjs.gxt.ui.client.widget.table.TableColumn; |
import com.extjs.gxt.ui.client.widget.table.TableColumnModel; |
import com.extjs.gxt.ui.client.widget.table.TableItem; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.user.client.Window; |
public class PersonneListeVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null ; |
private Table table = null; |
private ListStore<Personne> store = null; |
private TableBinder<Personne> binder = null; |
private Personne personneSelectionnee = null; |
public PersonneListeVue() { |
mediateur = Registry.get(RegistreId.MEDIATEUR); |
//Définition de la barre d'outil |
ToolBar toolBar = new ToolBar(); |
TextToolItem ajouter = new TextToolItem(mediateur.i18nC.ajouter()); |
ajouter.setIconStyle(ComposantClass.ICONE_AJOUTER); |
ajouter.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicAjouterPersonne(); |
} |
}); |
toolBar.add(ajouter); |
final Rafraichissable r = this ; |
// TODO : ajouter btn mod & supp |
final TextToolItem modifier = new TextToolItem(mediateur.i18nC.modifier()); |
modifier.setIconStyle(ComposantClass.ICONE_MODIFIER); |
modifier.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicModifierPersonne(personneSelectionnee); |
} |
}); |
toolBar.add(modifier); |
final TextToolItem supprimer = new TextToolItem(mediateur.i18nC.supprimer()); |
supprimer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicSupprimerPersonne(r, binder.getSelection()); |
} |
}); |
supprimer.setIconStyle(ComposantClass.ICONE_SUPPRIMER); |
toolBar.add(supprimer); |
setTopComponent(toolBar); |
List<TableColumn> columns = new ArrayList<TableColumn>(); |
// ATTENTION : les noms des colonnes doivent correspondrent aux noms variables de la classe utilisée dans la liste |
columns.add(new TableColumn("fmt_nom_complet", mediateur.i18nC.personneNomComplet(), .30f)); |
columns.add(new TableColumn("code_postal", mediateur.i18nC.personneCodePostal(), .10f)); |
columns.add(new TableColumn("ville", mediateur.i18nC.personneVille(), .20f)); |
columns.add(new TableColumn("courriel_princ", mediateur.i18nC.personneCourriel(), .25f)); |
columns.add(new TableColumn("nom", mediateur.i18nC.personneNom(), .10f)); |
columns.add(new TableColumn("prenom", mediateur.i18nC.personnePrenom(), .10f)); |
columns.get(4).setHidden(true); |
columns.get(5).setHidden(true); |
TableColumnModel cm = new TableColumnModel(columns); |
table = new Table(cm); |
table.setSelectionMode(SelectionMode.MULTI); |
table.setBorders(false); |
table.setHorizontalScroll(true); |
add(table); |
store = new ListStore<Personne>(); |
binder = new TableBinder<Personne>(table, store); |
binder.setAutoSelect(true); |
binder.addSelectionChangedListener(new SelectionChangedListener<Personne>() { |
public void selectionChanged(SelectionChangedEvent<Personne> event) { |
Personne p = (Personne) event.getSelectedItem(); |
personneSelectionnee = p; |
clicListe(p); |
} |
}); |
setLayout(new FitLayout()); |
} |
private void clicListe(Personne personne) { |
mediateur.clicListePersonne(personne); |
} |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof PersonneListe) { |
setHeading(mediateur.i18nC.personneListeLabel()); |
PersonneListe listePersonnes = (PersonneListe) nouvellesDonnees; |
List<Personne> liste = new ArrayList<Personne>(); |
for (Iterator<String> it = listePersonnes.keySet().iterator(); it.hasNext();) { |
liste.add(listePersonnes.get(it.next())); |
} |
store.removeAll(); |
store.add(liste); |
mediateur.actualiserPanneauCentral(); |
table.sort(0, SortDir.ASC); |
if (store.getCount() > 0) { |
table.getSelectionModel().select(0); |
} |
} else if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
Info.display("Erreur", info.getMessages().toString()); |
if (info.getType().equals("suppression_personne")) { |
List<TableItem> selectionPersonnes = table.getSelectedItems(); |
final int taille = selectionPersonnes.size(); |
for (int i = 0; i < taille; i++) { |
//GWT.log("INDEX :"+table.indexOf(selectionStructure.get(i)), null); |
table.remove(selectionPersonnes.get(i)); |
} |
} |
} else { |
GWT.log(mediateur.messages.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
layout(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/CollectionVue.java |
---|
New file |
0,0 → 1,49 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Collection; |
import org.tela_botanica.client.modeles.CollectionListe; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; |
import com.google.gwt.core.client.GWT; |
public class CollectionVue extends LayoutContainer implements Rafraichissable { |
private Mediateur mediateur = null; |
private CollectionListeVue listeCollectionPanneau = null; |
private CollectionDetailVue detailCollectionPanneau = null; |
public CollectionVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
BorderLayout layout = new BorderLayout(); |
layout.setEnableState(false); |
setLayout(layout); |
listeCollectionPanneau = new CollectionListeVue(mediateur); |
add(listeCollectionPanneau, new BorderLayoutData(LayoutRegion.CENTER)); |
detailCollectionPanneau = new CollectionDetailVue(mediateur); |
BorderLayoutData dispositionSud = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000); |
dispositionSud.setSplit(true); |
dispositionSud.setMargins(new Margins(5, 0, 0, 0)); |
add(detailCollectionPanneau, dispositionSud); |
} |
public void rafraichir(Object nouvelleDonnees) { |
// Nous passons l'objet aux méthodes rafraichir des panneaux composant le panneau principal Structure |
if (nouvelleDonnees instanceof Collection) { |
detailCollectionPanneau.rafraichir(nouvelleDonnees); |
} else if (nouvelleDonnees instanceof CollectionListe) { |
listeCollectionPanneau.rafraichir(nouvelleDonnees); |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PublicationDetailVue.java |
---|
New file |
0,0 → 1,86 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.PublicationListe; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Html; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
public class PublicationDetailVue extends ContentPanel implements Rafraichissable { |
private ContentPanel content; |
private Html header; |
private String enteteHTML = "<div class='coel-detail'><h1>{0}</h1><h2>{1}</h2><h2>{2}</h2></div>"; |
private String contenuHTML = "<div style='padding: 12px;'><h2>Détails de la publication</h2><span style='font-weight:bold;'>Nom de la revue :</span> {0}<br /><span style='font-weight:bold;'>Editeur :</span> {1}<br /><span style='font-weight:bold;'>Année :</span> {2}<br /><span style='font-weight:bold;'>Tome :</span> {3}<br /><span style='font-weight:bold;'>Fascicule :</span> {4}<br /><span style='font-weight:bold;'>Pages :</span> {5}</div>"; |
private String publicationNom = null; |
private String publicationAuteur = null; |
private String publicationDateParution = null; |
public PublicationDetailVue() { |
setHeaderVisible(false); |
setLayout(new FitLayout()); |
content = new ContentPanel(); |
content.setBodyBorder(false); |
content.setHeaderVisible(false); |
content.setScrollMode(Scroll.AUTO); |
header = new Html(); |
header.setStyleName("coel-detail"); |
content.setTopComponent(header); |
add(content); |
} |
public void afficherDetailPublication(Publication publication) { |
if (publication != null) { |
content.removeAll(); |
publicationNom = publication.getTitre(); |
publicationAuteur = publication.getAuteur().replaceAll("\\|", ", ");; |
publicationDateParution = publication.getDateParution(); |
Params enteteParams = new Params(); |
enteteParams.add(publicationNom); |
enteteParams.add(publicationAuteur); |
enteteParams.add(publicationDateParution); |
String eHtml = Format.substitute(enteteHTML, enteteParams); |
header.getElement().setInnerHTML(eHtml); |
Params contenuParams = new Params(); |
contenuParams.add(publication.getCollection()); |
contenuParams.add(publication.getEditeur()); |
contenuParams.add(publication.getDateParution()); |
contenuParams.add(publication.getIndicationNvt()); |
contenuParams.add(publication.getFascicule()); |
contenuParams.add(publication.getPages()); |
String cHtml = Format.substitute(contenuHTML, contenuParams); |
content.addText(cHtml); |
layout(); |
} else { |
header.setHtml(""); |
content.removeAll(); |
} |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Publication) { |
afficherDetailPublication((Publication) nouvelleDonnees); |
} else if (nouvelleDonnees instanceof PublicationListe) { |
PublicationListe listePublication = (PublicationListe) nouvelleDonnees; |
// Test pour savoir si la liste contient des éléments |
if (listePublication.size() == 0) { |
afficherDetailPublication(null); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/CollectionListeVue.java |
---|
New file |
0,0 → 1,178 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
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.Collection; |
import org.tela_botanica.client.modeles.CollectionListe; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Utilisateur; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.SelectionMode; |
import com.extjs.gxt.ui.client.Style.SortDir; |
import com.extjs.gxt.ui.client.binder.TableBinder; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.table.Table; |
import com.extjs.gxt.ui.client.widget.table.TableColumn; |
import com.extjs.gxt.ui.client.widget.table.TableColumnModel; |
import com.extjs.gxt.ui.client.widget.table.TableItem; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
public class CollectionListeVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null ; |
private Constantes i18nC = null ; |
private Table table = null; |
private ListStore<Collection> store = null; |
private TableBinder<Collection> binder = null; |
private TextToolItem modifier; |
private TextToolItem supprimer; |
private TextToolItem ajouter; |
public CollectionListeVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
i18nC = mediateur.i18nC; |
Utilisateur utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
ToolBar toolBar = new ToolBar(); |
ajouter = new TextToolItem(i18nC.ajouter()); |
ajouter.setIconStyle(ComposantClass.ICONE_AJOUTER); |
ajouter.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicAjouterCollection(); |
} |
}); |
toolBar.add(ajouter); |
modifier = new TextToolItem(i18nC.modifier()); |
modifier.setIconStyle(ComposantClass.ICONE_MODIFIER); |
modifier.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicModifierCollection(binder.getSelection()); |
} |
}); |
toolBar.add(modifier); |
supprimer = new TextToolItem(i18nC.supprimer()); |
supprimer.setIconStyle(ComposantClass.ICONE_SUPPRIMER); |
supprimer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
clicSupprimerCollection(binder.getSelection()); |
} |
}); |
if (!utilisateur.isIdentifie()) { |
supprimer.disable(); |
} |
toolBar.add(supprimer); |
setTopComponent(toolBar); |
List<TableColumn> columns = new ArrayList<TableColumn>(); |
// ATTENTION : les noms des colonnes doivent correspondrent aux noms variables de la classe utilisée dans la liste |
columns.add(new TableColumn("structure_nom", i18nC.structure(), .3f)); |
columns.add(new TableColumn("structure_ville", i18nC.ville(), .2f)); |
columns.add(new TableColumn("nom", i18nC.nom(), .5f)); |
columns.get(0).setHidden(true); |
TableColumnModel cm = new TableColumnModel(columns); |
table = new Table(cm); |
table.setSelectionMode(SelectionMode.MULTI); |
table.setBorders(false); |
table.setStripeRows(true); |
add(table); |
store = new ListStore<Collection>(); |
store.sort("nom", SortDir.ASC); |
binder = new TableBinder<Collection>(table, store); |
binder.addSelectionChangedListener(new SelectionChangedListener<Collection>() { |
public void selectionChanged(SelectionChangedEvent<Collection> event) { |
Collection m = (Collection) event.getSelectedItem(); |
clicListe(m); |
} |
}); |
setLayout(new FitLayout()); |
} |
private void clicListe(Collection m) { |
if (store.getCount() > 0) { |
mediateur.clicListeCollection(m); |
} |
} |
private void clicSupprimerCollection(List<Collection> collectionsASupprimer) { |
if (store.getCount() > 0) { |
mediateur.clicSupprimerCollection(this, collectionsASupprimer); |
} |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof CollectionListe) { |
CollectionListe collections = (CollectionListe) nouvelleDonnees; |
setHeading(i18nC.collectionListeTitre()); |
List<Collection> liste = (List<Collection>) collections.toList(); |
store.removeAll(); |
store.add(liste); |
mediateur.actualiserPanneauCentral(); |
if (store.getCount() > 0) { |
table.getSelectionModel().select(0); |
} |
} else if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("suppression_collection")) { |
// Affichage d'un message d'information |
//GWT.log(info.toString(), null); |
Info.display(i18nC.suppressionCollection(), info.toString().replaceAll("\n", "<br />")); |
// Suppression des structures sélectionnées |
List<TableItem> selectionCollection = table.getSelectedItems(); |
final int taille = selectionCollection.size(); |
for (int i = 0; i < taille; i++) { |
//GWT.log("INDEX :"+table.indexOf(selectionStructure.get(i)), null); |
table.remove(selectionCollection.get(i)); |
} |
// Désactivation des boutons si la liste est vide |
if (table.getItemCount() == 0) { |
supprimer.disable(); |
modifier.disable(); |
} |
} else if (info.getType().equals("maj_utilisateur")) { |
if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) { |
if (table.getItemCount() != 0) { |
supprimer.enable(); |
} |
} else { |
supprimer.disable(); |
} |
} |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
layout(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PersonneForm.java |
---|
New file |
0,0 → 1,1647 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.LinkedList; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.InterneValeur; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import com.extjs.gxt.ui.client.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.binding.FormBinding; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.KeyListener; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.Text; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.button.ButtonBar; |
import com.extjs.gxt.ui.client.widget.button.IconButton; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.form.DateField; |
import com.extjs.gxt.ui.client.widget.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.form.HiddenField; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.form.Radio; |
import com.extjs.gxt.ui.client.widget.form.RadioGroup; |
import com.extjs.gxt.ui.client.widget.form.TextArea; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
import com.extjs.gxt.ui.client.widget.layout.ColumnData; |
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormData; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.layout.RowLayout; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Widget; |
public class PersonneForm extends FormPanel implements Rafraichissable { |
/*-------------------------------------------------------------------------------------- |
* VARIABLES |
* ------------------------------------------------------------------------------------- |
*/ |
private TabItem tiIdentite, tiAdresses, tiInfosNat; |
private Mediateur mediateur = Registry.get(RegistreId.MEDIATEUR); |
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG); |
private Personne personneSelectionnee, personneSauvegarde = null; |
private String mode = ""; |
public static final String MODE_AJOUTER = "AJOUT"; |
public static final String MODE_MODIFIER = "MODIF"; |
private FormBinding binding = null; |
/*-------------------------------------------------------------------------------------- |
* CONSTRUCTEUR |
* ------------------------------------------------------------------------------------- |
*/ |
/** |
* Constructeur du panneau |
* |
* Initialise le panneau et ajoute une barre d'outils à deux boutons (réinitialiser le |
* formulaire et annuler la saisie). |
* |
* */ |
public PersonneForm(String mode) { |
this.mode = mode; |
initialiserComposants(); |
} |
public void initialiserComposants() { |
personneSelectionnee = new Personne(); |
personneSauvegarde = new Personne(); |
initialiserPanneau(); |
ButtonBar barreOutilsBas = new ButtonBar(); |
barreOutilsBas.setButtonAlign(HorizontalAlignment.CENTER); |
ajouterBoutonEnregistrer(barreOutilsBas); |
ajouterBoutonEnregistrerEtRevenir(barreOutilsBas); |
ajouterBoutonAnnuler(barreOutilsBas); |
setBottomComponent(barreOutilsBas); |
ToolBar barreOutilsHaut = new ToolBar(); |
ajouterBoutonReinitialiser(barreOutilsHaut); |
setTopComponent(barreOutilsHaut); |
initialiserOnglets(); |
creerComposantsIdentite(); |
creerComposantsAdresse(); |
layout(); |
binderPersonne(personneSelectionnee); |
} |
/*--------------------------------------------------------------------------------------- |
* SOUS-METHODES |
* -------------------------------------------------------------------------------------- |
*/ |
/** |
* Inialise le panneau donné |
* |
* @param contentPanel le panneau à initialiser |
* */ |
public void initialiserPanneau() { |
setIconStyle("icone-form-ajouter"); |
setCollapsible(false); |
if (this.mode.equals(MODE_AJOUTER)) { |
setHeading(mediateur.i18nC.personneModeAjout()); |
} else { |
setHeading(mediateur.i18nC.personneModeModifier()); |
} |
setButtonAlign(HorizontalAlignment.CENTER); |
setLayout(new FitLayout()); |
setBodyBorder(false); |
setBorders(false); |
setPadding(0); |
setWidth("100%"); |
} |
/** |
* Crée les onglets identité, adresse et informations naturaliste |
* |
* */ |
public void initialiserOnglets() { |
//TabPanel |
TabPanel formulaireOnglets = new TabPanel(); |
//Tab 1 : identite |
tiIdentite = new TabItem(mediateur.i18nC.personneIdentite()); |
tiIdentite.setLayout(new FormLayout()); |
tiIdentite.setScrollMode(Scroll.AUTO); |
formulaireOnglets.add(tiIdentite); |
hmIdentite.put("tiIdentite", tiIdentite); |
//Tab 2 : Adresse |
tiAdresses = new TabItem(mediateur.i18nC.adresse()); |
tiAdresses.setLayout(new FormLayout()); |
tiAdresses.setScrollMode(Scroll.AUTO); |
formulaireOnglets.add(tiAdresses); |
//Tab 3 : Infos Naturalistes |
tiInfosNat = new TabItem(mediateur.i18nC.personneInfoNat()); |
tiInfosNat.setLayout(new FormLayout()); |
tiInfosNat.setScrollMode(Scroll.AUTO); |
formulaireOnglets.add(tiInfosNat); |
add(formulaireOnglets); |
} |
/** |
* Crée les widgets pour l'onglet identité |
* |
* */ |
//hmIdentite[...] référence par une chaine de caractère tous les composants de l'onglet Identite |
private HashMap<String, Widget>hmIdentite = new HashMap<String, Widget>(); |
private HashMap<String, Widget>hmAdresse = new HashMap<String, Widget>(); |
private HashMap<String, Widget>hmInfosNat = new HashMap<String, Widget>(); |
private FormData fd100 = new FormData("1"); |
public void creerComposantsIdentite() { |
// Gestion de l'affichage en colonnes : 3 Layout container : principal, gauche & droite |
LayoutContainer left = new LayoutContainer(); |
left.setLayout(new FormLayout()); |
LayoutContainer right = new LayoutContainer(); |
right.setLayout(new FormLayout()); |
LayoutContainer main = new LayoutContainer(); |
main.setLayout(new ColumnLayout()); |
main.add(left, new ColumnData(.5)); |
main.add(right, new ColumnData(.5)); |
// Création des champs |
FormLayout formLayout = new FormLayout(); |
formLayout.setLabelAlign(LabelAlign.LEFT); |
FieldSet fsProjet = new FieldSet(); |
fsProjet.setHeading(mediateur.i18nC.menuProjet()); |
fsProjet.setLayout(new FormLayout()); |
ListStore<Projet> storeProjets = new ListStore<Projet>(); |
ComboBox cbProjets = new ComboBox<Projet>(); |
cbProjets.setFieldLabel(mediateur.i18nC.personneProjet()+ " :"); |
cbProjets.setEmptyText(mediateur.i18nC.txtListeProjetDefaut()); |
cbProjets.setLabelSeparator(""); |
cbProjets.setDisplayField("nom"); |
cbProjets.setEditable(false); |
cbProjets.setTriggerAction(TriggerAction.ALL); |
cbProjets.setStore(storeProjets); |
cbProjets.setAllowBlank(false); |
fsProjet.add(cbProjets); |
hmIdentite.put("cbProjets", cbProjets); |
mediateur.selectionnerProjets(this); |
left.add(fsProjet); |
FieldSet fsNoms = new FieldSet(); |
fsNoms.setHeading("Noms"); |
fsNoms.setLayout(formLayout); |
// Nom complet : Affiché que si valeurs saisies |
LabelField nomComplet = new LabelField(); |
nomComplet.setFieldLabel(mediateur.i18nC.personneNomComplet() +" :"); |
nomComplet.hide(); |
fsNoms.add(nomComplet); |
hmIdentite.put("nomComplet", nomComplet); |
//Préfixe |
ListStore<Valeur> storePrefixe = new ListStore<Valeur>(); |
ComboBox<Valeur> cbPrefixe = new ComboBox<Valeur>(); |
cbPrefixe.setStore(storePrefixe); |
cbPrefixe.setDisplayField("nom"); |
cbPrefixe.setEmptyText("Choisissez le préfixe:"); |
cbPrefixe.setFieldLabel("Prefix"); |
fsNoms.add(cbPrefixe); |
hmIdentite.put("cbPrefixe", cbPrefixe); |
mediateur.obtenirListeValeurEtRafraichir(this, "prefixe"); |
//Prénom |
TextField<String> tfPrenom = new TextField<String>(); |
tfPrenom.setFieldLabel("Prénom"); |
tfPrenom.setName("prenom"); |
fsNoms.add(tfPrenom); |
hmIdentite.put("tfPrenom", tfPrenom); |
//Nom |
TextField<String> tfNom = new TextField<String>(); |
tfNom.setFieldLabel("Nom"); |
tfNom.setAllowBlank(false); |
tfNom.setName("nom"); |
fsNoms.add(tfNom); |
hmIdentite.put("tfNom", tfNom); |
//Suffixe |
ListStore<Valeur> storeSuffixe = new ListStore<Valeur>(); |
ComboBox<Valeur> cbSuffixe = new ComboBox<Valeur>(); |
cbSuffixe.setStore(storeSuffixe); |
cbSuffixe.setFieldLabel("Suffixe"); |
cbSuffixe.setDisplayField("nom"); |
cbSuffixe.setEmptyText("Choisissez un suffixe:"); |
fsNoms.add(cbSuffixe); |
hmIdentite.put("cbSuffixe", cbSuffixe); |
mediateur.obtenirListeValeurEtRafraichir(this, "suffixes"); |
TextField<String> tfNomAutre = new TextField(); |
tfNomAutre.setFieldLabel("Autres noms"); |
tfNomAutre.setName("truk_nom_autre"); |
fsNoms.add(tfNomAutre); |
hmIdentite.put("tfNomAutre", tfNomAutre); |
TextField<String> tfAbreviation = new TextField<String>(); |
tfAbreviation.setFieldLabel("Abréviation"); |
tfAbreviation.setName("abreviation"); |
fsNoms.add(tfAbreviation); |
hmIdentite.put("tfAbreviation", tfAbreviation); |
//Abréviation autres |
TextField<String> tfAbreviationAutre = new TextField<String>(); |
tfAbreviationAutre.setFieldLabel("Autres Abrév."); |
tfAbreviationAutre.setName("truk_abreviation_autre"); |
fsNoms.add(tfAbreviationAutre); |
hmIdentite.put("tfAbreviationAutre", tfAbreviationAutre); |
left.add(fsNoms); |
formLayout = new FormLayout(); |
formLayout.setLabelAlign(LabelAlign.LEFT); |
FieldSet fsNaissance = new FieldSet(); |
fsNaissance.setHeading("Naissance"); |
fsNaissance.setLayout(formLayout); |
DateField dfDateNaissance = new DateField(); |
dfDateNaissance.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy")); |
dfDateNaissance.setFieldLabel("Date"); |
dfDateNaissance.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa»."); |
fsNaissance.add(dfDateNaissance); |
hmIdentite.put("dfDateNaissance", dfDateNaissance); |
// Lieu naissance |
TextField<String> tfLieuNaissance = new TextField(); |
tfLieuNaissance.setFieldLabel("Lieu"); |
tfLieuNaissance.setName("naissance_lieu"); |
fsNaissance.add(tfLieuNaissance); |
hmIdentite.put("tfLieuNaissance", tfLieuNaissance); |
left.add(fsNaissance); |
formLayout = new FormLayout(); |
formLayout.setLabelAlign(LabelAlign.LEFT); |
FieldSet fsDeces = new FieldSet(); |
fsDeces.setHeading("Décès"); |
fsDeces.setLayout(formLayout); |
Radio rbEstDecedee = new Radio(); |
rbEstDecedee.setBoxLabel("oui"); |
rbEstDecedee.addListener(Events.Change, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
if(((Radio) be.component).getValue().equals(true)) { |
((DateField) hmIdentite.get("dfDateDeces")).setVisible(true); |
((TextField) hmIdentite.get("tfLieuDeces")).setVisible(true); |
} else { |
((DateField) hmIdentite.get("dfDateDeces")).setVisible(false); |
((TextField) hmIdentite.get("tfLieuDeces")).setVisible(false); |
} |
} |
}); |
hmIdentite.put("rbEstDecedee", rbEstDecedee); |
Radio rbNestPasDecedee = new Radio(); |
rbNestPasDecedee.setBoxLabel("non"); |
rbNestPasDecedee.setValue(true); |
RadioGroup rbgDeces = new RadioGroup(); |
rbgDeces.setFieldLabel("Est décédée"); |
rbgDeces.add(rbEstDecedee); |
rbgDeces.add(rbNestPasDecedee); |
fsDeces.add(rbgDeces); |
DateField dfDateDeces = new DateField(); |
dfDateDeces.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy")); |
dfDateDeces.setFormatValue(true); |
dfDateDeces.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa»."); |
dfDateDeces.setFieldLabel("Date"); |
dfDateDeces.setVisible(false); |
fsDeces.add(dfDateDeces); |
hmIdentite.put("dfDateDeces", dfDateDeces); |
TextField<String> tfLieuDeces = new TextField(); |
tfLieuDeces.setFieldLabel("Lieu"); |
tfLieuDeces.setName("deces_lieu"); |
tfLieuDeces.setVisible(false); |
fsDeces.add(tfLieuDeces); |
hmIdentite.put("tfLieuDeces", tfLieuDeces); |
left.add(fsDeces); |
tiIdentite.add(main); |
FieldSet fsContactTel = new FieldSet(); |
fsContactTel.setHeading("Contact - Téléphones"); |
fsContactTel.setLayout(new RowLayout()); |
right.add(fsContactTel); |
hmIdentite.put("fsContactTel", fsContactTel); |
LayoutContainer lcTelephone = new LayoutContainer(); |
lcTelephone.setLayout(new ColumnLayout()); |
TextField tfTelephone = new TextField(); |
tfTelephone.setFieldLabel("tel"); |
lcTelephone.add(tfTelephone, new ColumnData(0.40)); |
hmIdentite.put("tfTelephone", tfTelephone); |
ListStore<Valeur> storeTel = new ListStore<Valeur>(); |
ComboBox<Valeur> cbTelephone = new ComboBox<Valeur>(); |
cbTelephone.setDisplayField("nom"); |
cbTelephone.setEmptyText("Choisissez:"); |
cbTelephone.setStore(storeTel); |
lcTelephone.add(cbTelephone, new ColumnData(0.40)); |
hmIdentite.put("cbTelephone", cbTelephone); |
mediateur.obtenirListeValeurEtRafraichir(this, "tel"); |
IconButton bAjouter = new IconButton(ComposantClass.ICONE_AJOUTER); |
bAjouter.addSelectionListener( |
new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
String strTelephone = ((TextField<String>) hmIdentite.get("tfTelephone")).getValue(); |
if ((strTelephone==null)||(strTelephone.trim().equals(""))) { |
MessageBox.alert("Erreur de saisie", "Vous devez saisir un numéro de téléphone", null); |
} else if (hmIdentite.get("tel-" + strTelephone) != null){ |
MessageBox.alert("Erreur de saisie", "Le numéro saisi est déjà présent dans la liste", null); |
} else { |
String strValeurTypeTel = ""; |
String idTel = ""; |
Valeur valeurTypeTel = ((ComboBox<Valeur>) hmIdentite.get("cbTelephone")).getValue(); |
if (valeurTypeTel != null) { |
strValeurTypeTel = valeurTypeTel.getNom(); |
idTel = valeurTypeTel.get("abreviation"); |
} else { |
strValeurTypeTel = ((ComboBox<Valeur>) hmIdentite.get("cbTelephone")).getRawValue(); |
idTel = strValeurTypeTel; |
} |
if (strValeurTypeTel.trim().equals("")) { |
MessageBox.alert("Erreur de saisie", "Vous devez saisir un type de téléphone", null); |
} else { |
ajouterTelephone(strTelephone, strValeurTypeTel, idTel); |
} |
} |
} |
} |
); |
lcTelephone.add(bAjouter, new ColumnData(0.15)); |
HiddenField<String> hfTelephone = new HiddenField<String>(); |
add(hfTelephone); |
hmIdentite.put("hfTelephone", hfTelephone); |
fsContactTel.add(lcTelephone); |
FieldSet fsContact = new FieldSet(); |
fsContact.setHeading("Contact - Autres"); |
fsContact.setId("fsContact"); |
fsContact.setLayout(new RowLayout()); |
right.add(fsContact); |
hmIdentite.put("fsContact", fsContact); |
LabelField lfCourriel = new LabelField(); |
lfCourriel.setText("<b>Courriels:</b>"); |
fsContact.add(lfCourriel); |
LayoutContainer lcCourriel = new LayoutContainer(); |
lcCourriel.setLayout(new ColumnLayout()); |
TextField tfCourriel = new TextField(); |
lcCourriel.add(tfCourriel, new ColumnData(0.80)); |
HiddenField hfHiddenCourriel = new HiddenField(); |
hfHiddenCourriel.setId("tfHiddenCourriel"); |
hfHiddenCourriel.setValue(""); |
add(hfHiddenCourriel); |
hmIdentite.put("hfHiddenCourriel", hfHiddenCourriel); |
hmIdentite.put("tfCourriel", tfCourriel); |
IconButton bAjouterCourriel = new IconButton(ComposantClass.ICONE_AJOUTER); |
bAjouterCourriel.addSelectionListener( |
new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
String strEmail = ((TextField<String>) hmIdentite.get("tfCourriel")).getValue(); |
if ((strEmail==null)||(strEmail.trim().equals(""))) { |
MessageBox.alert("Erreur de saisie", "Vous devez saisir une adresse", null); |
} else if (hmIdentite.get("email-" + strEmail) != null){ |
MessageBox.alert("Erreur de saisie", "L'adresse saisie est déjà dans la liste", null); |
} else { |
if (!strEmail.matches("(\\w+)@(\\w+\\.)(\\w+)(\\.\\w+)*")) { |
MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: me@domain.com)", null); |
} else if (strEmail.length()>255){ |
MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null); |
} else { |
ajouterCourriel(strEmail); |
} |
} |
} |
}); |
lcCourriel.add(bAjouterCourriel, new ColumnData(0.15)); |
fsContact.add(lcCourriel); |
LayoutContainer lcCourrielContainer = new LayoutContainer(new RowLayout()); |
fsContact.add(lcCourrielContainer); |
hmIdentite.put("lcCourrielContainer", lcCourrielContainer); |
LabelField lfUrl = new LabelField(); |
lfUrl.setText("<b>Sites Web:</b>"); |
fsContact.add(lfUrl); |
LayoutContainer lcUrl = new LayoutContainer(new ColumnLayout()); |
hmIdentite.put("lcUrl", lcUrl); |
HiddenField<String> hfUrl = new HiddenField<String>(); |
hmIdentite.put("hfUrl", hfUrl); |
add(hfUrl); |
TextField tfUrl = new TextField(); |
tfUrl.setValue("http://"); |
lcUrl.add(tfUrl, new ColumnData(0.8)); |
hmIdentite.put("tfUrl", tfUrl); |
IconButton ibAjouterUrl = new IconButton(ComposantClass.ICONE_AJOUTER); |
ibAjouterUrl.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
TextField<String> tfUrl = (TextField) hmIdentite.get("tfUrl"); |
String strUrl = tfUrl.getValue(); |
if ((strUrl == null)||(strUrl.trim().equals("http://"))||(strUrl.trim().equals(""))) { |
MessageBox.alert("Erreur de saisie", "Vous devez saisir un URL", null); |
} else if(hmIdentite.get("url-" + strUrl) != null) { |
MessageBox.alert("Erreur de saisie", "L'url est déjà présente dans la liste.", null); |
} else { |
tfUrl.setValue(""); |
//if (!strUrl.matches("[a-z]{3,}://[a-z0-9-]+.[.a-z0-9-]+(?::[0-9]*)?")) { |
if (!strUrl.startsWith("http://")) { |
MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: http://www.domain.com)", null); |
} else if (strUrl.length()>255){ |
MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null); |
} else { |
ajouterUrl(strUrl); |
} |
} |
} |
}); |
lcUrl.add(ibAjouterUrl, new ColumnData(0.15)); |
fsContact.add(lcUrl); |
LayoutContainer lcUrlContainer = new LayoutContainer(new RowLayout()); |
fsContact.add(lcUrlContainer); |
hmIdentite.put("lcUrlContainer", lcUrlContainer); |
FieldSet fsAutresInfos = new FieldSet(); |
fsAutresInfos.setHeading("Autres informations"); |
formLayout = new FormLayout(); |
formLayout.setLabelAlign(LabelAlign.LEFT); |
fsAutresInfos.setLayout(formLayout); |
formLayout = new FormLayout(); |
formLayout.setLabelAlign(LabelAlign.TOP); |
LayoutContainer lcAutreInformations1 = new LayoutContainer(formLayout); |
//Civilité |
ListStore<Valeur> storeSexe = new ListStore<Valeur>(); |
ComboBox<Valeur> cbSexe = new ComboBox<Valeur>(); |
cbSexe.setStore(storeSexe); |
cbSexe.setFieldLabel("Sexe"); |
cbSexe.setDisplayField("nom"); |
cbSexe.setEmptyText("Choisissez le sexe:"); |
lcAutreInformations1.add(cbSexe, fd100); |
hmIdentite.put("cbSexe", cbSexe); |
mediateur.obtenirListeValeurEtRafraichir(this, "sexe"); |
//Description |
TextArea taDescription = new TextArea(); |
taDescription.setEmptyText("Saisissez une description"); |
taDescription.setFieldLabel("Description"); |
taDescription.setWidth("100%"); |
taDescription.setName("description"); |
lcAutreInformations1.add(taDescription, fd100); |
hmIdentite.put("taDescription", taDescription); |
fsAutresInfos.add(lcAutreInformations1); |
// Logo |
LayoutContainer lcAutreInformations2 = new LayoutContainer(); |
hmIdentite.put("lcAutreInformations2", lcAutreInformations2); |
LabelField lfUrlLogo = new LabelField(); |
lfUrlLogo.setText("<b>Logo:</b>"); |
lcAutreInformations2.add(lfUrlLogo); |
LayoutContainer lcUrlLogo = new LayoutContainer(new ColumnLayout()); |
hmIdentite.put("lcUrlLogo", lcUrlLogo); |
TextField tfUrlLogo = new TextField(); |
tfUrlLogo.setValue("http://"); |
HiddenField<String> hfUrlLogo = new HiddenField<String>(); |
hmIdentite.put("hfUrlLogo", hfUrlLogo); |
lcUrlLogo.add(tfUrlLogo, new ColumnData(0.8)); |
hmIdentite.put("tfUrlLogo", tfUrlLogo); |
IconButton ibAjouterUrlLogo = new IconButton(ComposantClass.ICONE_AJOUTER); |
ibAjouterUrlLogo.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
TextField<String> tfUrlLogo = (TextField) hmIdentite.get("tfUrlLogo"); |
String strUrl = tfUrlLogo.getValue(); |
if ((strUrl == null)||(strUrl.trim().equals("http://"))||(strUrl.trim().equals(""))) { |
MessageBox.alert("Erreur de saisie", "Vous devez saisir un URL", null); |
} else if(hmIdentite.get("url-" + strUrl) != null) { |
MessageBox.alert("Erreur de saisie", "L'url est déjà présente dans la liste.", null); |
} else { |
tfUrlLogo.setValue(""); |
//if (!strUrl.matches("[a-z]{3,}://[a-z0-9-]+.[.a-z0-9-]+(?::[0-9]*)?")) { |
if (!strUrl.startsWith("http://")) { |
MessageBox.alert("Erreur de saisie", "L'adresse n'est pas au bon format (ex: http://www.domain.com)", null); |
} else if (strUrl.length()>255){ |
MessageBox.alert("Erreur de saisie", "L'adresse ne peut dépasser 255 caractères", null); |
} else { |
ajouterUrlLogo(strUrl); |
} |
} |
} |
}); |
lcUrlLogo.add(ibAjouterUrlLogo, new ColumnData(0.15)); |
lcAutreInformations2.add(lcUrlLogo); |
fsAutresInfos.add(lcAutreInformations2); |
TextArea taLogo = new TextArea(); |
taLogo.setFieldLabel("Logos"); |
taLogo.setWidth("100%"); |
taLogo.setEmptyText("Saisissez les adresses des logos séparées par un saut de ligne"); |
//fsAutresInfos.add(taLogo, fd100); |
hmIdentite.put("taLogo", taLogo); |
right.add(fsAutresInfos); |
// Ajout des évènements saisi |
KeyListener klNoms = new KeyListener() { |
public void componentKeyUp(ComponentEvent ev) { |
rafraichir(null); |
} |
}; |
SelectionChangedListener<InterneValeur> selectionChange = new SelectionChangedListener<InterneValeur>() { |
public void selectionChanged(SelectionChangedEvent se) { |
rafraichir(null); |
} |
}; |
cbPrefixe.addSelectionChangedListener(selectionChange); |
cbPrefixe.addKeyListener(klNoms); |
tfPrenom.addKeyListener(klNoms); |
tfNom.addKeyListener(klNoms); |
cbSuffixe.addSelectionChangedListener(selectionChange); |
} |
public void creerComposantsAdresse() { |
// Gauche |
LayoutContainer left = new LayoutContainer(); |
left.setLayout(new FormLayout()); |
// Droite |
LayoutContainer right = new LayoutContainer(); |
right.setLayout(new FormLayout()); |
// Principal |
LayoutContainer main = new LayoutContainer(); |
main.setLayout(new ColumnLayout()); |
// Ajout au principal |
main.add(left, new ColumnData(.49)); |
main.add(right, new ColumnData(.49)); |
TextField<String> tfAdresse1 = new TextField(); |
tfAdresse1.setFieldLabel("Adresse"); |
tfAdresse1.setName("adresse_01"); |
left.add(tfAdresse1, fd100); |
hmAdresse.put("tfAdresse1", tfAdresse1); |
TextField<String> tfAdresse2 = new TextField(); |
tfAdresse2.setFieldLabel("Complément d'adresse"); |
tfAdresse2.setName("adresse_02"); |
left.add(tfAdresse2, fd100); |
hmAdresse.put("tfAdresse2", tfAdresse2); |
ComboBox<Valeur> cbPays = new ComboBox<Valeur>(); |
cbPays.setFieldLabel("Pays"); |
cbPays.setDisplayField("nom"); |
cbPays.setEmptyText("Sélectionnez le pays:"); |
ListStore<Valeur> storePays = new ListStore<Valeur>(); |
cbPays.setStore(storePays); |
right.add(cbPays, fd100); |
hmAdresse.put("cbPays", cbPays); |
SelectionChangedListener<Valeur> selectionChange = new SelectionChangedListener<Valeur>() { |
public void selectionChanged(SelectionChangedEvent se) { |
// Rafraichir avec le pays sélectionné |
obtenirListeRegionParPays(((Valeur) se.getSelectedItem()).getAbreviation().toString()); |
} |
}; |
cbPays.addSelectionChangedListener(selectionChange); |
ComboBox<Valeur> cbRegion = new ComboBox<Valeur>(); |
cbRegion.setFieldLabel("Region"); |
cbRegion.setDisplayField("nom"); |
cbRegion.setEmptyText("Sélectionnez la région:"); |
cbRegion.setVisible(false); |
ListStore<Valeur> storeRegion = new ListStore<Valeur>(); |
cbRegion.setStore(storeRegion); |
right.add(cbRegion, fd100); |
hmAdresse.put("cbRegion", cbRegion); |
TextField<String> tfBoitePostale = new TextField<String>(); |
tfBoitePostale.setFieldLabel("Boite postale"); |
tfBoitePostale.setName("bp"); |
left.add(tfBoitePostale, fd100); |
hmAdresse.put("tfBoitePostale", tfBoitePostale); |
TextField<Integer> tfCodePostal = new TextField<Integer>(); |
tfCodePostal.setFieldLabel("Code postal"); |
tfCodePostal.setName("code_postal"); |
right.add(tfCodePostal, fd100); |
hmAdresse.put("tfCodePostal", tfCodePostal); |
TextField tfVille = new TextField(); |
tfVille.setFieldLabel("Ville"); |
tfVille.setName("ville"); |
right.add(tfVille, fd100); |
hmAdresse.put("tfVille", tfVille); |
// MAJ ComboBox |
mediateur.obtenirListeValeurEtRafraichir(this, "pays"); |
FieldSet fsAdresse = new FieldSet(); |
fsAdresse.setHeading("Adresse personnelle"); |
fsAdresse.add(main); |
tiAdresses.add(fsAdresse); |
((ComboBox) hmIdentite.get("cbPrefixe")).setRawValue("ljkhlkj"); |
} |
/** |
* Ajouter le bouton réinitialiser à la barre d'outils donnée |
* |
* @param barreOutils la barre d'outils à modifier |
* */ |
public void ajouterBoutonReinitialiser(ToolBar barreOutils) { |
//Le bouton réintialiser recharge la page sans sauvegarder les informations |
TextToolItem reinitialiser = new TextToolItem("Réinitialiser le formulaire"); |
reinitialiser.setIconStyle(ComposantClass.ICONE_RAFRAICHIR); |
reinitialiser.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
//((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicAjouterPersonne(); |
reinitialiser(); |
//System.out.println(personneSelectionnee); |
} |
}); |
barreOutils.add(reinitialiser); |
} |
/** |
* Ajouter le bouton Sauvegarder et revenir à la liste à la barre d'outils donnée |
* |
* @param barreOutils la barre d'outils à modifier |
* */ |
private void ajouterBoutonEnregistrerEtRevenir(ButtonBar barreOutils) { |
//Le bouton réintialiser recharge la page sans sauvegarder les informations |
Button enregistrer = new Button("Enregistrer et revenir à la liste"); |
enregistrer.setIconStyle(ComposantClass.ICONE_PREFERENCE); |
enregistrer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
} |
}); |
enregistrer.setEnabled(false); |
hmIdentite.put("btnEnregistrerRevenir", enregistrer); |
barreOutils.add(enregistrer); |
} |
/** |
* Ajouter le bouton Sauvegarder à la barre d'outils donnée |
* |
* @param barreOutils la barre d'outils à modifier |
* */ |
private void ajouterBoutonEnregistrer(ButtonBar barreOutils) { |
//Le bouton réintialiser recharge la page sans sauvegarder les informations |
Button enregistrer = new Button("Enregistrer"); |
enregistrer.setIconStyle(ComposantClass.ICONE_PREFERENCE); |
enregistrer.setId("main-button"); |
enregistrer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
enregistrer(); |
} |
}); |
enregistrer.setEnabled(false); |
hmIdentite.put("btnEnregistrer", enregistrer); |
barreOutils.add(enregistrer); |
} |
/** |
* Ajouter le bouton annuler à la barre d'outils donnée |
* |
* @param barreOutils la barre d'outils à modifier |
* */ |
public static void ajouterBoutonAnnuler(ButtonBar barreOutils) { |
// Le bouton annuler ne sauvegarde pas les informations et renvoie vers la page précédente |
Button annuler = new Button("Revenir à la liste"); |
annuler.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu("Personnes"); |
} |
}); |
annuler.setIconStyle(ComposantClass.ICONE_SUPPRIMER); |
barreOutils.add(annuler); |
} |
public void obtenirListeRegionParPays(String strPays) { |
mediateur.obtenirListeRegionsEtRafraichir(this, "region", strPays); |
} |
/*--------------------------------------------------------------------------------------- |
* RAFRAICHISSEMENT DU PANNEAU |
* -------------------------------------------------------------------------------------- |
*/ |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees; |
// Créer une liste de valeurs |
List<Valeur> liste = new ArrayList<Valeur>(); |
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) { |
liste.add(listeValeurs.get(it.next())); |
} |
if (listeValeurs.getId().equals(config.getListeId("prefixe"))) { |
remplirCombobox("cbPrefixe", liste, "hmIdentite"); |
} else if (listeValeurs.getId().equals(config.getListeId("suffixes"))) { |
remplirCombobox("cbSuffixe", liste, "hmIdentite"); |
} else if (listeValeurs.getId().equals(config.getListeId("sexe"))) { |
remplirCombobox("cbSexe", liste, "hmIdentite"); |
} else if (listeValeurs.getId().equals(config.getListeId("tel"))) { |
remplirCombobox("cbTelephone", liste, "hmIdentite"); |
//Préselection du tél |
ComboBox<Valeur> cbTelephone = (ComboBox<Valeur>) hmIdentite.get("cbTelephone"); |
cbTelephone.setValue(liste.get(1)); |
} else if (listeValeurs.getId().equals(config.getListeId("pays"))) { |
remplirCombobox("cbPays", liste, "hmAdresse"); |
} else if (listeValeurs.getId().equals(config.getListeId("region"))) { |
remplirCombobox("cbRegion", liste, "hmAdresse"); |
((ComboBox) hmAdresse.get("cbRegion")).setVisible(true); |
} |
} else if (nouvellesDonnees instanceof ProjetListe) { |
ProjetListe projets = (ProjetListe) nouvellesDonnees; |
List<Projet> liste = new ArrayList<Projet>(); |
for (Iterator<String> it = projets.keySet().iterator(); it.hasNext();) { |
liste.add(projets.get(it.next())); |
} |
ComboBox cbProjets = (ComboBox) hmIdentite.get("cbProjets"); |
ListStore<Projet> storeProjets= cbProjets.getStore(); |
storeProjets.removeAll(); |
storeProjets.add(liste); |
cbProjets.setStore(storeProjets); |
} else if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
if (info.getType().equals("ajout_personne")) { |
GWT.log("Ajout de la personne " + personneSelectionnee.getId(), null); |
Info.display("Enregistrement", "La personne a été ajoutée (id: " + personneSelectionnee.getId() + ")"); |
personneSelectionnee.set("id_personne", info.toString()); |
this.mode = MODE_AJOUTER; |
this.setHeading(mediateur.i18nC.personneModeModifier()); |
} else if (info.getType().equals("modification_personne")) { |
Info.display("Enregistrement", "Les modifications apportées à la personne " + personneSelectionnee.getId() + " ont été correctement enregistrées."); |
} else if (info.getDonnee(0) instanceof PersonneListe) { |
Collection colPersonneListe = ((PersonneListe) info.getDonnee(0)).values(); |
Iterator itPersonneListe = colPersonneListe.iterator(); |
Personne personne = (Personne) itPersonneListe.next(); |
personneSauvegarde = new Personne(); |
personneSauvegarde = (Personne) personne.cloner(personneSauvegarde); |
binderPersonne(personne); |
//Mise à jour de la personne |
//Personne personne = (Personne) nouvellesDonnees; |
ComboBox cbProjets = (ComboBox) hmIdentite.get("cbProjets"); |
cbProjets.setValue(cbProjets.getStore().findModel("id_projet", personne.get("ce_projet"))); |
//Prefixe |
String prefixe = personne.get("ce_truk_prefix"); |
ComboBox<Valeur> cbPrefixe = (ComboBox<Valeur>) hmIdentite.get("cbPrefixe"); |
String prefixeCourant = personne.get("ce_truk_prefix"); |
if (cbPrefixe.getStore().findModel("id_valeur", prefixeCourant) != null) { |
cbPrefixe.setValue(cbPrefixe.getStore().findModel("id_valeur", prefixeCourant)); |
} else { |
cbPrefixe.setRawValue(prefixeCourant); |
} |
((TextField) hmIdentite.get("tfPrenom")).setValue(personne.get("prenom")); |
((TextField) hmIdentite.get("tfNom")).setValue(personne.get("nom")); |
//Suffixe |
String suffixe = personne.get("ce_truk_suffixe"); |
ComboBox<Valeur> cbSuffixe = (ComboBox<Valeur>) hmIdentite.get("cbSuffixe"); |
String suffixeCourant = personne.get("ce_truk_suffix"); |
if (cbSuffixe.getStore().findModel("id_valeur", suffixeCourant) != null) { |
cbSuffixe.setValue(cbSuffixe.getStore().findModel("id_valeur", suffixeCourant)); |
} else { |
cbSuffixe.setRawValue(suffixeCourant); |
} |
((TextField) hmIdentite.get("tfNomAutre")).setValue(personne.get("truk_nom_autre")); |
((TextField) hmIdentite.get("tfAbreviation")).setValue(personne.get("abreviation")); |
((TextField) hmIdentite.get("tfAbreviationAutre")).setValue(personne.get("truk_abreviation_autre")); |
(((DateField) hmIdentite.get("dfDateNaissance"))).setValue(personne.getDate("naissance_date")); |
((TextField) hmIdentite.get("tfLieuNaissance")).setValue(personne.get("naissance_lieu")); |
(((DateField) hmIdentite.get("dfDateDeces"))).setValue(personne.getDate("deces_date")); |
((TextField) hmIdentite.get("tfLieuDeces")).setValue(personne.get("deces_lieu")); |
// Telephone |
HashMap<String, String> hmTelephone = (HashMap<String, String>) personne.getChaineDenormaliseAsMapOrList("truk_telephone"); |
if (hmTelephone!=null) { |
ListStore storeTelephone = ((ComboBox) hmIdentite.get("cbTelephone")).getStore(); |
List lstModelsTelephone = storeTelephone.getModels(); |
Iterator<Valeur> itStore = lstModelsTelephone.iterator(); |
HashMap<String, String> hmTel = new HashMap(); |
while (itStore.hasNext()) { |
Valeur v = itStore.next(); |
hmTel.put(v.getAbreviation(), v.getNom()); |
} |
Collection<String> colTelephone = hmTelephone.keySet(); |
Iterator<String> itTelephone = colTelephone.iterator(); |
while (itTelephone.hasNext()) { |
String strTelephone = itTelephone.next(); |
String strTypeTelephone = hmTelephone.get(strTelephone); |
String idTel = hmTel.get(strTypeTelephone); |
if (idTel == null) { |
idTel = strTypeTelephone; |
} |
ajouterTelephone(strTelephone, idTel, strTypeTelephone); |
} |
} |
//Courriel |
LinkedList<String> lCourriels = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_courriel"); |
if (lCourriels != null) { |
Iterator<String> itCourriels = lCourriels.iterator(); |
while (itCourriels.hasNext()) { |
String strEmail = itCourriels.next(); |
ajouterCourriel(strEmail); |
} |
} |
// Sites |
LinkedList<String> lUrl = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_url"); |
if (lUrl!=null) { |
Iterator<String> itUrl = lUrl.iterator(); |
while (itUrl.hasNext()) { |
String strUrl = itUrl.next(); |
ajouterUrl(strUrl); |
} |
} |
// Sexe |
String strSexe = personne.get("ce_sexe"); |
ComboBox<Valeur> cbSexe = (ComboBox<Valeur>) hmIdentite.get("cbSexe"); |
//FIXME : le lien avec la bdd ne peut pas se faire |
if (cbSexe.getStore().findModel("abreviation", strSexe) != null) { |
cbSexe.setValue(cbSexe.getStore().findModel("abreviation", strSexe)); |
} else { |
cbSexe.setRawValue(strSexe); |
} |
((TextArea) hmIdentite.get("taDescription")).setRawValue((String) personne.get("description")); |
// Logos |
TextArea taLogo = (TextArea) hmIdentite.get("taLogo"); |
LinkedList<String> lLogo = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_logo"); |
if (lLogo!=null) { |
Iterator<String> itLogo = lLogo.iterator(); |
String strValeurLogo = ""; |
while (itLogo.hasNext()) { |
strValeurLogo += itLogo.next(); |
if (!strValeurLogo.trim().equals("")) { |
ajouterUrlLogo(strValeurLogo); |
} |
} |
} |
/*-------------------------------------------------- |
Adresse |
---------------------------------------------------*/ |
// Adresse |
((TextField<String>) hmAdresse.get("tfAdresse1")).setValue((String) personne.get("adresse_01")); |
// Complément |
((TextField<String>) hmAdresse.get("tfAdresse2")).setValue((String) personne.get("adresse_02")); |
//Boite postale |
((TextField<String>) hmAdresse.get("tfBoitePostale")).setValue((String) personne.get("bp")); |
//Pays |
String strPays = personne.get("pays"); |
ComboBox<Valeur> cbPays = (ComboBox<Valeur>) hmAdresse.get("cbPays"); |
if (cbPays.getStore().findModel("nom", strPays) != null) { |
cbPays.setValue(cbPays.getStore().findModel("nom", strPays)); |
} else { |
cbPays.setRawValue(strPays); |
} |
//Région |
String strRegion = personne.get("region"); |
if ((strRegion!=null)&&(!strRegion.equals(""))) { |
ComboBox<Valeur> cbRegion = (ComboBox<Valeur>) hmAdresse.get("cbRegion"); |
cbRegion.setVisible(true); |
if (cbRegion.getStore().findModel("nom", strRegion) != null) { |
cbRegion.setValue(cbRegion.getStore().findModel("nom", strRegion)); |
} else { |
cbRegion.setRawValue(strRegion); |
} |
} |
//Cp |
((TextField) hmAdresse.get("tfCodePostal")).setValue(personne.get("code_postal")); |
//Ville |
((TextField) hmAdresse.get("tfVille")).setValue(personne.get("ville")); |
((Button) hmIdentite.get("btnEnregistrerRevenir")).setEnabled(true); |
((Button) hmIdentite.get("btnEnregistrer")).setEnabled(true); |
nouvellesDonnees = null; |
} else { |
Info.display("messages", info.getMessages().toString()); |
} |
} |
if (nouvellesDonnees == null) |
{ |
ComboBox cb= (ComboBox) hmIdentite.get("cbPrefixe"); |
//Met à jour le nom Complet du formulaire |
String valeurRetour = ""; |
// Prefixe |
String prefixe = ""; |
Valeur valPrefixe = (Valeur) ((ComboBox) hmIdentite.get("cbPrefixe")).getValue(); |
if (valPrefixe != null) { |
prefixe = valPrefixe.getNom(); |
} else { |
prefixe = (String) ((ComboBox) hmIdentite.get("cbPrefixe")).getRawValue(); |
} |
// Prénom |
String prenom = (String) ((TextField) hmIdentite.get("tfPrenom")).getValue(); |
// Nom |
String nom = (String) ((TextField) hmIdentite.get("tfNom")).getValue(); |
// Suffixe |
String suffixe = ""; |
Valeur valSuffixe = (Valeur) ((ComboBox) hmIdentite.get("cbSuffixe")).getValue(); |
if (valSuffixe != null) { |
suffixe = valSuffixe.getNom(); |
} else { |
suffixe = (String) ((ComboBox) hmIdentite.get("cbSuffixe")).getRawValue(); |
} |
// Mettre à jour la valeur |
valeurRetour = prefixe + " " + prenom + " " + nom + " " + suffixe; |
valeurRetour = valeurRetour.replaceAll("null", ""); |
((LabelField) hmIdentite.get("nomComplet")).setValue(valeurRetour); |
if (!valeurRetour.trim().equals("")) { |
((LabelField) hmIdentite.get("nomComplet")).show(); |
} else { |
((LabelField) hmIdentite.get("nomComplet")).hide(); |
} |
} |
mediateur.masquerPopinChargement(); |
if (this.mode.equals(MODE_AJOUTER)) { |
((Button) hmIdentite.get("btnEnregistrerRevenir")).setEnabled(true); |
((Button) hmIdentite.get("btnEnregistrer")).setEnabled(true); |
} |
} |
private HashMap<String, Valeur> hmCbSelectionnee = new HashMap(); |
public void remplirCombobox(String idComboBox, List liste, String hashMapId) { |
HashMap hm = null; |
if (hashMapId.equals("hmIdentite")) { |
hm = hmIdentite; |
} else if (hashMapId.equals("hmAdresse")){ |
hm = hmAdresse; |
} else { |
hm = hmInfosNat; |
} |
ListStore<Valeur> store = ((ComboBox) hm.get(idComboBox)).getStore(); |
store.removeAll(); |
store.add(liste); |
((ComboBox) hm.get(idComboBox)).setStore(store); |
} |
public void ajouterTelephone(String strTelephone, String strValeurTypeTel, String idTel) { |
//Ajout d'un champ à la liste |
String strIdTelephone = idTel + "##" + strTelephone + ";;"; |
FieldSet fsContactTel = (FieldSet) hmIdentite.get("fsContactTel"); |
LayoutContainer lcTelephone = new LayoutContainer(); |
lcTelephone.setLayout(new ColumnLayout()); |
Text tTypeTelephone = new Text(); |
tTypeTelephone.setText(strValeurTypeTel+":"); |
hmIdentite.put("type-" + strIdTelephone, tTypeTelephone); |
lcTelephone.add(tTypeTelephone, new ColumnData(0.40)); |
Text tTelephone = new Text(); |
tTelephone.setText(strTelephone); |
hmIdentite.put("tel-" + strIdTelephone, tTelephone); |
lcTelephone.add(tTelephone, new ColumnData(0.40)); |
IconButton bSupprimer = new IconButton(ComposantClass.ICONE_SUPPRIMER); |
bSupprimer.setId(strIdTelephone); |
bSupprimer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
String strIdTelephone = ce.component.getId(); |
LayoutContainer lcContactTel = (LayoutContainer) hmIdentite.get("lc-"+strIdTelephone); |
lcContactTel.remove(hmIdentite.get("type-" + strIdTelephone)); |
hmIdentite.remove("type-" + strIdTelephone); |
lcContactTel.remove(hmIdentite.get("tel-" + strIdTelephone)); |
hmIdentite.remove("tel-" + strIdTelephone); |
lcContactTel.remove(ce.component); |
FieldSet fsContactTel = (FieldSet) hmIdentite.get("fsContactTel"); |
fsContactTel.remove(lcContactTel); |
HiddenField<String> hfTelephone = (HiddenField) hmIdentite.get("hfTelephone"); |
String strValeurTelephone = hfTelephone.getValue(); |
strValeurTelephone = strValeurTelephone.replace(strIdTelephone, ""); |
hfTelephone.setValue(strValeurTelephone); |
layout(); |
} |
}); |
lcTelephone.add(bSupprimer, new ColumnData(0.15)); |
hmIdentite.put("lc-"+strIdTelephone, lcTelephone); |
fsContactTel.add(lcTelephone); |
HiddenField<String> hfTelephone = (HiddenField) hmIdentite.get("hfTelephone"); |
String strValeurTelephone = hfTelephone.getValue(); |
if (strValeurTelephone==null) { |
strValeurTelephone = ""; |
} |
strValeurTelephone += strIdTelephone; |
hfTelephone.setValue(strValeurTelephone); |
layout(); |
} |
public void ajouterCourriel(String strEmail) { |
TextField<String> tfCourriel = (TextField<String>) hmIdentite.get("tfCourriel"); |
tfCourriel.setValue(""); |
//Ajouter adresse email |
LayoutContainer lcCourrielContainer = (LayoutContainer) hmIdentite.get("lcCourrielContainer"); |
LayoutContainer lcCourriel = new LayoutContainer(); |
lcCourriel.setLayout(new ColumnLayout()); |
LabelField lfCourriel = new LabelField(); |
lfCourriel.setText(strEmail); |
lcCourriel.add(lfCourriel, new ColumnData(0.8)); |
hmIdentite.put("lc-" + strEmail, lcCourriel); |
//Bouton supprimer |
IconButton btnSupprimerCourriel = new IconButton(ComposantClass.ICONE_SUPPRIMER); |
btnSupprimerCourriel.setId(strEmail); |
btnSupprimerCourriel.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
//Suppression de l'adresse email |
String strEmail = ce.component.getId(); |
LayoutContainer lcCourrielContainer = (LayoutContainer) hmIdentite.get("lcCourrielContainer"); |
LayoutContainer lcCourriel = (LayoutContainer) hmIdentite.get("lc-" + strEmail); |
lcCourrielContainer.remove(lcCourriel); |
hmIdentite.remove("lc-" + strEmail); |
hmIdentite.remove("email-" + strEmail); |
HiddenField<String> hfHiddenCourriel = (HiddenField) hmIdentite.get("hfHiddenCourriel"); |
String strValeurCourriel = hfHiddenCourriel.getValue(); |
strValeurCourriel = strValeurCourriel.replace(strEmail + ";;", ""); |
hfHiddenCourriel.setValue(strValeurCourriel); |
} |
}); |
lcCourriel.add(btnSupprimerCourriel); |
lcCourrielContainer.add(lcCourriel); |
hmIdentite.put("email-" + strEmail, lfCourriel); |
HiddenField<String> hfHiddenCourriel = (HiddenField) hmIdentite.get("hfHiddenCourriel"); |
String strHiddenCourrielValue = hfHiddenCourriel.getValue(); |
if (strHiddenCourrielValue == null) { |
strHiddenCourrielValue = ""; |
} |
hfHiddenCourriel.setRawValue(strHiddenCourrielValue + strEmail + ";;"); |
layout(); |
} |
public void ajouterUrl(String strUrl) { |
LayoutContainer lcUrlContainer = (LayoutContainer) hmIdentite.get("lcUrlContainer"); |
LayoutContainer lcUrl = new LayoutContainer(); |
lcUrl.setLayout(new ColumnLayout()); |
hmIdentite.put("lc-" + strUrl, lcUrl); |
Text tUrl = new Text(strUrl); |
hmIdentite.put("url-"+strUrl, tUrl); |
lcUrl.add(tUrl, new ColumnData(0.8)); |
IconButton ibSupprimerUrl = new IconButton(ComposantClass.ICONE_SUPPRIMER); |
ibSupprimerUrl.setId(strUrl); |
ibSupprimerUrl.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
//Suppression url |
String strUrl = ce.component.getId(); |
LayoutContainer lcUrl = (LayoutContainer) hmIdentite.get("lc-" + strUrl); |
LayoutContainer lcUrlContainer = (LayoutContainer) hmIdentite.get("lcUrlContainer"); |
lcUrlContainer.remove(lcUrl); |
HiddenField<String> hfUrl = (HiddenField<String>) hmIdentite.get("hfUrl"); |
String strValeurUrl = hfUrl.getValue(); |
strValeurUrl = strValeurUrl.replace(strUrl, ""); |
hfUrl.setValue(strValeurUrl); |
} |
}); |
lcUrl.add(ibSupprimerUrl, new ColumnData(0.15)); |
lcUrlContainer.add(lcUrl); |
HiddenField<String> hfUrl = (HiddenField<String>) hmIdentite.get("hfUrl"); |
String strValeurUrl = hfUrl.getValue(); |
if (strValeurUrl == null) { |
strValeurUrl = ""; |
} |
strValeurUrl += strUrl + ";;"; |
hfUrl.setValue(strValeurUrl); |
layout(); |
} |
public void ajouterUrlLogo(String strUrl) { |
LayoutContainer lcUrlContainer = (LayoutContainer) hmIdentite.get("lcAutreInformations2"); |
LayoutContainer lcUrl = new LayoutContainer(); |
lcUrl.setLayout(new ColumnLayout()); |
hmIdentite.put("lc-" + strUrl, lcUrl); |
Text tUrl = new Text(strUrl); |
hmIdentite.put("url-"+strUrl, tUrl); |
lcUrl.add(tUrl, new ColumnData(0.8)); |
IconButton ibSupprimerUrl = new IconButton(ComposantClass.ICONE_SUPPRIMER); |
ibSupprimerUrl.setId(strUrl); |
ibSupprimerUrl.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
//Suppression url |
String strUrl = ce.component.getId(); |
LayoutContainer lcUrl = (LayoutContainer) hmIdentite.get("lc-" + strUrl); |
LayoutContainer lcUrlContainer = (LayoutContainer) hmIdentite.get("lcAutreInformations2"); |
lcUrlContainer.remove(lcUrl); |
HiddenField<String> hfUrlLogo = (HiddenField<String>) hmIdentite.get("hfUrlLogo"); |
String strValeurUrl = hfUrlLogo.getValue(); |
strValeurUrl = strUrl.replace(strUrl, ""); |
hfUrlLogo.setValue(strValeurUrl); |
} |
}); |
lcUrl.add(ibSupprimerUrl, new ColumnData(0.15)); |
lcUrlContainer.add(lcUrl); |
HiddenField<String> hfUrlLogo = (HiddenField<String>) hmIdentite.get("hfUrlLogo"); |
String strValeurUrl = hfUrlLogo.getValue(); |
if (strValeurUrl == null) { |
strValeurUrl = ""; |
} |
strValeurUrl += strUrl + ";;"; |
hfUrlLogo.setValue(strValeurUrl); |
layout(); |
} |
public void reinitialiser() { |
mediateur.afficherPopinChargement(); |
binderPersonne(personneSauvegarde); |
layout(); |
mediateur.masquerPopinChargement(); |
} |
public void binderPersonne(Personne personne) { |
binding = new FormBinding(this); |
personneSelectionnee = personne; |
binding.autoBind(); |
binding.bind(personneSelectionnee); |
layout(); |
} |
/** |
* Enregistre les information de la personne en cours |
* |
*/ |
public void enregistrer() { |
LinkedList lstMessageErreur = new LinkedList<String>(); |
ComboBox<Projet> cbProjets = (ComboBox<Projet>) hmIdentite.get("cbProjets"); |
Projet projet = cbProjets.getValue(); |
if (projet == null) { |
lstMessageErreur.add("Le projet n'a pas été renseigné"); |
} |
String strTfNom = ((TextField<String>) hmIdentite.get("tfNom")).getValue(); |
if ((strTfNom == null)||(strTfNom.trim().equals(""))) { |
lstMessageErreur.add("Le nom n'a pas été saisi"); |
} |
//Préparer les données |
ComboBox combo = (ComboBox) hmIdentite.get("cbSexe"); |
Valeur valeur; |
String strValeur = ""; |
if (combo.getValue()!=null) { |
valeur = (Valeur) combo.getValue(); |
strValeur = valeur.getId(); |
} |
if (!strValeur.trim().equals("")) { |
personneSelectionnee.set("sexe", strValeur); |
} |
strValeur = obtenirValeurCombo("cbPrefixe"); |
personneSelectionnee.set("ce_truk_prefix", strValeur); |
strValeur = obtenirValeurCombo("cbSuffixe"); |
personneSelectionnee.set("ce_truk_suffix", strValeur); |
personneSelectionnee.set("truk_courriel", ((HiddenField<String>) hmIdentite.get("hfHiddenCourriel")).getValue()); |
//Pour le nom complet, on enregistre dans la bdd la valeur du prefixe/suffixe et non l'id |
String strPrefixe = ""; |
combo = (ComboBox) hmIdentite.get("cbPrefixe"); |
valeur = (Valeur) combo.getValue(); |
if (valeur != null) { |
strPrefixe = valeur.getNom(); |
} else { |
strPrefixe = combo.getRawValue(); |
} |
String strSuffixe = ""; |
combo = (ComboBox) hmIdentite.get("cbSuffixe"); |
valeur = (Valeur) combo.getValue(); |
if (valeur != null) { |
strSuffixe = valeur.getNom() + " "; |
} else { |
strSuffixe = combo.getRawValue() +" "; |
} |
personneSelectionnee.setFmtNomComplet(strPrefixe, strSuffixe); |
DateField dfDateNaissance = (DateField) hmIdentite.get("dfDateNaissance"); |
Date naissanceDate = dfDateNaissance.getValue(); |
personneSelectionnee.setNaissanceDate(naissanceDate); |
Radio rbEstDecedee = (Radio) hmIdentite.get("rbEstDecedee"); |
if (rbEstDecedee.getValue().equals(true)) { |
DateField dfDecesDate = (DateField) hmIdentite.get("dfDateDeces"); |
Date decesDate = dfDecesDate.getValue(); |
if (decesDate == null) { |
decesDate = new Date(); |
} |
personneSelectionnee.setDecesDate(decesDate); |
personneSelectionnee.set("deces_lieu", ((TextField<String>) hmIdentite.get("tfLieuDeces")).getValue()); |
} |
personneSelectionnee.setDecesDate(new Date()); |
strValeur = obtenirValeurCombo("cbPays"); |
personneSelectionnee.set("pays", strValeur); |
strValeur = obtenirValeurCombo("cbRegion"); |
personneSelectionnee.set("region", strValeur); |
personneSelectionnee.set("truk_telephone", ((HiddenField<String>) hmIdentite.get("hfTelephone")).getValue()); |
String logoUrls = ((HiddenField<String>) hmIdentite.get("hfUrlLogo")).getValue(); |
if (logoUrls == null) { |
logoUrls = ""; |
} |
personneSelectionnee.set("truk_logo", logoUrls); |
personneSelectionnee.set("truk_url", ((HiddenField) hmIdentite.get("hfUrl")).getValue()); |
if (lstMessageErreur.size() == 0) { |
mediateur.enregistrerPersonne(this, personneSelectionnee); |
} else { |
String strMessagesErreur = "<span><br />"; |
Iterator<String> itMessagesErreur = lstMessageErreur.iterator(); |
while (itMessagesErreur.hasNext()) { |
strMessagesErreur += "<br /> - " + itMessagesErreur.next(); |
} |
strMessagesErreur += "</span>"; |
MessageBox.alert("Erreurs", "Les erreurs suivantes ont été commises : \n" + strMessagesErreur, null); |
} |
} |
private String obtenirValeurCombo(String strComboName) { |
String strValeur = ""; |
Valeur valeur; |
ComboBox combo = (ComboBox) hmIdentite.get(strComboName); |
if (combo == null) { |
combo = (ComboBox) hmAdresse.get(strComboName); |
} |
if (combo.getValue()!=null) { |
valeur = (Valeur) combo.getValue(); |
strValeur = valeur.getId(); |
} else { |
strValeur = combo.getRawValue(); |
} |
return strValeur; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/StructureVue.java |
---|
New file |
0,0 → 1,55 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureListe; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; |
import com.google.gwt.core.client.GWT; |
public class StructureVue extends LayoutContainer implements Rafraichissable { |
private Mediateur mediateur = null; |
private StructureListeVue panneauInstitutionListe = null; |
private StructureDetailVue panneauInstitutionDetail = null; |
public StructureVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
BorderLayout layout = new BorderLayout(); |
layout.setEnableState(false); |
setLayout(layout); |
panneauInstitutionListe = new StructureListeVue(mediateur); |
add(panneauInstitutionListe, new BorderLayoutData(LayoutRegion.CENTER)); |
panneauInstitutionDetail = new StructureDetailVue(mediateur); |
BorderLayoutData dispositionSud = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000); |
dispositionSud.setSplit(true); |
dispositionSud.setMargins(new Margins(5, 0, 0, 0)); |
add(panneauInstitutionDetail, dispositionSud); |
} |
public void rafraichir(Object nouvelleDonnees) { |
// Nous passons l'objet aux méthodes rafraichir des panneaux composant le panneau principal Structure |
if (nouvelleDonnees instanceof Structure) { |
panneauInstitutionDetail.rafraichir(nouvelleDonnees); |
} else if (nouvelleDonnees instanceof StructureListe) { |
panneauInstitutionListe.rafraichir(nouvelleDonnees); |
} else if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("liste_structure_a_personne")) { |
panneauInstitutionDetail.rafraichir(nouvelleDonnees); |
} |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/StructureListeVue.java |
---|
New file |
0,0 → 1,173 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
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.Information; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureListe; |
import org.tela_botanica.client.modeles.Utilisateur; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.SelectionMode; |
import com.extjs.gxt.ui.client.Style.SortDir; |
import com.extjs.gxt.ui.client.binder.TableBinder; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.table.Table; |
import com.extjs.gxt.ui.client.widget.table.TableColumn; |
import com.extjs.gxt.ui.client.widget.table.TableColumnModel; |
import com.extjs.gxt.ui.client.widget.table.TableItem; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
public class StructureListeVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null ; |
private Constantes i18nC = null ; |
private Table table = null; |
private ListStore<Structure> store = null; |
private TableBinder<Structure> binder = null; |
private TextToolItem modifier; |
private TextToolItem supprimer; |
private TextToolItem ajouter; |
public StructureListeVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
i18nC = mediateur.i18nC; |
Utilisateur utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
ToolBar toolBar = new ToolBar(); |
ajouter = new TextToolItem(i18nC.ajouter()); |
ajouter.setIconStyle(ComposantClass.ICONE_AJOUTER); |
ajouter.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicAjouterStructure(); |
} |
}); |
toolBar.add(ajouter); |
modifier = new TextToolItem(i18nC.modifier()); |
modifier.setIconStyle(ComposantClass.ICONE_MODIFIER); |
modifier.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicModifierStructure(binder.getSelection()); |
} |
}); |
toolBar.add(modifier); |
supprimer = new TextToolItem(i18nC.supprimer()); |
supprimer.setIconStyle(ComposantClass.ICONE_SUPPRIMER); |
supprimer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
clicSupprimerStructure(binder.getSelection()); |
} |
}); |
if (!utilisateur.isIdentifie()) { |
supprimer.disable(); |
} |
toolBar.add(supprimer); |
setTopComponent(toolBar); |
List<TableColumn> columns = new ArrayList<TableColumn>(); |
columns.add(new TableColumn("ville", i18nC.ville(), .3f)); |
columns.add(new TableColumn("nom", i18nC.nom(), .7f)); |
TableColumnModel cm = new TableColumnModel(columns); |
table = new Table(cm); |
table.setSelectionMode(SelectionMode.MULTI); |
table.setBorders(false); |
table.setStripeRows(true); |
add(table); |
store = new ListStore<Structure>(); |
store.sort("ville", SortDir.ASC); |
binder = new TableBinder<Structure>(table, store); |
binder.addSelectionChangedListener(new SelectionChangedListener<Structure>() { |
public void selectionChanged(SelectionChangedEvent<Structure> event) { |
Structure m = (Structure) event.getSelectedItem(); |
clicListe(m); |
} |
}); |
setLayout(new FitLayout()); |
} |
private void clicListe(Structure structure) { |
if (store.getCount() > 0) { |
mediateur.clicListeStructure(structure); |
} |
} |
private void clicSupprimerStructure(List<Structure> structuresASupprimer) { |
if (store.getCount() > 0) { |
mediateur.clicSupprimerStructure(this, structuresASupprimer); |
} |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof StructureListe) { |
StructureListe structures = (StructureListe) nouvelleDonnees; |
setHeading(i18nC.titreStructureListe()); |
List<Structure> liste = (List<Structure>) structures.toList(); |
store.removeAll(); |
store.add(liste); |
mediateur.actualiserPanneauCentral(); |
if (store.getCount() > 0) { |
table.getSelectionModel().select(0); |
} |
} else if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("suppression_structure")) { |
// Affichage d'un message d'information |
//GWT.log(info.toString(), null); |
Info.display(i18nC.suppressionStructure(), info.toString().replaceAll("\n", "<br />")); |
// Suppression des structures sélectionnées |
List<TableItem> selectionStructure = table.getSelectedItems(); |
final int taille = selectionStructure.size(); |
for (int i = 0; i < taille; i++) { |
//GWT.log("INDEX :"+table.indexOf(selectionStructure.get(i)), null); |
table.remove(selectionStructure.get(i)); |
} |
// Désactivation des boutons si la liste est vide |
if (table.getItemCount() == 0) { |
supprimer.disable(); |
modifier.disable(); |
} |
} else if (info.getType().equals("maj_utilisateur")) { |
if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) { |
if (table.getItemCount() != 0) { |
supprimer.enable(); |
} |
} else { |
supprimer.disable(); |
} |
} |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
layout(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/DetailVue.java |
---|
New file |
0,0 → 1,182 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.i18n.Constantes; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.google.gwt.core.client.GWT; |
public abstract class DetailVue extends LayoutContainer implements Rafraichissable { |
protected Mediateur mediateur = null; |
protected Constantes i18nC = null; |
protected HashMap<String, Valeur> ontologie = null; |
protected ProjetListe projets = null; |
protected String sautLigneTpl = null; |
public DetailVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
i18nC = mediateur.i18nC; |
initialiserSautLigneTpl(); |
ontologie = new HashMap<String, Valeur>(); |
chargerOntologie(); |
setLayout(new FitLayout()); |
setBorders(false); |
setScrollMode(Scroll.AUTO); |
} |
private void initialiserSautLigneTpl() { |
sautLigneTpl = "<br />\n"; |
} |
private void chargerOntologie() { |
mediateur.selectionnerProjets(this); |
} |
protected String construireTxtProjet(String idProjet) { |
String chaineARetourner = idProjet; |
if (projets != null) { |
Projet projet = projets.get(idProjet); |
String nomDuProjet = projet.getNom(); |
if (!nomDuProjet.equals("")) { |
chaineARetourner = nomDuProjet; |
} |
} |
return chaineARetourner; |
} |
protected String construireTxtTruck(String chaineAAnalyser) { |
ArrayList<String> termes = new ArrayList<String>(); |
if ((chaineAAnalyser != null) && (!chaineAAnalyser.trim().equals(""))) { |
String[] valeurs = chaineAAnalyser.split(";;"); |
int nbreValeurs = valeurs.length; |
if (nbreValeurs > 0) { |
for (int i = 0; i < nbreValeurs; i++) { |
String valeur = valeurs[i]; |
String valeurFormatee = formaterValeurTruck(valeur); |
termes.add(valeurFormatee); |
} |
} |
} |
String chaineARetourner = formaterTableauDeTxt(termes); |
return chaineARetourner; |
} |
private String formaterValeurTruck(String valeur) { |
String chaineARetourner = ""; |
if (valeur.matches("^[^#]+##[^$]+$")) { |
String[] cleValeur = valeur.split("##"); |
chaineARetourner = cleValeur[1]+" "+formaterParenthese(cleValeur[0]); |
} else if (!valeur.equals("")) { |
chaineARetourner = valeur; |
} else { |
GWT.log("Valeur truck posant problèlme :"+valeur, null); |
} |
return chaineARetourner; |
} |
protected String formaterParenthese(String chaineAAfficher) { |
if (!chaineAAfficher.equals("")) { |
chaineAAfficher = "("+chaineAAfficher+")"; |
} |
return chaineAAfficher; |
} |
protected String formaterTableauDeTxt(ArrayList<String> tableauDeTxt) { |
String chaineAAfficher = ""; |
int tailleDuTableau = tableauDeTxt.size(); |
if (tailleDuTableau > 0) { |
int indexAvtDernier = tailleDuTableau - 1; |
for (int i = 0; i < tailleDuTableau; i++) { |
String mot = tableauDeTxt.get(i); |
if (i != indexAvtDernier) { |
chaineAAfficher += mot+", "; |
} else { |
chaineAAfficher += nettoyerPointFinal(mot)+"."; |
} |
} |
} |
return chaineAAfficher; |
} |
protected String nettoyerPointFinal(String mot) { |
mot = mot.replaceAll("[.]$", ""); |
return mot; |
} |
protected void afficherOnglet(String template, Params parametres, TabItem onglet) { |
String cHtml = Format.substitute(template, parametres); |
Params cssParams = new Params(); |
cssParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU); |
cssParams.set("css_label", ComposantClass.LABEL); |
cssParams.set("css_indentation", ComposantClass.INDENTATION); |
cssParams.set("css_fieldset", ComposantClass.FIELDSET); |
cssParams.set("css_clear", ComposantClass.CLEAR); |
cHtml = Format.substitute(cHtml, cssParams); |
HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml); |
onglet.removeAll(); |
onglet.add(corpsConteneurDuHtml); |
} |
protected String formaterAutre(String chaineAAfficher) { |
if (!chaineAAfficher.equals("")) { |
chaineAAfficher = " ["+i18nC.autres()+" : "+chaineAAfficher+"]"; |
} |
return chaineAAfficher; |
} |
protected String formaterOuiNon(String chaineAFormater) { |
String txtARetourner = ""; |
if (chaineAFormater.equals("0")) { |
txtARetourner = i18nC.non(); |
} else if (chaineAFormater.equals("1")) { |
txtARetourner = i18nC.oui(); |
} |
return txtARetourner; |
} |
protected String formaterSautDeLigne(String chaineAFormater) { |
String txtARetourner = chaineAFormater.replaceAll("\n", sautLigneTpl); |
return txtARetourner; |
} |
protected void ajouterListeValeursAOntologie(ValeurListe ontologieReceptionnee) { |
Iterator<String> it = ontologieReceptionnee.keySet().iterator(); |
while (it.hasNext()) { |
String cle = it.next(); |
Valeur valeur = ontologieReceptionnee.get(cle); |
if (valeur != null) { |
ontologie.put(cle, valeur); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/StructureForm.java |
---|
New file |
0,0 → 1,2260 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
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.Configuration; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.InterneValeur; |
import org.tela_botanica.client.modeles.InterneValeurListe; |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneListe; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureValorisation; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.util.UtilArray; |
import com.extjs.gxt.ui.client.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.GridEvent; |
import com.extjs.gxt.ui.client.event.KeyListener; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.event.ToolBarEvent; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.store.Record; |
import com.extjs.gxt.ui.client.store.Store; |
import com.extjs.gxt.ui.client.store.StoreEvent; |
import com.extjs.gxt.ui.client.widget.Component; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.form.DateField; |
import com.extjs.gxt.ui.client.widget.form.Field; |
import com.extjs.gxt.ui.client.widget.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.form.HiddenField; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.form.NumberField; |
import com.extjs.gxt.ui.client.widget.form.Radio; |
import com.extjs.gxt.ui.client.widget.form.RadioGroup; |
import com.extjs.gxt.ui.client.widget.form.TextArea; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign; |
import com.extjs.gxt.ui.client.widget.grid.CellEditor; |
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig; |
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; |
import com.extjs.gxt.ui.client.widget.grid.ColumnModel; |
import com.extjs.gxt.ui.client.widget.grid.EditorGrid; |
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; |
import com.extjs.gxt.ui.client.widget.grid.RowNumberer; |
import com.extjs.gxt.ui.client.widget.layout.ColumnData; |
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormData; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig; |
import com.extjs.gxt.ui.client.widget.toolbar.AdapterToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.i18n.client.NumberFormat; |
public class StructureForm extends LayoutContainer implements Rafraichissable { |
public static final String MODE_AJOUTER = "AJOUT"; |
public static final String MODE_MODIFIER = "MODIF"; |
private Constantes i18nC = null; |
private Mediateur mediateur = null; |
private String mode = null; |
private int tabIndex = 100; |
private FormPanel structureFormPanneau = null; |
private TabPanel onglets = null; |
private TabItem identificationOnglet = null; |
private TabItem personnelOnglet = null; |
private TabItem conservationOnglet = null; |
private TabItem valorisationOnglet = null; |
private HiddenField<String> idStructureChp = null; |
// Onglet IDENTIFICATION |
private Structure identification; |
private ListStore<Valeur> magazinLstpr = null; |
private ComboBox<Valeur> comboLstpr = null; |
private ListStore<Valeur> magazinLstpu = null; |
private ComboBox<Valeur> comboLstpu = null; |
private ListStore<Valeur> magazinLiStatut = null; |
private ComboBox<Valeur> comboLiStatut = null; |
private ListStore<Valeur> fonctionsMagazin = null; |
private ComboBox<Valeur> fonctionsCombo = null; |
private ComboBox<InterneValeur> comboAcronyme = null; |
private TextField<String> ihChp = null; |
private TextField<String> mnhnChp = null; |
private ComboBox<InterneValeur> comboTypeStructure = null; |
private TextField<String> nomStructureChp; |
private DateField dateFondationChp; |
private TextArea adrChp; |
private TextField<String> cpChp; |
private TextField<String> villeChp; |
private TextField<String> regionChp; |
private TextField<String> telChp; |
private TextField<String> faxChp; |
private TextField<String> emailChp; |
private TextField<String> urlChp; |
private ListStore<Valeur> magazinPays; |
private ComboBox<Valeur> comboPays; |
// Onglet PERSONNEL |
private StructureAPersonneListe personnel; |
private StructureAPersonneListe personnelAjoute = null; |
private StructureAPersonneListe personnelModifie = null; |
private StructureAPersonneListe personnelSupprime = null; |
private NumberField nbreTotalPersonneStructureChp = null; |
private EditorGrid<StructureAPersonne> grillePersonnel = null; |
private ListStore<StructureAPersonne> personnelGrilleMagazin = null; |
// Onglet CONSERVATION |
private StructureConservation conservation = null; |
private RadioGroup formationMarkRGrpChp; |
private RadioGroup interetFormationMarkRGrpChp; |
private RadioGroup collectionCommuneMarkRGrpChp; |
private RadioGroup accesControleMarkRGrpChp; |
private RadioGroup restaurationMarkRGrpChp; |
private RadioGroup traitementMarkRGrpChp; |
private RadioGroup collectionAcquisitionMarkRGrpChp; |
private RadioGroup echantillonAcquisitionMarkRGrpChp; |
private TextField<String> localStockageAutreChp; |
private TextField<String> meubleStockageAutreChp; |
private TextField<String> parametreStockageAutreChp; |
private TextField<String> collectionAutreAutreChp; |
private TextField<String> autreCollectionAutreChp; |
private TextField<String> opRestauAutreChp; |
private TextField<String> autreMaterielAutreChp; |
private TextField<String> poisonTraitementAutreChp; |
private TextField<String> traitementAutreChp; |
private TextField<String> insecteTraitementAutreChp; |
private TextField<String> actionAutreChp; |
private TextField<String> provenanceRechercheAutreChp; |
private TextField<String> typeRechercheAutreChp; |
private CheckBoxGroup localStockageTrukCacGrpChp = null; |
private ContentPanel localStockageTrukCp = null; |
private CheckBoxGroup meubleStockageTrukCacGrpChp = null; |
private ContentPanel meubleStockageTrukCp = null; |
private CheckBoxGroup parametreStockageTrukCacGrpChp = null; |
private ContentPanel parametreStockageTrukCp = null; |
private ContentPanel collectionAutreTrukCp = null; |
private CheckBoxGroup collectionAutreTrukCacGrpChp = null; |
private CheckBoxGroup opRestauTrukCacGrpChp = null; |
private ContentPanel opRestauTrukCp = null; |
private CheckBoxGroup autreMaterielTrukCacGrpChp = null; |
private ContentPanel autreMaterielTrukCp = null; |
private ContentPanel traitementTrukCp = null; |
private CheckBoxGroup traitementTrukCacGrpChp = null; |
private ContentPanel poisonTraitementTrukCp = null; |
private ContentPanel insecteTraitementTrukCp = null; |
private CheckBoxGroup insecteTraitementTrukCacGrpChp = null; |
private CheckBoxGroup poisonTraitementTrukCacGrpChp = null; |
private ContentPanel autreCollectionTrukCp = null; |
private CheckBoxGroup autreCollectionTrukCacGrpChp = null; |
private ContentPanel provenanceRechercheTrukCp = null; |
private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null; |
private CheckBoxGroup typeRechercheTrukCacGrpChp = null; |
private ContentPanel typeRechercheTrukCp = null; |
private TextField<String> futureActionChp = null; |
private TextField<String> sansMotifAccesChp = null; |
private TextField<String> avecMotifAccesChp = null; |
private TextField<String> formationChp = null; |
private RadioGroup traitementAcquisitionMarkRGrpChp = null; |
private LabelField traitementAcquisitionMarkLabel = null; |
private RadioGroup materielConservationCeRGrpChp = null; |
// Onglet VALORISATION |
private StructureValorisation valorisation = null; |
private RadioGroup actionMarkRGrpChp = null; |
private ContentPanel actionTrukCp = null; |
private CheckBoxGroup actionTrukCacGrpChp = null; |
private RadioGroup futureActionMarkRGrpChp; |
private RadioGroup rechercheMarkRGrpChp; |
private RadioGroup sansMotifAccesMarkRGrpChp; |
private RadioGroup avecMotifAccesMarkRGrpChp; |
private TextField<String> publicationChp; |
private ContentPanel materielConservationCp; |
private ListStore<Personne> personneExistanteMagazin; |
private ComboBox<Personne> personneExistanteCombo; |
private TextToolItem supprimerPersonnelBtn; |
private ListStore<Projet> projetsMagazin; |
private ComboBox<Projet> projetsCombo; |
private CellEditor fonctionEditor; |
private List<Valeur> fonctionsListe; |
public StructureForm(Mediateur mediateurCourrant, String modeDeCreation) { |
//+-----------------------------------------------------------------------------------------------------------+ |
// Initialisation de variables |
mode = modeDeCreation; |
mediateur = mediateurCourrant; |
i18nC = mediateur.i18nC; |
// Iniatilisation du layoutContainer |
setLayout(new FitLayout()); |
setBorders(false); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Création du panneau du FORMULAIRE GÉNÉRAL |
structureFormPanneau = new FormPanel(); |
structureFormPanneau.setBodyBorder(false); |
structureFormPanneau.setFrame(true); |
structureFormPanneau.setIconStyle("icone-form-ajouter"); |
structureFormPanneau.setCollapsible(false); |
structureFormPanneau.setHeading(i18nC.titreAjoutFormStructurePanneau()); |
structureFormPanneau.setButtonAlign(HorizontalAlignment.CENTER); |
structureFormPanneau.setLayout(new FlowLayout()); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Création des onglets |
onglets = new TabPanel(); |
// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner) |
onglets.setHeight("100%"); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Onlget formulaire IDENTIFICATION |
onglets.add(creerOngletIdentification()); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Onlget formulaire PERSONNEL |
onglets.add(creerOngletPersonnel()); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Onlget formulaire CONSERVATION |
onglets.add(creerOngletConservation()); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Onlget formulaire VALORISATION |
onglets.add(creerOngletValorisation()); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Gestion du FORMULAIRE GÉNÉRAL |
// Sélection de l'onglet par défaut |
//onglets.setSelection(personnelOnglet); |
// Ajout des onglets au formulaire général |
structureFormPanneau.add(onglets); |
// Ajout des boutons au panneau formulaire |
Button annulerBtn = new Button("Annuler"); |
annulerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicMenu(MenuApplicationId.STRUCTURE); |
} |
}); |
structureFormPanneau.addButton(annulerBtn); |
Button validerBtn = new Button("Valider"); |
validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
soumettreFormulaire(); |
} |
}); |
structureFormPanneau.addButton(validerBtn); |
// Ajout du panneau Formulaire à la disposition générale |
add(structureFormPanneau); |
} |
private void soumettreFormulaire() { |
// Vérification de la validité des champs du formulaire |
if (verifierFormulaire()) { |
GWT.log("Soumission du formulaire", null); |
// Collecte des données du formulaire |
Structure structure = collecterStructureIdentification(); |
StructureConservation conservation = collecterStructureConservation(); |
StructureValorisation valorisation = collecterStructureValorisation(); |
collecterStructurePersonnel(); |
if (mode.equals("AJOUT")) { |
// Ajout des informations sur la Structure |
mediateur.ajouterStructure(this, structure, conservation, valorisation); |
// L'ajout des relations StructureAPersonne se fait quand la structure a été ajoutée |
// Voir la méthode rafraichir(). |
} else if (mode.equals("MODIF")) { |
// Modification des informations sur la Structure |
if (structure == null && conservation == null && valorisation == null) { |
Info.display("Modification d'une institution", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
mediateur.modifierStructure(this, identification.getId(), structure, conservation, valorisation); |
} |
if (personnelModifie.size() == 0 && personnelAjoute.size() == 0 && personnelSupprime.size() == 0) { |
Info.display("Modification du personnel", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
if (personnelModifie.size() != 0) { |
mediateur.modifierStructureAPersonne(this, personnelModifie); |
} |
// Ajout des relations StructureAPersonne |
if (personnelAjoute.size() != 0) { |
mediateur.ajouterStructureAPersonne(this, identification.getId(), personnelAjoute); |
} |
// Suppression des relations StructureAPersonne |
if (personnelSupprime.size() != 0) { |
mediateur.supprimerStructureAPersonne(this, personnelSupprime); |
} |
// Nous rechargeons la liste du Personnel |
rafraichirPersonnel(); |
} |
} |
} |
} |
private Boolean verifierFormulaire() { |
ArrayList<String> messages = new ArrayList<String>(); |
// Vérification des infos sur le nom de la structure |
if ( (identificationOnglet.getData("acces").equals(true) && nomStructureChp.getValue() == null) || |
(identificationOnglet.getData("acces").equals(true) && nomStructureChp.getValue().equals("")) || |
(identificationOnglet.getData("acces").equals(false) && identification.getNom().equals(""))) { |
messages.add("Veuillez indiquez un nom à l'institution."); |
} |
// Vérification des infos sur le projet de la structure |
if ( (identificationOnglet.getData("acces").equals(true) && projetsCombo.getValue() == null) || |
(identificationOnglet.getData("acces").equals(true) && projetsCombo.getValue().equals("")) || |
(identificationOnglet.getData("acces").equals(false) && identification.getIdProjet().equals(""))) { |
messages.add("Veuillez sélectionner un projet pour l'institution."); |
} |
// Vérification du Personnel |
if (personnelOnglet.getData("acces").equals(true)) { |
String personnelNumero = ""; |
int nbrePersonne = personnelGrilleMagazin.getCount(); |
for (int i = 0; i < nbrePersonne; i++) { |
StructureAPersonne personne = personnelGrilleMagazin.getAt(i); |
if (personne.getNom().equals("") || personne.getPrenom().equals("")) { |
personnelNumero += (i != 0 ? ", " : "")+(i+1); |
} |
} |
if (!personnelNumero.equals("")) { |
messages.add("Veuillez indiquez un prénom et un nom au personnel numéro : "+personnelNumero); |
} |
} |
// Affichage des messages d'alerte |
if (messages.size() != 0) { |
String[] a = {}; |
a = messages.toArray(a); |
MessageBox.alert("Erreurs de saisies", UtilArray.implode(a, "\n\n"), null); |
return false; |
} |
return true; |
} |
private StructureValorisation collecterStructureValorisation() { |
StructureValorisation valorisationARetourner = null; |
if (valorisationOnglet.getData("acces").equals(true)) { |
// Création de l'objet |
StructureValorisation valorisationCollectee = (StructureValorisation) valorisation.cloner(new StructureValorisation()); |
// ACTION |
if (actionMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setAction(actionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACTION INFO |
valorisationCollectee.setActionInfo(creerChaineDenormalisee(actionTrukCacGrpChp.getValues())); |
valorisationCollectee.setActionInfo("AUTRE", actionAutreChp.getValue()); |
// PUBLICATION |
valorisationCollectee.setPublication(publicationChp.getValue()); |
// COLLECTION AUTRE |
valorisationCollectee.setCollectionAutre(creerChaineDenormalisee(autreCollectionTrukCacGrpChp.getValues())); |
valorisationCollectee.setCollectionAutre("AUTRE", autreCollectionAutreChp.getValue()); |
// ACTION FUTURE |
if (futureActionMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setActionFuture(futureActionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACTION FUTURE INFO |
valorisationCollectee.setActionFutureInfo(futureActionChp.getValue()); |
// RECHERCHE |
if (rechercheMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setRecherche(rechercheMarkRGrpChp.getValue().getValueAttribute()); |
} |
// RECHERCHE PROVENANCE |
valorisationCollectee.setRechercheProvenance(creerChaineDenormalisee(provenanceRechercheTrukCacGrpChp.getValues())); |
valorisationCollectee.setRechercheProvenance("AUTRE", provenanceRechercheAutreChp.getValue()); |
// RECHERCHE TYPE |
valorisationCollectee.setRechercheType(creerChaineDenormalisee(typeRechercheTrukCacGrpChp.getValues())); |
valorisationCollectee.setRechercheType("AUTRE", typeRechercheAutreChp.getValue()); |
// ACCÈS SANS MOTIF |
if (sansMotifAccesMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setAccesSansMotif(sansMotifAccesMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACCÈS SANS MOTIF INFO |
valorisationCollectee.setAccesSansMotifInfo(sansMotifAccesChp.getValue()); |
// VISITE AVEC MOTIF |
if (avecMotifAccesMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setVisiteAvecMotif(avecMotifAccesMarkRGrpChp.getValue().getValueAttribute()); |
} |
// VISITE AVEC MOTIF INFO |
valorisationCollectee.setVisiteAvecMotifInfo(avecMotifAccesChp.getValue()); |
// Retour de l'objet |
if (!valorisationCollectee.comparer(valorisation)) { |
valorisationARetourner = valorisation = valorisationCollectee; |
} |
} |
return valorisationARetourner; |
} |
private void peuplerStructureValorisation() { |
if (valorisation != null && valorisationOnglet.getData("acces").equals(false)) { |
// ACTION |
actionMarkRGrpChp.get((valorisation.getAction().equals("1") ? 0 : 1)).setValue(true); |
// ACTION INFO |
peuplerCasesACocher(valorisation.getActionInfo(), actionTrukCacGrpChp, actionAutreChp); |
// PUBLICATION |
publicationChp.setValue(valorisation.getPublication()); |
// COLLECTION AUTRE |
peuplerCasesACocher(valorisation.getCollectionAutre(), autreCollectionTrukCacGrpChp, autreCollectionAutreChp); |
// ACTION FUTURE |
futureActionMarkRGrpChp.get((valorisation.getActionFuture().equals("1") ? 0 : 1)).setValue(true); |
// ACTION FUTURE INFO |
futureActionChp.setValue(valorisation.getActionFutureInfo()); |
// RECHERCHE |
rechercheMarkRGrpChp.get((valorisation.getRecherche().equals("1") ? 0 : 1)).setValue(true); |
// RECHERCHE PROVENANCE |
peuplerCasesACocher(valorisation.getRechercheProvenance(), provenanceRechercheTrukCacGrpChp, provenanceRechercheAutreChp); |
// RECHERCHE TYPE |
peuplerCasesACocher(valorisation.getRechercheType(), typeRechercheTrukCacGrpChp, typeRechercheAutreChp); |
// ACCÈS SANS MOTIF |
sansMotifAccesMarkRGrpChp.get((valorisation.getAccesSansMotif().equals("1") ? 0 : 1)).setValue(true); |
// ACCÈS SANS MOTIF INFO |
sansMotifAccesChp.setValue(valorisation.getAccesSansMotifInfo()); |
// VISITE AVEC MOTIF |
avecMotifAccesMarkRGrpChp.get((valorisation.getVisiteAvecMotif().equals("1") ? 0 : 1)).setValue(true); |
// VISITE AVEC MOTIF INFO |
avecMotifAccesChp.setValue(valorisation.getVisiteAvecMotifInfo()); |
// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter... |
valorisationOnglet.setData("acces", true); |
} |
} |
private StructureConservation collecterStructureConservation() { |
StructureConservation conservationARetourner = null; |
if (conservationOnglet.getData("acces").equals(true)) { |
// Création de l'objet |
StructureConservation conservationCollectee = (StructureConservation) conservation.cloner(new StructureConservation()); |
// FORMATION |
if (formationMarkRGrpChp.getValue() != null) { |
conservationCollectee.setFormation(formationMarkRGrpChp.getValue().getValueAttribute()); |
} |
// FORMATION INFO |
conservationCollectee.setFormationInfo(formationChp.getValue()); |
// FORMATION INTERET |
if (interetFormationMarkRGrpChp.getValue() != null) { |
conservationCollectee.setFormationInteret(interetFormationMarkRGrpChp.getValue().getValueAttribute()); |
} |
// STOCKAGE LOCAL |
conservationCollectee.setStockageLocal(creerChaineDenormalisee(localStockageTrukCacGrpChp.getValues())); |
conservationCollectee.setStockageLocal("AUTRE", localStockageAutreChp.getValue()); |
// STOCKAGE MEUBLE |
conservationCollectee.setStockageMeuble(creerChaineDenormalisee(meubleStockageTrukCacGrpChp.getValues())); |
conservationCollectee.setStockageMeuble("AUTRE", meubleStockageAutreChp.getValue()); |
// STOCKAGE PAREMETRE |
conservationCollectee.setStockageParametre(creerChaineDenormalisee(parametreStockageTrukCacGrpChp.getValues())); |
conservationCollectee.setStockageParametre("AUTRE", parametreStockageAutreChp.getValue()); |
// COLLECTION COMMUNE |
if (collectionCommuneMarkRGrpChp.getValue() != null) { |
conservationCollectee.setCollectionCommune(collectionCommuneMarkRGrpChp.getValue().getValueAttribute()); |
} |
// COLLECTION AUTRE |
conservationCollectee.setCollectionAutre(creerChaineDenormalisee(collectionAutreTrukCacGrpChp.getValues())); |
conservationCollectee.setCollectionAutre("AUTRE", collectionAutreAutreChp.getValue()); |
// ACCÈS CONTROLÉ |
if (accesControleMarkRGrpChp.getValue() != null) { |
conservationCollectee.setAccesControle(accesControleMarkRGrpChp.getValue().getValueAttribute()); |
} |
// RESTAURATION |
if (restaurationMarkRGrpChp.getValue() != null) { |
conservationCollectee.setRestauration(restaurationMarkRGrpChp.getValue().getValueAttribute()); |
} |
// RESTAURATION OPÉRATION |
conservationCollectee.setRestaurationOperation(creerChaineDenormalisee(opRestauTrukCacGrpChp.getValues())); |
conservationCollectee.setRestaurationOperation("AUTRE", opRestauAutreChp.getValue()); |
// MATERIEL CONSERVATION |
if (materielConservationCeRGrpChp.getValue() != null) { |
conservationCollectee.setMaterielConservation(materielConservationCeRGrpChp.getValue().getValueAttribute()); |
// MATERIEL AUTRE |
conservationCollectee.setMaterielAutre(creerChaineDenormalisee(autreMaterielTrukCacGrpChp.getValues())); |
conservationCollectee.setMaterielAutre("AUTRE", autreMaterielAutreChp.getValue()); |
} |
// TRAITEMENT |
if (traitementMarkRGrpChp.getValue() != null) { |
conservationCollectee.setTraitement(traitementMarkRGrpChp.getValue().getValueAttribute()); |
} |
// TRAIEMENTS |
conservationCollectee.setTraitements(creerChaineDenormalisee(traitementTrukCacGrpChp.getValues())); |
conservationCollectee.setTraitements("AUTRE", traitementAutreChp.getValue()); |
// ACQUISITION COLLECTION |
if (collectionAcquisitionMarkRGrpChp.getValue() != null) { |
conservationCollectee.setAcquisitionCollection(collectionAcquisitionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACQUISITION ECHANTILLON |
if (echantillonAcquisitionMarkRGrpChp.getValue() != null) { |
conservationCollectee.setAcquisitionEchantillon(echantillonAcquisitionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACQUISITION TRAITEMENT |
if (traitementAcquisitionMarkRGrpChp.getValue() != null) { |
conservationCollectee.setAcquisitionTraitement(traitementAcquisitionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACQUISITION TRAITEMENT POISON |
conservationCollectee.setAcquisitionTraitementPoison(creerChaineDenormalisee(poisonTraitementTrukCacGrpChp.getValues())); |
conservationCollectee.setAcquisitionTraitementPoison("AUTRE", poisonTraitementAutreChp.getValue()); |
// ACQUISITION TRAITEMENT INSECTE |
conservationCollectee.setAcquisitionTraitementInsecte(creerChaineDenormalisee(insecteTraitementTrukCacGrpChp.getValues())); |
conservationCollectee.setAcquisitionTraitementInsecte("AUTRE", insecteTraitementAutreChp.getValue()); |
// Retour de l'objet |
if (!conservationCollectee.comparer(conservation)) { |
conservationARetourner = conservation = conservationCollectee; |
} |
} |
return conservationARetourner; |
} |
private void peuplerStructureConservation() { |
if (conservation != null && conservationOnglet.getData("acces").equals(false)) { |
// FORMATION |
// Bouton oui, à toujours l'index 0 donc on teste en fonction... |
formationMarkRGrpChp.get((conservation.getFormation().equals("1") ? 0 : 1)).setValue(true); |
// FORMATION INFO |
formationChp.setValue(conservation.getFormationInfo()); |
// FORMATION INTERET |
interetFormationMarkRGrpChp.get((conservation.getFormationInteret().equals("1") ? 0 : 1)).setValue(true); |
// STOCKAGE LOCAL |
peuplerCasesACocher(conservation.getStockageLocal(), localStockageTrukCacGrpChp,localStockageAutreChp); |
// STOCKAGE MEUBLE |
peuplerCasesACocher(conservation.getStockageMeuble(), meubleStockageTrukCacGrpChp, meubleStockageAutreChp); |
// STOCKAGE PAREMETRE |
peuplerCasesACocher(conservation.getStockageParametre(), parametreStockageTrukCacGrpChp, parametreStockageAutreChp); |
// COLLECTION COMMUNE |
collectionCommuneMarkRGrpChp.get((conservation.getCollectionCommune().equals("1") ? 0 : 1)).setValue(true); |
// COLLECTION AUTRE |
peuplerCasesACocher(conservation.getCollectionAutre(), collectionAutreTrukCacGrpChp, collectionAutreAutreChp); |
// ACCÈS CONTROLÉ |
accesControleMarkRGrpChp.get((conservation.getAccesControle().equals("1") ? 0 : 1)).setValue(true); |
// RESTAURATION |
restaurationMarkRGrpChp.get((conservation.getRestauration().equals("1") ? 0 : 1)).setValue(true); |
// RESTAURATION OPÉRATION |
peuplerCasesACocher(conservation.getRestaurationOperation(), opRestauTrukCacGrpChp, opRestauAutreChp); |
// MATERIEL CONSERVATION |
peuplerBoutonsRadio(conservation.getMaterielConservation(), materielConservationCeRGrpChp); |
// MATERIEL AUTRE |
peuplerCasesACocher(conservation.getMaterielAutre(), autreMaterielTrukCacGrpChp, autreMaterielAutreChp); |
// TRAITEMENT |
traitementMarkRGrpChp.get((conservation.getTraitement().equals("1") ? 0 : 1)).setValue(true); |
// TRAITEMENTS |
peuplerCasesACocher(conservation.getTraitements(), traitementTrukCacGrpChp, traitementAutreChp); |
// ACQUISITION COLLECTION |
collectionAcquisitionMarkRGrpChp.get((conservation.getAcquisitionCollection().equals("1") ? 0 : 1)).setValue(true); |
// ACQUISITION ECHANTILLON |
echantillonAcquisitionMarkRGrpChp.get((conservation.getAcquisitionEchantillon().equals("1") ? 0 : 1)).setValue(true); |
// ACQUISITION TRAITEMENT |
traitementAcquisitionMarkRGrpChp.get((conservation.getAcquisitionTraitement().equals("1") ? 0 : 1)).setValue(true); |
// ACQUISITION TRAITEMENT POISON |
peuplerCasesACocher(conservation.getAcquisitionTraitementPoison(), poisonTraitementTrukCacGrpChp, poisonTraitementAutreChp); |
// ACQUISITION TRAITEMENT INSECTE |
peuplerCasesACocher(conservation.getAcquisitionTraitementInsecte(), insecteTraitementTrukCacGrpChp, insecteTraitementAutreChp); |
// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter... |
conservationOnglet.setData("acces", true); |
} |
} |
private Structure collecterStructureIdentification() { |
Structure structureARetourner = null; |
if (identificationOnglet.getData("acces").equals(true)) { |
Structure structureCollectee = (Structure) identification.cloner(new Structure()); |
structureCollectee.setId(idStructureChp.getValue()); |
structureCollectee.setNom(nomStructureChp.getValue()); |
// Récupération de l'identifiant du projet |
if (projetsCombo.getValue() != null) { |
structureCollectee.setIdProjet(projetsCombo.getValue().getId()); |
} |
// Récupération de l'acronyme (= identifiant alternatif) |
structureCollectee.setIdAlternatif(null); |
if (comboAcronyme.getValue() != null) { |
String typeAcronyme = comboAcronyme.getValue().getAbr(); |
if (typeAcronyme == "IH") { |
structureCollectee.setIdAlternatif(typeAcronyme+"##"+ihChp.getValue()); |
} else if (typeAcronyme == "MNHN") { |
structureCollectee.setIdAlternatif(typeAcronyme+"##"+mnhnChp.getValue()); |
} |
} |
// Récupération statut de la structure |
structureCollectee.setTypePublic(null); |
structureCollectee.setTypePrive(null); |
if (comboTypeStructure.getValue() != null) { |
String typeStructure = comboTypeStructure.getValue().getAbr(); |
if (typeStructure == "stpu" && comboLstpu.getValue() != null) { |
structureCollectee.setTypePublic(comboLstpu.getValue().getId()); |
} else if (typeStructure == "stpr" && comboLstpr.getValue() != null) { |
structureCollectee.setTypePrive(comboLstpr.getValue().getId()); |
} |
} |
structureCollectee.setDateFondation(dateFondationChp.getValue()); |
structureCollectee.setAdresse(adrChp.getValue()); |
structureCollectee.setCodePostal(cpChp.getValue()); |
structureCollectee.setVille(villeChp.getValue()); |
structureCollectee.setRegion(regionChp.getValue()); |
structureCollectee.setPays(null); |
if (comboPays.getValue() != null) { |
structureCollectee.setPays(comboPays.getValue().getId()); |
} else if (comboPays.getRawValue() != "") { |
structureCollectee.setPays(comboPays.getRawValue()); |
} |
structureCollectee.setTelephone(telChp.getValue()); |
structureCollectee.setFax(faxChp.getValue()); |
structureCollectee.setCourriel(emailChp.getValue()); |
structureCollectee.setUrl(Structure.URL_SITE, urlChp.getValue()); |
if (nbreTotalPersonneStructureChp.getValue() != null) { |
structureCollectee.setNbrePersonne(nbreTotalPersonneStructureChp.getValue().intValue()); |
} |
if (!structureCollectee.comparer(identification)) { |
structureARetourner = identification = structureCollectee; |
} |
} |
return structureARetourner; |
} |
private void peuplerStructureIdentification() { |
if (mode.equals(MODE_AJOUTER)) { |
// Indique que l'ongleta pu être modifié pour la méthode collecter... |
identificationOnglet.setData("acces", true); |
// Initialisation de l'objet Structure |
identification = new Structure(); |
// Indication du projet sélectionné par défaut |
String projetCourantId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getProjetId(); |
if (projetCourantId != null && !projetCourantId.equals("0")) { |
projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", projetCourantId)); |
} |
} |
if (mode.equals(MODE_MODIFIER) && identification != null && identificationOnglet.getData("acces").equals(false)) { |
idStructureChp.setValue(identification.getId()); |
nomStructureChp.setValue(identification.getNom()); |
if (!identification.getIdProjet().equals("0")) { |
projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", identification.getIdProjet())); |
} |
if (!identification.getIdAlternatif().isEmpty()) { |
String[] acronyme = identification.getIdAlternatif().split("##"); |
if (acronyme[0].matches("^IH$")) { |
comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeIH()); |
ihChp.setValue(acronyme[1]); |
} else if (acronyme[0].matches("^MNHN$")) { |
comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeMNHN()); |
mnhnChp.setValue(acronyme[1]); |
} |
} |
if (!identification.getTypePrive().isEmpty()) { |
if (identification.getTypePrive().matches("^[0-9]+$")) { |
comboTypeStructure.setValue(InterneValeurListe.getTypePrivee()); |
comboLstpr.setValue(comboLstpr.getStore().findModel("id_valeur", identification.getTypePrive())); |
} |
} else if (!identification.getTypePublic().isEmpty()) { |
if (identification.getTypePublic().matches("^[0-9]+$")) { |
comboTypeStructure.setValue(InterneValeurListe.getTypePublique()); |
comboLstpu.setValue(comboLstpu.getStore().findModel("id_valeur", identification.getTypePublic())); |
} |
} |
dateFondationChp.setValue(identification.getDateFondation()); |
adrChp.setValue(identification.getAdresse()); |
cpChp.setValue(identification.getCodePostal()); |
villeChp.setValue(identification.getVille()); |
regionChp.setValue(identification.getRegion()); |
if (identification.getPays().matches("^[0-9]+$")) { |
comboPays.setValue(comboPays.getStore().findModel("id_valeur", identification.getPays())); |
} else { |
comboPays.setRawValue(identification.getPays()); |
} |
telChp.setValue(identification.getTelephone()); |
faxChp.setValue(identification.getFax()); |
emailChp.setValue(identification.getCourriel()); |
urlChp.setValue(identification.getUrl("WEB")); |
nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne()); |
// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter... |
identificationOnglet.setData("acces", true); |
} |
} |
private TabItem creerOngletValorisation() { |
valorisationOnglet = new TabItem(); |
valorisationOnglet.setText("Valorisation"); |
valorisationOnglet.setScrollMode(Scroll.AUTO); |
valorisationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null)); |
valorisationOnglet.setData("acces", false); // Permet de savoir si l'onblet a été accédé par l'utilisateur |
valorisationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
peuplerStructureValorisation(); |
} |
}); |
actionMarkRGrpChp = creerChoixUniqueRadioGroupe("action_mark", "ouiNon"); |
actionMarkRGrpChp.setFieldLabel("Avez-vous réalisé des actions de valorisation de vos collections botaniques ou avez-vous été sollicités pour la valorisation de ces collections ?"); |
valorisationOnglet.add(actionMarkRGrpChp); |
actionTrukCp = creerChoixMultipleCp("actionValorisation"); |
actionTrukCp.hide(); |
actionTrukCacGrpChp = new CheckBoxGroup(); |
actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?"); |
valorisationOnglet.add(actionTrukCp); |
publicationChp = new TextArea(); |
publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ..."); |
valorisationOnglet.add(publicationChp, new FormData(550, 0)); |
autreCollectionTrukCp = creerChoixMultipleCp("autreCollection"); |
autreCollectionTrukCacGrpChp = new CheckBoxGroup(); |
autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?"); |
valorisationOnglet.add(autreCollectionTrukCp); |
futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon"); |
futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?"); |
valorisationOnglet.add(futureActionMarkRGrpChp); |
futureActionChp = new TextArea(); |
futureActionChp.setFieldLabel("Si oui, lesquelles ?"); |
futureActionChp.hide(); |
futureActionChp.addListener(Events.Hide, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
((TextArea) be.source).setValue(""); |
} |
}); |
valorisationOnglet.add(futureActionChp, new FormData(550, 0)); |
rechercheMarkRGrpChp = creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon"); |
rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?"); |
valorisationOnglet.add(rechercheMarkRGrpChp); |
provenanceRechercheTrukCp = creerChoixMultipleCp("continentEtFr"); |
provenanceRechercheTrukCp.hide(); |
provenanceRechercheTrukCacGrpChp = new CheckBoxGroup(); |
provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?"); |
valorisationOnglet.add(provenanceRechercheTrukCp); |
typeRechercheTrukCp = creerChoixMultipleCp("typeRecherche"); |
typeRechercheTrukCp.hide(); |
typeRechercheTrukCacGrpChp = new CheckBoxGroup(); |
typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?"); |
valorisationOnglet.add(typeRechercheTrukCp); |
sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon"); |
sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?"); |
valorisationOnglet.add(sansMotifAccesMarkRGrpChp); |
valorisationOnglet.add(sansMotifAccesChp = new TextArea(), new FormData(550, 0)); |
sansMotifAccesChp.hide(); |
sansMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
((TextArea) be.source).setValue(""); |
} |
}); |
sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?"); |
avecMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon"); |
avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?"); |
valorisationOnglet.add(avecMotifAccesMarkRGrpChp); |
valorisationOnglet.add(avecMotifAccesChp = new TextArea(), new FormData(550, 0)); |
avecMotifAccesChp.hide(); |
avecMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
((TextArea) be.source).setValue(""); |
} |
}); |
avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?"); |
return valorisationOnglet; |
} |
private TabItem creerOngletConservation() { |
conservationOnglet = new TabItem(); |
conservationOnglet.setText("Conservation"); |
conservationOnglet.setScrollMode(Scroll.AUTO); |
conservationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null)); |
conservationOnglet.setData("acces", false); |
conservationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
peuplerStructureConservation(); |
conservationOnglet.layout(); |
} |
}); |
formationMarkRGrpChp = creerChoixUniqueRadioGroupe("formation_mark", "ouiNon"); |
formationMarkRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservations ?"); |
conservationOnglet.add(formationMarkRGrpChp); |
formationChp = new TextArea(); |
formationChp.hide(); |
formationChp.addListener(Events.Hide, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
((TextArea) be.source).setValue(""); |
} |
}); |
formationChp.setFieldLabel("Si oui, lesquelles ?"); |
conservationOnglet.add(formationChp); |
interetFormationMarkRGrpChp = creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon"); |
interetFormationMarkRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?"); |
conservationOnglet.add(interetFormationMarkRGrpChp); |
localStockageTrukCp = creerChoixMultipleCp("localStockage"); |
localStockageTrukCacGrpChp = new CheckBoxGroup(); |
localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?"); |
conservationOnglet.add(localStockageTrukCp); |
meubleStockageTrukCp = creerChoixMultipleCp("meubleStockage"); |
meubleStockageTrukCacGrpChp = new CheckBoxGroup(); |
meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?"); |
conservationOnglet.add(meubleStockageTrukCp); |
parametreStockageTrukCp = creerChoixMultipleCp("parametreStockage"); |
parametreStockageTrukCacGrpChp = new CheckBoxGroup(); |
parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?"); |
conservationOnglet.add(parametreStockageTrukCp); |
collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon"); |
collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections dans les mêmes locaux (problème de conservation en commun) ?"); |
conservationOnglet.add(collectionCommuneMarkRGrpChp); |
collectionAutreTrukCp = creerChoixMultipleCp("autreCollection"); |
collectionAutreTrukCacGrpChp = new CheckBoxGroup(); |
collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?"); |
collectionAutreTrukCp.hide(); |
conservationOnglet.add(collectionAutreTrukCp); |
accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon"); |
accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?"); |
conservationOnglet.add(accesControleMarkRGrpChp); |
restaurationMarkRGrpChp = creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon"); |
restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?"); |
conservationOnglet.add(restaurationMarkRGrpChp); |
opRestauTrukCp = creerChoixMultipleCp("opRestau"); |
opRestauTrukCacGrpChp = new CheckBoxGroup(); |
opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?"); |
opRestauTrukCp.hide(); |
conservationOnglet.add(opRestauTrukCp); |
// Création d'un ContentPanel vide et du groupe de bouton radio |
// Le groupe de bouton radio recevra les boutons au moment de la réception des données (rafraichir()) et ser à ce moment là ajouter au ContenetPanel |
materielConservationCp = creerChoixMultipleCp("onep"); |
conservationOnglet.add(materielConservationCp); |
materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep"); |
materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?"); |
materielConservationCeRGrpChp.setToolTip(new ToolTipConfig("Matériel de conservation", "matériel spécialisé pour la conservation des archives ou du patrimoine fragile. Ce matériel possède des propriétés mécaniques et chimiques qui font qu'il résiste dans le temps et que sa dégradation n'entraîne pas de dommages sur le matériel qu'il aide à conserver. Exemples : papier neutre, papier gommé, etc...")); |
autreMaterielTrukCp = creerChoixMultipleCp("autreMateriel"); |
autreMaterielTrukCacGrpChp = new CheckBoxGroup(); |
autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?"); |
autreMaterielTrukCp.hide(); |
conservationOnglet.add(autreMaterielTrukCp); |
traitementMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon"); |
traitementMarkRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?"); |
conservationOnglet.add(traitementMarkRGrpChp); |
traitementTrukCp = creerChoixMultipleCp("insecteTraitement"); |
traitementTrukCp.hide(); |
traitementTrukCacGrpChp = new CheckBoxGroup(); |
traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?"); |
conservationOnglet.add(traitementTrukCp); |
collectionAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon"); |
collectionAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?"); |
conservationOnglet.add(collectionAcquisitionMarkRGrpChp); |
echantillonAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon"); |
echantillonAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?"); |
conservationOnglet.add(echantillonAcquisitionMarkRGrpChp); |
traitementAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon"); |
traitementAcquisitionMarkRGrpChp.hide(); |
traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?"); |
conservationOnglet.add(traitementAcquisitionMarkRGrpChp); |
traitementAcquisitionMarkLabel = new LabelField(); |
traitementAcquisitionMarkLabel.hide(); |
traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?"); |
conservationOnglet.add(traitementAcquisitionMarkLabel); |
poisonTraitementTrukCp = creerChoixMultipleCp("poisonTraitement"); |
poisonTraitementTrukCp.hide(); |
poisonTraitementTrukCacGrpChp = new CheckBoxGroup(); |
poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement"); |
poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;"); |
poisonTraitementTrukCacGrpChp.setLabelSeparator(""); |
conservationOnglet.add(poisonTraitementTrukCp); |
insecteTraitementTrukCp = creerChoixMultipleCp("insecteTraitement"); |
insecteTraitementTrukCp.hide(); |
insecteTraitementTrukCacGrpChp = new CheckBoxGroup(); |
insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;"); |
insecteTraitementTrukCacGrpChp.setLabelSeparator(""); |
insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation"); |
conservationOnglet.add(insecteTraitementTrukCp); |
return conservationOnglet; |
} |
private void collecterStructurePersonnel() { |
if (personnelOnglet.getData("acces").equals(true)) { |
int nbrePersonne = personnelGrilleMagazin.getCount(); |
for (int i = 0; i < nbrePersonne; i++) { |
StructureAPersonne personne = personnelGrilleMagazin.getAt(i); |
// Seules les lignes ajoutées ou modifiées sont prises en compte. |
if (personnelGrilleMagazin.getModifiedRecords().contains(personnelGrilleMagazin.getRecord(personne)) == true) { |
// Gestion de l'id de la structure |
if (mode.equals("MODIF")) { |
personne.setIdStructure(identification.getId()); |
} |
// Gestion de la fonction |
String fonction = personne.get("fonction"); |
if (fonction != null && !fonction.equals("")) { |
Valeur valeurRecherche = fonctionsCombo.getStore().findModel("nom", fonction); |
if (valeurRecherche != null) { |
personne.setFonction(valeurRecherche.getId()); |
} else { |
personne.setFonction("AUTRE", fonction); |
} |
} |
// Gestion de la notion de "contact" |
personne.setContact(false); |
if (personne.get("contact").equals(true)) { |
personne.setContact(true); |
} |
// Gestion du statut |
String statut = personne.get("statut"); |
if (statut != null && !statut.equals("")) { |
Valeur valeurRecherche = comboLiStatut.getStore().findModel("nom", statut); |
if (valeurRecherche != null) { |
personne.setStatut(valeurRecherche.getId()); |
} else { |
personne.setStatut("AUTRE", statut); |
} |
} |
// Gestion du temps de travail |
if (personne.get("travail") != null && !personne.get("travail").equals(0)) { |
personne.setBotaTravailHebdoTps(personne.get("travail").toString()); |
} |
// Gestion du téléphone |
String telephone = personne.get("telephone"); |
if (telephone != null && !telephone.equals("")) { |
personne.setTelephone(telephone); |
} |
// Gestion du fax |
String fax = personne.get("fax"); |
if (fax != null && !fax.equals("")) { |
personne.setFax(fax); |
} |
// Gestion du courriel |
String courriel = personne.get("courriel"); |
if (courriel != null && !courriel.equals("")) { |
personne.setCourriel(courriel); |
} |
// Gestion de la sépcialité |
String specialite = personne.get("specialite"); |
if (specialite != null && !specialite.equals("")) { |
personne.setSpecialite(specialite); |
} |
// Ajout de la personne dans la liste correspondant à son état (ajouté ou modifié) |
if (personne.get("etat") != null && personne.get("etat").equals("A")) {// Une personne ajoutée |
personnelAjoute.put(""+i, personne); |
} else {// Une personne modifiée |
personnelModifie.put(personne.getId(), personne); |
} |
} else { |
GWT.log("Personne non modifiées : "+personne.getPrenom()+" "+personne.getNom(), null); |
} |
} |
} |
} |
private void peuplerStructurePersonnel() { |
if (mode.equals(MODE_MODIFIER) && personnel != null) { |
ArrayList<StructureAPersonne> personnes = new ArrayList<StructureAPersonne>(); |
for (Iterator<String> it = personnel.keySet().iterator(); it.hasNext();) { |
String index = it.next(); |
// Gestion de la fonction |
if (fonctionsMagazin != null && !((String) personnel.get(index).getFonction()).startsWith("AUTRE##")) { |
GWT.log(personnel.get(index).getFonction(), null); |
if (fonctionsMagazin.findModel("id_valeur", personnel.get(index).getFonction()) != null) { |
personnel.get(index).set("fonction", fonctionsMagazin.findModel("id_valeur", personnel.get(index).getFonction()).getNom()); |
} |
} else { |
personnel.get(index).set("fonction", personnel.get(index).getFonction().replaceFirst("AUTRE##", "")); |
} |
// Gestion de la notion de "contact" |
personnel.get(index).set("contact", (personnel.get(index).getContact().equals("1") ? true : false)); |
// Gestion du statut |
if (magazinLiStatut != null && ((String) personnel.get(index).getStatut()).matches("^[0-9]+$")) { |
personnel.get(index).set("statut", magazinLiStatut.findModel("id_valeur", personnel.get(index).getStatut()).getNom()); |
} else { |
personnel.get(index).set("statut", personnel.get(index).getStatut().replaceFirst("AUTRE##", "")); |
} |
// Gestion du temps de travail |
String tps = personnel.get(index).getBotaTravailHebdoTps(); |
personnel.get(index).set("travail", (tps.matches("^[0-9]+$") ? Integer.parseInt(tps) : 0)); |
personnes.add(personnel.get(index)); |
} |
personnelGrilleMagazin.removeAll(); |
personnelGrilleMagazin.add(personnes); |
// Nous vidons la variable personnel une fois qu'elle a remplie la grille |
personnel = null; |
} |
} |
private TabItem creerOngletPersonnel() { |
// Création des objets contenant les manipulations de la grille |
personnelModifie = new StructureAPersonneListe(); |
personnelAjoute = new StructureAPersonneListe(); |
personnelSupprime = new StructureAPersonneListe(); |
personnelOnglet = new TabItem(); |
personnelOnglet.setText("Personnel"); |
personnelOnglet.setScrollMode(Scroll.AUTO); |
personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, 0)); |
personnelOnglet.setData("acces", false); // Permet de savoir si l'onblet a été accédé par l'utilisateur |
personnelOnglet.addListener(Events.Select, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter... |
personnelOnglet.setData("acces", true); |
// Rafraichissement du contenu de la grille du personnel$ |
rafraichirPersonnel(); |
// Peuplement du formulaire |
peuplerStructurePersonnel(); |
personnelOnglet.layout(); |
} |
}); |
ContentPanel cp = new ContentPanel(); |
cp.setHeading("Personnes travaillant sur les collections"); |
cp.setIconStyle("icone-table"); |
//cp.setScrollMode(Scroll.AUTO); |
cp.setLayout(new FitLayout()); |
cp.setWidth(1250); |
cp.setHeight("100%"); |
cp.setFrame(true); |
personnelGrilleMagazin = new ListStore<StructureAPersonne>(); |
personnelGrilleMagazin.addListener(Store.Add, new Listener<StoreEvent<StructureAPersonne>>() { |
public void handleEvent(StoreEvent<StructureAPersonne> ce) { |
// Activation du bouton supprimer si la grille contient un élément |
if (grillePersonnel.getStore().getCount() > 0) { |
supprimerPersonnelBtn.enable(); |
} |
} |
}); |
RowNumberer r = new RowNumberer(); |
List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); |
GridSelectionModel<StructureAPersonne> sm = new GridSelectionModel<StructureAPersonne>(); |
configs.add(r); |
ColumnConfig column = new ColumnConfig("fonction", "Fonction", 150); |
mediateur.obtenirListeValeurEtRafraichir(this, "fonction"); |
fonctionsMagazin = new ListStore<Valeur>(); |
fonctionsCombo = new ComboBox<Valeur>(); |
fonctionsCombo.setTriggerAction(TriggerAction.ALL); |
fonctionsCombo.setEditable(true); |
fonctionsCombo.setDisplayField("nom"); |
fonctionsCombo.setStore(fonctionsMagazin); |
fonctionEditor = new CellEditor(fonctionsCombo) { |
@Override |
public Object preProcessValue(Object valeur) { |
Valeur retour = null; |
if (valeur != null) { |
String chaineTransmise = (String) valeur; |
GWT.log("ici:"+fonctionsMagazin.getCount(), null); |
if (fonctionsMagazin.getCount() == 0 && fonctionsListe != null) { |
fonctionsMagazin.add(fonctionsListe); |
} |
if (fonctionsMagazin.findModel("id_valeur", chaineTransmise) != null) { |
retour = fonctionsMagazin.findModel("id_valeur", chaineTransmise); |
} else if (fonctionsMagazin.findModel("nom", chaineTransmise) != null) { |
retour = fonctionsMagazin.findModel("nom", chaineTransmise); |
} else { |
retour = new Valeur("", chaineTransmise, "", ""); |
} |
} |
return retour; |
} |
@Override |
public Object postProcessValue(Object valeur) { |
String retour = ""; |
Valeur fonctionTrouvee = null; |
GWT.log("ICI ", null); |
if (valeur == null) { |
GWT.log(this.getField().getRawValue(), null); |
String valeurBrute = this.getField().getRawValue(); |
if (fonctionsMagazin.getCount() == 0 && fonctionsListe != null) { |
fonctionsMagazin.add(fonctionsListe); |
} |
if (valeurBrute.matches("^[0-9]+$") && fonctionsMagazin.findModel("id_valeur", valeurBrute) != null) { |
fonctionTrouvee = fonctionsMagazin.findModel("id_valeur", valeurBrute); |
} else { |
retour = valeurBrute; |
} |
} else if (valeur instanceof Valeur) { |
fonctionTrouvee = (Valeur) valeur; |
} |
if (fonctionTrouvee != null) { |
retour = fonctionTrouvee.getNom(); |
} |
return retour; |
} |
}; |
column.setEditor(fonctionEditor); |
configs.add(column); |
column = new ColumnConfig("prenom", "Prénom", 100); |
TextField<String> prenomChp = new TextField<String>(); |
prenomChp.setAllowBlank(false); |
prenomChp.getMessages().setBlankText("Ce champ est obligatoire."); |
prenomChp.setAutoValidate(true); |
column.setEditor(new CellEditor(prenomChp)); |
configs.add(column); |
column = new ColumnConfig("nom", "Nom", 100); |
TextField<String> nomChp = new TextField<String>(); |
nomChp.setAllowBlank(false); |
nomChp.getMessages().setBlankText("Ce champ est obligatoire."); |
nomChp.setAutoValidate(true); |
column.setEditor(new CellEditor(nomChp)); |
configs.add(column); |
column = new ColumnConfig("telephone", "Téléphone fixe", 100); |
TextField<String> telChp = new TextField<String>(); |
column.setEditor(new CellEditor(telChp)); |
configs.add(column); |
column = new ColumnConfig("fax", "Fax", 100); |
TextField<String> faxChp = new TextField<String>(); |
column.setEditor(new CellEditor(faxChp)); |
configs.add(column); |
column = new ColumnConfig("courriel", "Courriel principal", 200); |
TextField<String> emailChp = new TextField<String>(); |
column.setEditor(new CellEditor(emailChp)); |
configs.add(column); |
mediateur.obtenirListeValeurEtRafraichir(this, "statut"); |
magazinLiStatut = new ListStore<Valeur>(); |
magazinLiStatut.add(new ArrayList<Valeur>()); |
comboLiStatut = new ComboBox<Valeur>(); |
comboLiStatut.setTriggerAction(TriggerAction.ALL); |
comboLiStatut.setEditable(false); |
comboLiStatut.disableTextSelection(true); |
comboLiStatut.setDisplayField("nom"); |
comboLiStatut.setStore(magazinLiStatut); |
CellEditor statutEditor = new CellEditor(comboLiStatut) { |
@Override |
public Object preProcessValue(Object value) { |
if (value == null) { |
return value; |
} |
//GWT.log("pre : "+value.toString(), null); |
return comboLiStatut.getStore().findModel("nom", (String) value); |
} |
@Override |
public Object postProcessValue(Object value) { |
if (value == null) { |
return value; |
} |
//GWT.log("post : "+value.toString(), null); |
return ((Valeur) value).get("nom"); |
} |
}; |
column = new ColumnConfig("statut", "Statut", 100); |
column.setEditor(statutEditor); |
configs.add(column); |
column = new ColumnConfig("travail", "Temps travail", 100); |
column.setNumberFormat(NumberFormat.getFormat("##")); |
NumberField tpsWChp = new NumberField(); |
tpsWChp.setFormat(NumberFormat.getFormat("##")); |
tpsWChp.setToolTip("Ce champ doit contenir un nombre"); |
column.setEditor(new CellEditor(tpsWChp)); |
configs.add(column); |
column = new ColumnConfig("specialite", "Spécialité principale", 150); |
TextField<String> speChp = new TextField<String>(); |
column.setEditor(new CellEditor(speChp)); |
configs.add(column); |
CheckColumnConfig checkColumn = new CheckColumnConfig("contact", "Contact ?", 60); |
configs.add(checkColumn); |
ToolBar toolBar = new ToolBar(); |
TextToolItem ajouterPersonnelBtn = new TextToolItem("Ajouter", "icone-vcard-ajouter"); |
ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
StructureAPersonne membreDuPersonnel = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE); |
ajouterMembreAGrillePersonnel(membreDuPersonnel); |
} |
}); |
toolBar.add(ajouterPersonnelBtn); |
toolBar.add(new SeparatorToolItem()); |
supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer"); |
supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
StructureAPersonne personne = grillePersonnel.getSelectionModel().getSelectedItem(); |
if (personne != null) { |
// Ajout de la personne supprimée à la liste |
if (personne.getIdPersonne() != null && !personne.getIdPersonne().equals("")) { |
personnelSupprime.put(personne.getId(), personne); |
} |
// Suppression de l'enregistrement de la grille |
grillePersonnel.getStore().remove(personne); |
// Désactivation du bouton supprimer si la grille contient plus d'élément |
if (grillePersonnel.getStore().getCount() == 0) { |
ce.item.disable(); |
} |
} |
} |
}); |
toolBar.add(supprimerPersonnelBtn); |
toolBar.add(new SeparatorToolItem()); |
TextToolItem rafraichirPersonnelBtn = new TextToolItem("Rafraichir", "icone-rafraichir"); |
rafraichirPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
rafraichirPersonnel(); |
} |
}); |
toolBar.add(rafraichirPersonnelBtn); |
toolBar.add(new SeparatorToolItem()); |
personneExistanteMagazin = new ListStore<Personne>(); |
personneExistanteMagazin.add(new ArrayList<Personne>()); |
personneExistanteCombo = new ComboBox<Personne>(); |
personneExistanteCombo.setWidth(200); |
personneExistanteCombo.setEmptyText("Chercher une personne existante..."); |
personneExistanteCombo.setTriggerAction(TriggerAction.ALL); |
personneExistanteCombo.setEditable(true); |
personneExistanteCombo.setDisplayField("fmt_nom_complet"); |
personneExistanteCombo.setStore(personneExistanteMagazin); |
personneExistanteCombo.addKeyListener(new KeyListener() { |
public void componentKeyUp(ComponentEvent ce) { |
if (!ce.isNavKeyPress() && personneExistanteCombo.getRawValue() != null && personneExistanteCombo.getRawValue().length() > 0) { |
rafraichirPersonneExistante(personneExistanteCombo.getRawValue()); |
} |
} |
}); |
// TODO : dans GXT 2.0 plus besoin de l'adaptateur, on peut ajouter la combobox directement sur la toolbar |
toolBar.add(new AdapterToolItem(personneExistanteCombo)); |
TextToolItem ajouterPersonneExistanteBtn = new TextToolItem("Ajouter"); |
ajouterPersonneExistanteBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
Personne personneExistante = personneExistanteCombo.getValue(); |
if (personneExistante != null) { |
StructureAPersonne membreDuPersonnel = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE); |
membreDuPersonnel.setIdPersonne(personneExistante.getId()); |
membreDuPersonnel.setNom(personneExistante.getNom()); |
membreDuPersonnel.setPrenom(personneExistante.getPrenom()); |
membreDuPersonnel.setTelephone(personneExistante.getTelephone()); |
membreDuPersonnel.setFax(personneExistante.getFax()); |
membreDuPersonnel.setCourriel(personneExistante.getCourriel()); |
membreDuPersonnel.setSpecialite(personneExistante.getSpecialite()); |
ajouterMembreAGrillePersonnel(membreDuPersonnel); |
} |
} |
}); |
toolBar.add(ajouterPersonneExistanteBtn); |
cp.setTopComponent(toolBar); |
ColumnModel cm = new ColumnModel(configs); |
grillePersonnel = new EditorGrid<StructureAPersonne>(personnelGrilleMagazin, cm); |
grillePersonnel.setBorders(true); |
grillePersonnel.setSelectionModel(sm); |
grillePersonnel.addPlugin(checkColumn); |
grillePersonnel.addPlugin(r); |
grillePersonnel.getView().setForceFit(true); |
grillePersonnel.setAutoExpandColumn("specialite"); |
grillePersonnel.setStripeRows(true); |
grillePersonnel.setTrackMouseOver(true); |
grillePersonnel.addListener(Events.Change, new Listener<GridEvent>() { |
public void handleEvent(GridEvent ge) { |
// CommitChanges évite que la grille perde la valeur des combobox éditables |
personnelGrilleMagazin.commitChanges(); |
} |
}); |
cp.add(grillePersonnel); |
personnelOnglet.add(cp); |
return personnelOnglet; |
} |
private TabItem creerOngletIdentification() { |
//+-----------------------------------------------------------------------------------------------------------+ |
// Onlget formulaire IDENTIFICATION |
identificationOnglet = new TabItem(); |
identificationOnglet.setId("identification"); |
identificationOnglet.setText("Identification"); |
identificationOnglet.setLayout(new FormLayout()); |
identificationOnglet.setScrollMode(Scroll.AUTO); |
identificationOnglet.setData("acces", false); |
identificationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
peuplerStructureIdentification(); |
identificationOnglet.layout(); |
} |
}); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Champs cachés |
idStructureChp = new HiddenField<String>(); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Fieldset IDENTITÉ |
FieldSet fieldSetIdentite = new FieldSet(); |
fieldSetIdentite.setHeading("Identité"); |
fieldSetIdentite.setCollapsible(true); |
fieldSetIdentite.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4)); |
nomStructureChp = new TextField<String>(); |
nomStructureChp.setTabIndex(tabIndex++); |
nomStructureChp.setFieldLabel("Nom de la structure"); |
nomStructureChp.setAllowBlank(false); |
nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire."); |
fieldSetIdentite.add(nomStructureChp, new FormData(450, 0)); |
mediateur.selectionnerProjets(this); |
projetsMagazin = new ListStore<Projet>(); |
projetsCombo = new ComboBox<Projet>(); |
projetsCombo.setTabIndex(tabIndex++); |
projetsCombo.setFieldLabel("Projet"); |
projetsCombo.setLabelSeparator(""); |
projetsCombo.setDisplayField("nom"); |
projetsCombo.setEditable(false); |
projetsCombo.setTriggerAction(TriggerAction.ALL); |
projetsCombo.setStore(projetsMagazin); |
fieldSetIdentite.add(projetsCombo, new FormData(450, 0)); |
// Création du sous-formulaire : Acronyme |
LayoutContainer ligne = new LayoutContainer(); |
ligne.setLayout(new ColumnLayout()); |
LayoutContainer gauche = new LayoutContainer(); |
gauche.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0)); |
LayoutContainer droite = new LayoutContainer(); |
droite.setLayout(creerFormLayout(0, null, 0)); |
ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>(); |
acronymes.add(InterneValeurListe.getTypeAcronyme()); |
comboAcronyme = new ComboBox<InterneValeur>(); |
comboAcronyme.setTabIndex(tabIndex++); |
comboAcronyme.setEmptyText("Sélectioner un type d'acronyme..."); |
comboAcronyme.setFieldLabel("Acronymes"); |
comboAcronyme.setDisplayField("nom"); |
comboAcronyme.setStore(acronymes); |
comboAcronyme.setEditable(false); |
comboAcronyme.setTypeAhead(true); |
comboAcronyme.setTriggerAction(TriggerAction.ALL); |
comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() { |
@Override |
public void selectionChanged(SelectionChangedEvent<InterneValeur> se) { |
String acronymeAbr = se.getSelectedItem().getAbr(); |
if (acronymeAbr.equals("IH")) { |
mnhnChp.hide(); |
ihChp.show(); |
} else if (acronymeAbr.equals("MNHN")) { |
ihChp.hide(); |
mnhnChp.show(); |
} else if (acronymeAbr.equals("")) { |
ihChp.hide(); |
mnhnChp.hide(); |
comboAcronyme.clearSelections(); |
} |
} |
}); |
gauche.add(comboAcronyme); |
ihChp = new TextField<String>(); |
//ihChp.setEmptyText("Index Herbariorum"); |
ihChp.setTabIndex(tabIndex++); |
ihChp.setLabelSeparator(""); |
ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons"); |
ihChp.hide(); |
droite.add(ihChp); |
mnhnChp = new TextField<String>(); |
mnhnChp.setTabIndex(tabIndex++); |
//mnhnChp.setEmptyText("MNHN"); |
mnhnChp.setLabelSeparator(""); |
mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons"); |
mnhnChp.hide(); |
droite.add(mnhnChp); |
ligne.add(gauche, new ColumnData(0.5)); |
ligne.add(droite, new ColumnData(0.5)); |
fieldSetIdentite.add(ligne); |
// Création du sous-formulaire : Type de Structure |
LayoutContainer ligneTs = new LayoutContainer(); |
ligneTs.setLayout(new ColumnLayout()); |
LayoutContainer gaucheTs = new LayoutContainer(); |
gaucheTs.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0)); |
LayoutContainer droiteTs = new LayoutContainer(); |
droiteTs.setLayout(creerFormLayout(0, null, 0)); |
ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>(); |
typesStructure.add(InterneValeurListe.getTypeStructure()); |
comboTypeStructure = new ComboBox<InterneValeur>(); |
comboTypeStructure.setTabIndex(tabIndex++); |
comboTypeStructure.setEmptyText("Sélectioner un type de structure..."); |
comboTypeStructure.setFieldLabel("Statut des structures"); |
comboTypeStructure.setDisplayField("nom"); |
comboTypeStructure.setStore(typesStructure); |
comboTypeStructure.setEditable(false); |
comboTypeStructure.setTypeAhead(true); |
comboTypeStructure.setTriggerAction(TriggerAction.ALL); |
comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() { |
@Override |
public void selectionChanged(SelectionChangedEvent<InterneValeur> se) { |
String typeAbr = se.getSelectedItem().getAbr(); |
if (typeAbr.equals("stpu")) { |
comboLstpr.hide(); |
comboLstpu.show(); |
} else if (typeAbr.equals("stpr")) { |
comboLstpu.hide(); |
comboLstpr.show(); |
} else if (typeAbr.equals("")) { |
comboLstpr.hide(); |
comboLstpu.hide(); |
comboTypeStructure.clearSelections(); |
} |
} |
}); |
gaucheTs.add(comboTypeStructure); |
mediateur.obtenirListeValeurEtRafraichir(this, "stpu"); |
magazinLstpu = new ListStore<Valeur>(); |
comboLstpu = new ComboBox<Valeur>(); |
comboLstpu.setTabIndex(tabIndex++); |
//comboLstpu.setFieldLabel("Statut des structures publiques"); |
comboLstpu.setLabelSeparator(""); |
comboLstpu.setDisplayField("nom"); |
comboLstpu.setEditable(false); |
comboLstpu.setTriggerAction(TriggerAction.ALL); |
comboLstpu.setStore(magazinLstpu); |
comboLstpu.hide(); |
droiteTs.add(comboLstpu); |
mediateur.obtenirListeValeurEtRafraichir(this, "stpr"); |
magazinLstpr = new ListStore<Valeur>(); |
comboLstpr = new ComboBox<Valeur>(); |
comboLstpr.setTabIndex(tabIndex++); |
//comboLstpr.setFieldLabel("Statut des structures privées"); |
comboLstpr.setLabelSeparator(""); |
comboLstpr.setDisplayField("nom"); |
comboLstpr.setEditable(false); |
comboLstpr.setTriggerAction(TriggerAction.ALL); |
comboLstpr.setStore(magazinLstpr); |
comboLstpr.hide(); |
droiteTs.add(comboLstpr); |
ligneTs.add(gaucheTs, new ColumnData(0.5)); |
ligneTs.add(droiteTs, new ColumnData(0.5)); |
fieldSetIdentite.add(ligneTs); |
dateFondationChp = new DateField(); |
dateFondationChp.setTabIndex(tabIndex++); |
dateFondationChp.setFieldLabel("Date de fondation"); |
dateFondationChp.getPropertyEditor().getFormat(); |
dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy")); |
dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa»."); |
fieldSetIdentite.add(dateFondationChp); |
nbreTotalPersonneStructureChp = new NumberField(); |
nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution"); |
nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#")); |
nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre"); |
fieldSetIdentite.add(nbreTotalPersonneStructureChp); |
identificationOnglet.add(fieldSetIdentite); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Fieldset ADRESSE |
LayoutContainer principalFdAdresse = new LayoutContainer(); |
principalFdAdresse.setLayout(new ColumnLayout()); |
LayoutContainer gaucheFdAdresse = new LayoutContainer(); |
gaucheFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0)); |
LayoutContainer droiteFdAdresse = new LayoutContainer(); |
droiteFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0)); |
FieldSet fieldSetAdresse = new FieldSet(); |
fieldSetAdresse.setHeading("Adresse"); |
fieldSetAdresse.setCollapsible(true); |
fieldSetAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 4)); |
adrChp = new TextArea(); |
adrChp.setTabIndex(tabIndex++); |
adrChp.setFieldLabel("Adresse"); |
fieldSetAdresse.add(adrChp, new FormData(550, 0)); |
cpChp = new TextField<String>(); |
cpChp.setTabIndex(tabIndex++); |
cpChp.setFieldLabel("Code postal"); |
gaucheFdAdresse.add(cpChp); |
villeChp = new TextField<String>(); |
villeChp.setTabIndex(tabIndex++); |
villeChp.setFieldLabel("Ville"); |
droiteFdAdresse.add(villeChp); |
regionChp = new TextField<String>(); |
regionChp.setTabIndex(tabIndex++); |
regionChp.setFieldLabel("Région"); |
gaucheFdAdresse.add(regionChp); |
mediateur.obtenirListeValeurEtRafraichir(this, "pays"); |
magazinPays = new ListStore<Valeur>(); |
comboPays = new ComboBox<Valeur>(); |
comboPays.setTabIndex(tabIndex++); |
comboPays.setFieldLabel("Pays"); |
comboPays.setEmptyText("Sélectioner un pays..."); |
comboPays.setEditable(true); |
comboPays.setLabelSeparator(""); |
comboPays.setDisplayField("nom"); |
comboPays.setTemplate(getTemplatePays()); |
comboPays.setTypeAhead(true); |
comboPays.setTriggerAction(TriggerAction.ALL); |
comboPays.setStore(magazinPays); |
droiteFdAdresse.add(comboPays); |
principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5)); |
principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5)); |
fieldSetAdresse.add(principalFdAdresse); |
identificationOnglet.add(fieldSetAdresse); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Fieldset TÉLÉPHONE et EMAIL |
LayoutContainer principalFdTelMail = new LayoutContainer(); |
principalFdTelMail.setLayout(new ColumnLayout()); |
LayoutContainer gaucheFdTelMail = new LayoutContainer(); |
gaucheFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0)); |
LayoutContainer droiteFdTelMail = new LayoutContainer(); |
droiteFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0)); |
FieldSet fieldSetTelMail = new FieldSet(); |
fieldSetTelMail.setHeading("Communication"); |
fieldSetTelMail.setCollapsible(true); |
fieldSetTelMail.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4)); |
telChp = new TextField<String>(); |
telChp.setTabIndex(tabIndex++); |
telChp.setFieldLabel("Téléphone"); |
gaucheFdTelMail.add(telChp); |
faxChp = new TextField<String>(); |
faxChp.setTabIndex(tabIndex++); |
faxChp.setFieldLabel("Fax"); |
droiteFdTelMail.add(faxChp); |
emailChp = new TextField<String>(); |
emailChp.setTabIndex(tabIndex++); |
emailChp.setFieldLabel("Courriel"); |
emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org"); |
gaucheFdTelMail.add(emailChp); |
urlChp = new TextField<String>(); |
urlChp.setTabIndex(tabIndex++); |
urlChp.setFieldLabel("Site web"); |
droiteFdTelMail.add(urlChp); |
principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5)); |
principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5)); |
fieldSetTelMail.add(principalFdTelMail); |
identificationOnglet.add(fieldSetTelMail); |
return identificationOnglet; |
} |
private native String getTemplatePays() /*-{ |
return [ |
'<tpl for=".">', |
'<div class="x-combo-list-item">{nom} ({abreviation})</div>', |
'</tpl>' |
].join(""); |
}-*/; |
private void peuplerCasesACocher(String donnees, CheckBoxGroup groupeCac, TextField<String> champAutre) { |
String[] valeurs = donnees.split(";;"); |
for (int i = 0; i < valeurs.length; i++) { |
if (valeurs[i].startsWith("AUTRE##")) { |
champAutre.setValue(valeurs[i].replaceFirst("^AUTRE##", "")); |
} else { |
List<CheckBox> cases = groupeCac.getAll(); |
for (int j = 0; j < cases.size(); j++) { |
if (cases.get(j).getId().equals("val-"+valeurs[i])) { |
cases.get(j).setValue(true); |
} |
} |
} |
} |
} |
private void peuplerBoutonsRadio(String valeur, RadioGroup groupeBr) { |
List<Radio> boutons = groupeBr.getAll(); |
String id = valeur+"_"+groupeBr.getName().replace("_grp", ""); |
for (int i = 0; i < boutons.size(); i++) { |
if (boutons.get(i).getId().equals(id)) { |
boutons.get(i).setValue(true); |
} |
} |
} |
private String creerChaineDenormalisee(List<CheckBox> liste) { |
String identifiants = ""; |
if (liste != null) { |
int taille = liste.size(); |
for (int i = 0; i < taille; i++) { |
CheckBox cac = liste.get(i); |
if (cac.isEnabled()) { |
identifiants = identifiants.concat(";;"+cac.getData("id")); |
} |
} |
identifiants.replaceFirst("^;;", ""); |
} |
return identifiants; |
} |
/** Méthode simplifiant la création de FormLayout. |
* Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut. |
* |
* @param labelWidth largeur des labels. |
* @param labelAlign alignement des labels |
* @param padding padding du layout |
* @return |
*/ |
private FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign, Integer padding) { |
FormLayout formLayout = new FormLayout(); |
if (labelWidth != null) { |
formLayout.setLabelWidth(labelWidth); |
} |
if (labelAlign != null) { |
formLayout.setLabelAlign(labelAlign); |
} |
if (padding != null) { |
formLayout.setPadding(padding); |
} |
return formLayout; |
} |
/** Méthode simplifiant la création de bouton radio oui/non |
* |
* @param listeNom nom de la liste de valeur |
* @return |
*/ |
private RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) { |
groupeNom += "_grp"; |
// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème... |
RadioGroup radioGroup = new RadioGroup(groupeNom); |
radioGroup.setName(groupeNom); |
if (listeNom.equals("ouiNon")) { |
ValeurListe ouiNonListe = new ValeurListe(); |
ouiNonListe.ajouter(new Valeur("1", i18nC.oui(), "NULL", "NULL")); |
ouiNonListe.ajouter(new Valeur("0", i18nC.non(), "NULL", "NULL")); |
creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe); |
} |
return radioGroup; |
} |
private void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) { |
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) { |
Valeur val = listeValeurs.get(it.next()); |
Radio radioBtn = new Radio(); |
radioBtn.setName(radioGroupe.getName().replace("_grp", "")); |
radioBtn.setId(val.getId()+"_"+radioBtn.getName()); |
radioBtn.setBoxLabel(val.getNom()); |
radioBtn.setValueAttribute(val.getId()); |
radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
//Window.alert(((Radio) be.component).getName()); |
afficherChampSupplementaire(((Radio) be.component)); |
} |
}); |
if (! val.getDescription().equals("NULL")) { |
radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription())); |
} |
radioGroupe.add(radioBtn); |
} |
} |
private void afficherChampSupplementaire(Radio radioBtn) { |
//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null); |
// Valeur du bouton radio déclenchant l'affichage des composants cachés |
String valeurPourAfficher = "oui"; |
// Construction de la liste des composants à afficher/cacher |
String radioGroupeNom = radioBtn.getGroup().getName(); |
ArrayList<Object> composants = new ArrayList<Object>(); |
if (radioGroupeNom.equals("action_mark_grp")) { |
composants.add(actionTrukCp); |
} else if (radioGroupeNom.equals("future_action_mark_grp")) { |
composants.add(futureActionChp); |
} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) { |
composants.add(sansMotifAccesChp); |
} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) { |
composants.add(avecMotifAccesChp); |
} else if (radioGroupeNom.equals("recherche_mark_grp")) { |
composants.add(provenanceRechercheTrukCp); |
composants.add(typeRechercheTrukCp); |
} else if (radioGroupeNom.equals("formation_mark_grp")) { |
composants.add(formationChp); |
} else if (radioGroupeNom.equals("collection_commune_mark_grp")) { |
composants.add(collectionAutreTrukCp); |
} else if (radioGroupeNom.equals("restauration_mark_grp")) { |
composants.add(opRestauTrukCp); |
} else if (radioGroupeNom.equals("traitement_mark_grp")) { |
composants.add(traitementTrukCp); |
} else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) { |
composants.add(traitementAcquisitionMarkRGrpChp); |
} else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) { |
composants.add(traitementAcquisitionMarkLabel); |
composants.add(poisonTraitementTrukCp); |
composants.add(insecteTraitementTrukCp); |
} else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) { |
composants.add(autreMaterielTrukCp); |
valeurPourAfficher = "non"; |
} |
// Nous affichons/cachons les composant de la liste |
final int nbreComposants = composants.size(); |
//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null); |
//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax); |
for (int i = 0; i < nbreComposants; i++) { |
// En fonction du type de bouton cliquer, on affiche ou cache les champs |
String type = radioBtn.getBoxLabel().toLowerCase(); |
//GWT.log(type, null); |
if (radioBtn.getValue() == true) { |
if (type.equals(valeurPourAfficher)) { |
((Component) composants.get(i)).show(); |
} else { |
((Component) composants.get(i)).hide(); |
} |
} |
// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage |
if (composants.get(i) instanceof ContentPanel) { |
((ContentPanel) composants.get(i)).layout(); |
} |
} |
} |
/** Méthode simplifiant la création de choix multiple sous forme de case à cocher. |
* Apelle un service retournant la liste des valeurs représentant les cases à cocher. |
* Ajoute ou pas un champ "Autre". |
* |
* @param listeNom nom de la liste de valeur |
* @return |
*/ |
private ContentPanel creerChoixMultipleCp(String listeNom) { |
mediateur.obtenirListeValeurEtRafraichir(this, listeNom); |
ContentPanel cp = new ContentPanel(); |
cp.setLayout(creerFormLayout(650, LabelAlign.TOP, 0)); |
cp.setHeaderVisible(false); |
return cp; |
} |
/** Méthode simplifiant la création de choix multiple sous forme de case à cocher. |
* Apelle un service retournant la liste des valeurs représentant les cases à cocher. |
* Ajoute ou pas un champ "Autre". |
* |
* @param cp panneau conteant le groupe de case à cocher |
* @param cacGroup le groupe de case à cocher |
* @param listeValeurs la liste de valeurs à transformer en case à cocher |
* @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître |
* @return |
*/ |
private void creerChoixMultipleCac(ContentPanel cp, final CheckBoxGroup cacGroupe, ValeurListe listeValeurs, final Field<String> autreChp) { |
cp.addListener(Events.Hide, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
cacGroupe.reset(); |
autreChp.setValue(""); |
} |
}); |
cacGroupe.setAutoWidth(true); |
cacGroupe.setData("liste_id", listeValeurs.getId()); |
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) { |
Valeur val = listeValeurs.get(it.next()); |
String nom = val.get("nom"); |
CheckBox cac = new CheckBox(); |
cac.setId("val-"+val.getId()); |
cac.setData("id", val.getId()); |
cac.setBoxLabel(nom); |
if (! val.getDescription().equals("NULL")) { |
cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription())); |
} |
cacGroupe.add(cac); |
} |
cp.add(cacGroupe); |
if (autreChp != null) { |
ContentPanel autreCp = new ContentPanel(); |
autreCp.setLayout(creerFormLayout(75, LabelAlign.TOP, 0)); |
autreCp.setHeaderVisible(false); |
autreChp.setId("autre-"+listeValeurs.getId()); |
autreChp.setFieldLabel("Autre"); |
autreChp.setLabelStyle("font-weight:normal;"); |
autreCp.add(autreChp); |
cp.add(autreCp); |
} |
cp.layout(); |
} |
public void rafraichir(Object nouvelleDonnees) { |
try { |
if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) { |
GWT.log("MESSAGES:\n"+info.getMessages().toString(), null); |
} |
if (info.getType().equals("modif_structure")) { |
Info.display("Modification d'une institution", info.toString()); |
} else if (info.getType().equals("ajout_structure")) { |
if (info.getMessage(0) != null && info.getMessage(0).matches("^[0-9]+$")) { |
Info.display("Ajout d'une Institution", "L'intitution a bien été ajoutée"); |
// Suite à la récupération de l'id de l'institution nouvellement ajoutée nous ajoutons le personnel |
mediateur.ajouterStructureAPersonne(this, info.toString(), personnelAjoute); |
} else { |
Info.display("Ajout d'une Institution", info.toString()); |
} |
} else if (info.getType().equals("modif_structure_a_personne")) { |
Info.display("Modification du Personnel", info.toString()); |
} else if (info.getType().equals("suppression_structure_a_personne")) { |
Info.display("Suppression du Personnel", info.toString()); |
} else if (info.getType().equals("ajout_structure_a_personne")) { |
Info.display("Ajout du Personnel", info.toString()); |
} else if (info.getType().equals("selection_structure")) { |
Info.display("Modification d'une institution", info.toString()); |
GWT.log("Mode du formulaire : "+mode, null); |
String titre = i18nC.titreModifFormStructurePanneau(); |
if (info.getDonnee(0) != null) { |
identification = (Structure) info.getDonnee(0); |
if (onglets.getSelectedItem().equals(identificationOnglet)) { |
peuplerStructureIdentification(); |
} |
// Composition du titre |
titre += " - ID : "+identification.getId(); |
} |
if (info.getDonnee(1) != null) { |
conservation = (StructureConservation) info.getDonnee(1); |
if (onglets.getSelectedItem().equals(conservationOnglet)) { |
peuplerStructureConservation(); |
} |
} |
if (info.getDonnee(2) != null) { |
valorisation = (StructureValorisation) info.getDonnee(2); |
if (valorisation != null) { |
if (onglets.getSelectedItem().equals(valorisationOnglet)) { |
peuplerStructureValorisation(); |
} |
} |
} |
structureFormPanneau.setHeading(titre); |
} else if (info.getType().equals("liste_structure_a_personne")) { |
if (info.getDonnee(0) != null) { |
personnel = (StructureAPersonneListe) info.getDonnee(0); |
//GWT.log(personnel.toString(), null); |
if (onglets.getSelectedItem().equals(personnelOnglet)) { |
peuplerStructurePersonnel(); |
Info.display("Chargement du Personnel", "ok"); |
} |
} |
if (info.getDonnee(1) != null) { |
Info.display("Debug", info.getDonnee(1).toString()); |
} |
} else if (info.getType().equals("liste_personne")) { |
if (info.getDonnee(0) != null) { |
PersonneListe personnes = (PersonneListe) info.getDonnee(0); |
List<Personne> liste = new ArrayList<Personne>(); |
for (Iterator<String> it = personnes.keySet().iterator(); it.hasNext();) { |
liste.add(personnes.get(it.next())); |
} |
GWT.log("Nbre de personnes trouvées :"+personnes.size(), null); |
personneExistanteMagazin.removeAll(); |
personneExistanteMagazin.add(liste); |
personneExistanteCombo.setStore(personneExistanteMagazin); |
personneExistanteCombo.expand(); |
} |
} |
} else if (nouvelleDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees; |
List<Valeur> liste = listeValeurs.toList(); |
// Test pour savoir si la liste contient des éléments |
if (liste.size() > 0) { |
Configuration config = (Configuration) Registry.get(RegistreId.CONFIG); |
if (listeValeurs.getId().equals(config.getListeId("stpr"))) { |
magazinLstpr.removeAll(); |
magazinLstpr.add(liste); |
comboLstpr.setStore(magazinLstpr); |
} |
if (listeValeurs.getId().equals(config.getListeId("stpu"))) { |
magazinLstpu.removeAll(); |
magazinLstpu.add(liste); |
comboLstpu.setStore(magazinLstpu); |
} |
if (listeValeurs.getId().equals(config.getListeId("statut"))) { |
magazinLiStatut.removeAll(); |
magazinLiStatut.add(liste); |
comboLiStatut.setStore(magazinLiStatut); |
} |
if (listeValeurs.getId().equals(config.getListeId("fonction"))) { |
// FIXME : le store ne contient pas tout le temps les données, chose étrange. |
// On stocke donc les données dans une variables de la classe pour recharger le store si besoin. |
fonctionsListe = liste; |
fonctionsMagazin.removeAll(); |
fonctionsMagazin.add(liste); |
fonctionsCombo.setStore(fonctionsMagazin); |
} |
if (listeValeurs.getId().equals(config.getListeId("pays"))) { |
magazinPays.removeAll(); |
magazinPays.add(liste); |
comboPays.setStore(magazinPays); |
} |
if (listeValeurs.getId().equals(config.getListeId("localStockage"))) { |
localStockageAutreChp = new TextField<String>(); |
creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, localStockageAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) { |
meubleStockageAutreChp = new TextField<String>(); |
creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, meubleStockageAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) { |
parametreStockageAutreChp = new TextField<String>(); |
creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, parametreStockageAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) { |
if (collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) { |
collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp"); |
collectionAutreAutreChp = new TextField<String>(); |
creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, collectionAutreAutreChp); |
} |
if (autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) { |
autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp"); |
autreCollectionAutreChp = new TextField<String>(); |
creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, autreCollectionAutreChp); |
} |
} |
if (listeValeurs.getId().equals(config.getListeId("opRestau"))) { |
opRestauAutreChp = new TextField<String>(); |
creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, opRestauAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("onep"))) { |
creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs); |
materielConservationCp.add(materielConservationCeRGrpChp); |
materielConservationCp.layout(); |
} |
if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) { |
autreMaterielAutreChp = new TextField<String>(); |
creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, autreMaterielAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) { |
poisonTraitementAutreChp = new TextField<String>(); |
creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, poisonTraitementAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) { |
if (traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) { |
traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp"); |
traitementAutreChp = new TextField<String>(); |
creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, traitementAutreChp); |
} |
if (insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) { |
insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp"); |
insecteTraitementAutreChp = new TextField<String>(); |
creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, insecteTraitementAutreChp); |
} |
} |
if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) { |
actionAutreChp = new TextField<String>(); |
creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, actionAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) { |
provenanceRechercheAutreChp = new TextField<String>(); |
creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, provenanceRechercheAutreChp); |
} |
if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) { |
typeRechercheAutreChp = new TextField<String>(); |
creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, typeRechercheAutreChp); |
} |
//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null); |
} else { |
GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null); |
} |
} else if (nouvelleDonnees instanceof ProjetListe) { |
ProjetListe projets = (ProjetListe) nouvelleDonnees; |
List<Projet> liste = new ArrayList<Projet>(); |
for (Iterator<String> it = projets.keySet().iterator(); it.hasNext();) { |
liste.add(projets.get(it.next())); |
} |
projetsMagazin.removeAll(); |
projetsMagazin.add(liste); |
projetsCombo.setStore(projetsMagazin); |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} catch (Exception e) { |
GWT.log("rafraichir()", e); |
} |
} |
private void rafraichirPersonnel() { |
if (mode.equals(MODE_MODIFIER)) { |
initialiserGrillePersonnelEnModifcation(); |
} else if (mode.equals(MODE_AJOUTER)) { |
initialiserGrillePersonnelEnAjout(); |
} |
} |
private void rafraichirPersonneExistante(String nom) { |
mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%"); |
} |
private void ajouterMembreAGrillePersonnel(StructureAPersonne personnel) { |
grillePersonnel.stopEditing(); |
personnelGrilleMagazin.insert(personnel, 0); |
// Nous modifions l'enregistrement pour que le modèle soit pris en compte lors de la collecte. |
Record record = personnelGrilleMagazin.getRecord(personnelGrilleMagazin.getAt(0)); |
record.beginEdit(); |
if (!personnel.getFonction().equals("")) { |
Object fonction = fonctionEditor.preProcessValue(personnel.getFonction()); |
if (fonction != null && fonction instanceof Valeur) { |
record.set("fonction", ((Valeur)fonction).getNom()); |
} |
} |
if (!personnel.getPrenom().equals("")) { |
record.set("prenom", personnel.getPrenom()); |
} |
if (!personnel.getNom().equals("")) { |
record.set("nom", personnel.getNom()); |
} |
if (!personnel.getTelephone().equals("")) { |
record.set("telephone", personnel.selectionnerTelephone(Personne.TELEPHONE_FIXE)); |
} |
if (!personnel.getFax().equals("")) { |
record.set("fax", personnel.selectionnerFax(1)); |
} |
if (!personnel.getCourriel().equals("")) { |
record.set("courriel", personnel.selectionnerCourriel(1)); |
} |
if (!personnel.getStatut().equals("")) { |
record.set("statut", personnel.getStatut()); |
} |
String tempsDeTravail = personnel.getBotaTravailHebdoTps(); |
record.set("travail", (tempsDeTravail.matches("^[0-9]+$") ? Integer.parseInt(tempsDeTravail) : 0)); |
if (!personnel.getSpecialite().equals("")) { |
record.set("specialite", personnel.afficherSpecialite()); |
} |
record.set("contact", (personnel.getContact().equals("1") ? true : false)); |
record.set("etat", personnel.get("etat")); |
record.endEdit(); |
grillePersonnel.startEditing(0, 0); |
} |
private void initialiserGrillePersonnelEnAjout() { |
personnelGrilleMagazin.removeAll(); |
StructureAPersonne conservateurDesCollections = new StructureAPersonne(StructureAPersonne.FONCTION_CONSERVATEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE); |
ajouterMembreAGrillePersonnel(conservateurDesCollections); |
StructureAPersonne directeurDuPersonnel = new StructureAPersonne(StructureAPersonne.FONCTION_DIRECTEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE); |
ajouterMembreAGrillePersonnel(directeurDuPersonnel); |
} |
private void initialiserGrillePersonnelEnModifcation() { |
mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/MenuVue.java |
---|
New file |
0,0 → 1,139 |
package org.tela_botanica.client.vues; |
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; |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import com.extjs.gxt.ui.client.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.binder.TreeBinder; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.TreeEvent; |
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.google.gwt.user.client.ui.ListBox; |
import com.google.gwt.user.client.ui.Widget; |
public class MenuVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null; |
private Constantes i18nC = null; |
private Tree arbreMenus; |
private ListBox listeProjets; |
private boolean estListeProjetsInitialise = false; |
private ProjetListe projetsCache = null; |
private TreeStore<Menu> menuStore; |
public MenuVue(Mediateur mediateurCourrant) { |
mediateur = mediateurCourrant; |
i18nC = mediateur.i18nC; |
setLayout(new FlowLayout()); |
setLayoutOnChange(true); |
setHeading(i18nC.titreMenu()); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof ProjetListe) { |
projetsCache = (ProjetListe) nouvelleDonnees; |
afficherProjets(); |
} |
} |
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>(); |
Menu accueilMenu = new Menu(i18nC.menuAccueil(), MenuApplicationId.ACCUEIL); |
Menu projetMenu = new Menu(i18nC.menuProjet(), MenuApplicationId.PROJET); |
Menu menuInstitution = new Menu(i18nC.menuStructure(), MenuApplicationId.STRUCTURE); |
Menu menuCollections = new Menu(i18nC.menuCollection(), MenuApplicationId.COLLECTION); |
Menu menuPersonnes = new Menu(i18nC.menuPersonne(), MenuApplicationId.PERSONNE); |
Menu menuPublications = new Menu(i18nC.menuPublication(), MenuApplicationId.PUBLICATION); |
menuStore.add(accueilMenu, false); |
menuStore.add(projetMenu, false); |
menuStore.add(menuInstitution, false); |
menuStore.add(menuCollections, false); |
menuStore.add(menuPersonnes, false); |
menuStore.add(menuPublications, false); |
} |
public void chargerMenus() { |
construireMenu(); |
afficherMenu(); |
} |
private void chargerProjets() { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).selectionnerProjets(this); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PublicationVue.java |
---|
New file |
0,0 → 1,53 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.StructureListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; |
import com.google.gwt.user.client.Window; |
public class PublicationVue extends LayoutContainer implements Rafraichissable { |
private PublicationListeVue panneauPublicationListe; |
private PublicationDetailVue panneauPublicationDetail; |
public PublicationVue() { |
BorderLayout layout = new BorderLayout(); |
layout.setEnableState(false); |
setLayout(layout); |
panneauPublicationListe = new PublicationListeVue(); |
this.add(panneauPublicationListe, new BorderLayoutData(LayoutRegion.CENTER)); |
panneauPublicationDetail = new PublicationDetailVue(); |
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000); |
southData.setSplit(true); |
southData.setMargins(new Margins(5, 0, 0, 0)); |
this.add(panneauPublicationDetail, southData); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof PublicationListe) { |
remplirListe((PublicationListe) nouvelleDonnees); |
} else { |
MessageBox.alert("Attention", "Une erreur est survenue", null); |
} |
} |
private void remplirListe(PublicationListe listePublication) { |
LayoutContainer panneauCentre = (LayoutContainer) Registry.get(RegistreId.PANNEAU_CENTRE); |
panneauPublicationListe.rafraichir(listePublication); |
panneauPublicationDetail.rafraichir(listePublication); |
panneauCentre.layout(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PublicationListeVue.java |
---|
New file |
0,0 → 1,147 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.PublicationListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.SelectionMode; |
import com.extjs.gxt.ui.client.binder.TableBinder; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedEvent; |
import com.extjs.gxt.ui.client.event.SelectionChangedListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.Component; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.table.CellRenderer; |
import com.extjs.gxt.ui.client.widget.table.Table; |
import com.extjs.gxt.ui.client.widget.table.TableColumn; |
import com.extjs.gxt.ui.client.widget.table.TableColumnModel; |
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
public class PublicationListeVue extends ContentPanel implements Rafraichissable { |
private Mediateur coelMediateur = null ; |
private Table table = null; |
private ListStore<Publication> store = null; |
private TableBinder<Publication> binder = null; |
public PublicationListeVue() { |
coelMediateur = Registry.get(RegistreId.MEDIATEUR); |
ToolBar toolBar = new ToolBar(); |
TextToolItem ajouter = new TextToolItem("Ajouter"); |
ajouter.setIconStyle(ComposantClass.ICONE_AJOUTER); |
ajouter.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
coelMediateur.clicAjouterPublication(); |
} |
}); |
toolBar.add(ajouter); |
TextToolItem modifier = new TextToolItem("Modifier"); |
modifier.setIconStyle(ComposantClass.ICONE_MODIFIER); |
toolBar.add(modifier); |
modifier.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
coelMediateur.clicModifierPublication(binder.getSelection()); |
} |
}); |
TextToolItem supprimer = new TextToolItem("Supprimer"); |
supprimer.setIconStyle(ComposantClass.ICONE_SUPPRIMER); |
toolBar.add(supprimer); |
supprimer.addSelectionListener(new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
coelMediateur.clicSupprimerPublication(binder.getSelection()); |
} |
}); |
setTopComponent(toolBar); |
List<TableColumn> columns = new ArrayList<TableColumn>(); |
// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste |
TableColumn auteurColonne = new TableColumn("fmt_auteur", "Auteur(s)", .2f); |
auteurColonne.setRenderer(new CellRenderer() { |
public String render(Component item, String property, Object value) { |
// TODO Auto-generated method stub |
return ((String)value).replaceAll("\\|", ", "); |
} |
}); |
columns.add(auteurColonne); |
columns.add(new TableColumn("titre", "Titre", .15f)); |
columns.add(new TableColumn("fmt_nom_complet", "Nom de la revue", .15f)); |
columns.add(new TableColumn("ce_truk_editeur", "Editeur", .1f)); |
columns.add(new TableColumn("date_parution", "Date de parution", .1f)); |
columns.add(new TableColumn("indication_nvt", "Tome", .1f)); |
columns.add(new TableColumn("fascicule", "Fascicule", .1f)); |
columns.add(new TableColumn("truk_pages", "Pages", .1f)); |
TableColumnModel cm = new TableColumnModel(columns); |
table = new Table(cm); |
table.setSelectionMode(SelectionMode.MULTI); |
table.setBorders(false); |
add(table); |
store = new ListStore<Publication>(); |
binder = new TableBinder<Publication>(table, store); |
binder.setAutoSelect(true); |
binder.addSelectionChangedListener(new SelectionChangedListener<Publication>() { |
public void selectionChanged(SelectionChangedEvent<Publication> event) { |
Publication m = (Publication) event.getSelectedItem(); |
clicListe(m); |
} |
}); |
setLayout(new FitLayout()); |
} |
public ListStore<Publication> getStore() { |
return store; |
} |
public TableBinder<Publication> getBinder() { |
return binder; |
} |
private void clicListe(Publication publication) { |
coelMediateur.clicListePublication(publication); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof PublicationListe) { |
PublicationListe listePublications = (PublicationListe) nouvelleDonnees; |
setHeading("Publications"); |
List<Publication> liste = new ArrayList<Publication>(); |
for (Iterator<String> it = listePublications.keySet().iterator(); it.hasNext();) { |
liste.add(listePublications.get(it.next())); |
} |
store.removeAll(); |
store.add((List<Publication>) liste); |
// Test pour savoir si la liste contient des éléments |
if (listePublications.size() > 0) { |
binder.setSelection((Publication) listePublications.get(0)); |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/ContenuVue.java |
---|
New file |
0,0 → 1,59 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.CollectionListe; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.PersonneListe; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.StructureListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.google.gwt.core.client.GWT; |
public class ContenuVue extends LayoutContainer implements Rafraichissable { |
private Mediateur mediateur = null; |
public ContenuVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
setLayout(new FitLayout()); |
setBorders(true); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// RAFRAICHISSEMENT |
//+----------------------------------------------------------------------------------------------------------------+ |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof StructureListe) { |
mediateur.afficherListeStructures((StructureListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof CollectionListe) { |
mediateur.afficherListeCollections((CollectionListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof PublicationListe) { |
mediateur.afficherListePublication((PublicationListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof PersonneListe) { |
mediateur.afficherListePersonnes((PersonneListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof ProjetListe) { |
mediateur.afficherListeProjets((ProjetListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
// Affichage des éventuels messages de déboguage ou d'alerte |
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) { |
GWT.log(info.getMessages().toString(), null); |
} |
// Traitement en fonction des types d'information |
if (info.getType().equals("liste_personne")) { |
mediateur.afficherListePersonnes((PersonneListe) info.getDonnee(0)); |
Info.display("Chargement d'une liste de personnes", ""); |
} |
} |
mediateur.desactiverChargement(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PersonneDetailVue.java |
---|
New file |
0,0 → 1,438 |
package org.tela_botanica.client.vues; |
import java.util.Collection; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.LinkedList; |
import java.util.MissingResourceException; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.util.UtilTruk; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
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.layout.RowData; |
import com.extjs.gxt.ui.client.widget.layout.RowLayout; |
import com.google.gwt.user.client.ui.Image; |
public class PersonneDetailVue extends LayoutContainer implements Rafraichissable { |
private LayoutContainer lcDetailHaut; |
// Le panneau détail se compose de formulaires tabulés |
private TabPanel tabPanel; |
// Onglet 1 : identite & contact |
private TabItem tabIdentite; |
// Onglet 2 : Adresses |
private TabItem tabAdresse; |
// Onglet 3 : Informations naturalistes |
private TabItem tabInfosNat; |
private FieldSet fsSpec; |
//Onglet 4 : logos |
private TabItem tabLogos; |
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
public PersonneDetailVue() { |
setLayout(new RowLayout()); |
ContentPanel cp = new ContentPanel(); |
cp.setLayout(new FlowLayout()); |
lcDetailHaut = new LayoutContainer(); |
lcDetailHaut.setLayout(new RowLayout()); |
//this.add(lcDetailHaut, new RowData(1, 0.2)); |
cp.setTopComponent(lcDetailHaut); |
add(lcDetailHaut); |
tabPanel = new TabPanel(); |
this.add(tabPanel, new RowData(1, 1)); |
//Constructeur de la classe |
Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this); |
//setLayout(new FitLayout()); |
tabIdentite = new TabItem(mediateur.i18nC.personneIdentite()); |
tabIdentite.setLayout(new FitLayout()); |
tabIdentite.setScrollMode(Scroll.AUTO); |
tabPanel.add(tabIdentite); |
//Onglet Adresse: |
tabAdresse = new TabItem(mediateur.i18nC.personneAdresses()); |
tabAdresse.setLayout(new FitLayout()); |
tabAdresse.setScrollMode(Scroll.AUTO); |
tabPanel.add(tabAdresse); |
//Onglet info naturalistes |
tabInfosNat = new TabItem(mediateur.i18nC.personneInfoNat()); |
fsSpec = new FieldSet(); |
fsSpec.setLayout(new FormLayout()); |
tabInfosNat.setScrollMode(Scroll.AUTO); |
tabPanel.add(tabInfosNat); |
tabLogos = new TabItem(mediateur.i18nC.personneLogos()); |
tabLogos.setLayout(new FlowLayout()); |
tabPanel.add(tabLogos); |
} |
private HashMap hmLabelFieldRegion = new HashMap(); |
public void afficherDetailPersonne(Personne personne) { |
if (personne != null) { |
String enteteTpl = "<div id='{css_id}'>"+ |
"<h1>{nom}</h1>"+ |
"<h2><a href='{mail}'>{mail}</a></h2>" + |
"</div>"; |
//MAJ Identité : Configurer les fieldSet |
Params enteteParams = new Params(); |
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE); |
enteteParams.set("nom", (String) personne.get("fmt_nom_complet")); |
enteteParams.set("mail", (String) personne.get("courriel_princ")); |
LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo"); |
if (lstLogos!=null && lstLogos.size() > 0) { |
tabLogos.removeAll(); |
String urlLogoPrinc = (String) lstLogos.get(0); |
if (!urlLogoPrinc.trim().equals("")) { |
enteteTpl = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='45px'/></div>" + enteteTpl; |
enteteParams.set("image", urlLogoPrinc); |
} |
Iterator<String> itLogo = lstLogos.iterator(); |
while (itLogo.hasNext()){ |
String urlLogoCourant = itLogo.next(); |
Image imgCourante = new Image(urlLogoCourant); |
tabLogos.add(imgCourante); |
} |
tabLogos.enable(); |
} else { |
enteteParams.set("image", ""); |
tabLogos.disable(); |
} |
lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, enteteParams)); |
String tabIdentiteTpl = "<div class='{css_id}'>" + |
" <span><b>" + mediateur.i18nC.personneNomComplet() + ":</b></span> {nom_complet}<br />" + |
" <span><b>" + mediateur.i18nC.personneNomAutre() + ":</b></span> {nom_autre}<br />" + |
" <span><b>" + mediateur.i18nC.personneAbreviation() + ":</b></span> {abreviation}<br />" + |
" <span><b>" + mediateur.i18nC.personneAbreviationAutre() + ":</b></b></span> {abreviation_autre}<br /><br />" + |
" <span><b>" + mediateur.i18nC.personneDateNaissance() + "</b></span> {naissance_date}<br />" + |
" <span><b>" + mediateur.i18nC.personneLieuNaissance() + ":</b></span> {naissance_lieu}<br /><br />" + |
" <span><b>" + mediateur.i18nC.personneDateDeces() + ":</b></span> {deces_date}<br />" + |
" <span><b>" + mediateur.i18nC.personneLieuDeces() + ":</b></span> {deces_lieu}<br /><br />" + |
"</div>" + |
"<div class='{css_id}'>" + |
" <span style='vertical-align:top'><b>" + mediateur.i18nC.description() + ":</b><br /></span> {description}<br />" + |
"<br />"; |
Params tabIdentiteParams = new Params(); |
tabIdentiteParams.set("css_id", "coel-fieldset"); |
tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet")); |
tabIdentiteParams.set("abreviation", personne.getString("abreviation")); |
tabIdentiteParams.set("naissance_date", personne.getString("naissance_date")); |
tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu")); |
tabIdentiteParams.set("deces_date", personne.getString("deces_date")); |
tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu")); |
tabIdentiteParams.set("description", personne.getString("description")); |
tabInfosNat.removeAll(); |
// Nom autre : champ truk; non-typé |
LinkedList<String> nomsAutre = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_nom_autre"); |
String listeNoms = ""; |
if ((nomsAutre != null)&&(nomsAutre.size() > 0)) { |
listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", "); |
} |
tabIdentiteParams.set("nom_autre", listeNoms); |
// Abréviations, autre : non-typé |
LinkedList<String> abrevAutres = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_abreviation_autre"); |
String listeAbrev = ""; |
if ((abrevAutres != null)&&(abrevAutres.size() > 0)) { |
listeAbrev = UtilTruk.traiterTrukListe(abrevAutres, ", "); |
} |
tabIdentiteParams.set("abreviation_autre", listeAbrev); |
HashMap<String, String> mapTelephones = (HashMap<String, String>) personne.getChaineDenormaliseAsMapOrList("truk_telephone"); |
if ((mapTelephones != null)&&(mapTelephones.size() > 0)) { |
Collection<String> telephoneKeys = mapTelephones.keySet(); |
Iterator<String> itTelephones = telephoneKeys.iterator(); |
while (itTelephones.hasNext()) { |
String key = itTelephones.next(); |
String label = mapTelephones.get(key); |
try { |
label = mediateur.i18nC.getString(label); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
tabIdentiteTpl += "<b>" + label + ":</b> " + key; |
tabIdentiteTpl += "<br />"; |
} |
} |
// FAX > TYPE Téléphone |
// Courriel :Champ truk de la forme "Adresse@adr.com;; adr2@adr.fr ..." |
LinkedList<String> listeCourriel = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_courriel"); |
if ((listeCourriel!=null)&&(listeCourriel.size() > 0)) { |
String strLabelCourriel = "Courriel"; |
if (listeCourriel.size() > 1) { |
strLabelCourriel += "s"; |
} |
String valeurCourriel = ""; |
Iterator<String> itCourriel = listeCourriel.iterator(); |
while (itCourriel.hasNext()) { |
String valeurCourante = itCourriel.next(); |
valeurCourriel += "<br /><a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a>"; |
} |
tabIdentiteTpl += valeurCourriel; |
} |
// Url Site Webs |
LinkedList listeUrl = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_url"); |
if (listeUrl!=null && listeUrl.size() > 0) { |
tabIdentiteTpl += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>"; |
String strUrl = ""; |
Iterator<String> urlIt = listeUrl.iterator(); |
while (urlIt.hasNext()) { |
String urlCourante = urlIt.next(); |
strUrl += "<a href=\""+urlCourante+"\">" + urlCourante + "</a> <br/>"; |
} |
tabIdentiteTpl += strUrl + "</span><br />"; |
} |
tabIdentiteTpl += "</div>"; |
afficherOnglet(tabIdentiteTpl, tabIdentiteParams, tabIdentite); |
tabIdentite.setStyleAttribute("padding", "15px"); |
String tabAdresseTpl = "<div id='css_id'>" + |
" <h1>Adresse personnelle:</h1>" + |
" {adresse01} <br />" + |
" {adresse02} <br />" + |
" {boitePostale}<br />" + |
" {codePostal} {region}<br />" + |
" <span style='uppercase'>{pays}</span><br />" + |
"</div>"; |
//Adresses : |
Params paramAdresseTpl = new Params(); |
paramAdresseTpl.set("adresse01", (String) personne.obtenirValeurChamp("adresse_01")); |
paramAdresseTpl.set("adresse02", (String) personne.obtenirValeurChamp("adresse_02")); |
paramAdresseTpl.set("boitePostale", (String) personne.obtenirValeurChamp("bp")); |
paramAdresseTpl.set("codePostal", (String) personne.obtenirValeurChamp("code_postal")); |
paramAdresseTpl.set("ville", (String) personne.obtenirValeurChamp("ville")); |
paramAdresseTpl.set("region", (String) personne.obtenirValeurChamp("region")); |
paramAdresseTpl.set("pays", (String) personne.obtenirValeurChamp("pays")); |
afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse); |
tabAdresse.setStyleAttribute("padding", "15px"); |
// Infos naturalistes :Biographie, Spécialité (typé) |
fsSpec.setHeading("Spécialités"); |
tabInfosNat.add(fsSpec); |
HashMap hmSpecialite = (HashMap) personne.getChaineDenormaliseAsMapOrList("ce_truk_specialite"); |
if ((hmSpecialite != null)&&(hmSpecialite.size() > 0)) { |
Collection<String> specialiteKeys = hmSpecialite.keySet(); |
Iterator<String> itSpec = specialiteKeys.iterator(); |
while (itSpec.hasNext()) { |
String key = itSpec.next(); |
LabelField specLabel = new LabelField(); |
String label = ""; |
try { |
label = mediateur.i18nC.getString(key); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
specLabel.setFieldLabel( label + ":"); |
specLabel.setValue(hmSpecialite.get(key)); |
fsSpec.add(specLabel); |
} |
} |
// Récolte |
LinkedList<String> lstRecolte = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_recolte"); |
if ((lstRecolte!=null)&&(lstRecolte.size()>0)) { |
FieldSet fsRecolte = new FieldSet(); |
fsRecolte.setHeading("Récoltes"); |
fsRecolte.setLayout(new FormLayout()); |
Iterator<String> itRecolte = lstRecolte.iterator(); |
while (itRecolte.hasNext()) { |
String recolteCourante = itRecolte.next(); |
LabelField lfRecolte = new LabelField(); |
String[] splitRecolte = recolteCourante.split("\\|"); |
String labelRecolte = ""; |
if (splitRecolte.length > 1) { |
lfRecolte.setValue(splitRecolte[1]); |
} |
lfRecolte.setFieldLabel(splitRecolte[0]); |
fsRecolte.add(lfRecolte); |
LinkedList<LabelField> lstComposantsRegion = (LinkedList<LabelField>) hmLabelFieldRegion.get(splitRecolte[0]); |
if (lstComposantsRegion == null) { |
lstComposantsRegion = new LinkedList<LabelField>(); |
} |
lstComposantsRegion.add(lfRecolte); |
hmLabelFieldRegion.remove(splitRecolte[0]); |
hmLabelFieldRegion.put(splitRecolte[0], lstComposantsRegion); |
} |
tabInfosNat.add(fsRecolte); |
} |
changerLabelRegions(); |
// tabInfosNat |
layout(); |
} |
} |
protected void afficherOnglet(String template, Params parametres, TabItem onglet) { |
String cHtml = Format.substitute(template, parametres); |
Params cssParams = new Params(); |
cssParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU); |
cssParams.set("css_label", ComposantClass.LABEL); |
cssParams.set("css_indentation", ComposantClass.INDENTATION); |
cssParams.set("css_fieldset", ComposantClass.FIELDSET); |
cssParams.set("css_clear", ComposantClass.CLEAR); |
cHtml = Format.substitute(cHtml, cssParams); |
HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml); |
onglet.removeAll(); |
onglet.add(corpsConteneurDuHtml); |
} |
private void changerLabelRegions() { |
Collection<String> colClesComposants = hmLabelFieldRegion.keySet(); |
Iterator<String> itComposants = colClesComposants.iterator(); |
while (itComposants.hasNext()) { |
String region = itComposants.next(); |
mediateur.obtenirValeurEtRafraichir(this, "region", region); |
} |
} |
private void ajouterLabelField(FieldSet fs, String tfLabel, Object tfValue) { |
if ((tfValue!=null)&&(!tfValue.toString().trim().equals(""))) { |
LabelField tf = new LabelField(); |
tf.setFieldLabel(tfLabel + ":"); |
if ((tfLabel==null)||("".equals(tfLabel))) { |
tf.setHideLabel(true); |
tf.setStyleAttribute("margin", "0 0 0 105px"); |
} |
tf.setValue(tfValue); |
//Ajout au fieldSet |
fs.add(tf); |
} |
} |
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG); |
public void rafraichir(Object nouvellesDonnees) { |
// Si on a reçu une personne on en affiche les détails |
if (nouvellesDonnees instanceof Personne) { |
afficherDetailPersonne((Personne) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof ValeurListe) { |
ValeurListe listeValeur = (ValeurListe) nouvellesDonnees; |
if (listeValeur.getId().equals(config.getListeId("region"))) { |
Collection colCleListeValeur = listeValeur.keySet(); |
Iterator<String> itLv = colCleListeValeur.iterator(); |
while (itLv.hasNext()) { |
String idRegion = itLv.next(); |
Valeur region = listeValeur.get(idRegion); |
if (region != null) { |
String strRegionId = region.getAbreviation(); |
LinkedList<LabelField> listComposantsRegion = (LinkedList) hmLabelFieldRegion.get(strRegionId); |
for (int i=0; i < listComposantsRegion.size(); i++) { |
LabelField lfRegion = listComposantsRegion.get(i); |
lfRegion.setFieldLabel(region.getNom()); |
} |
} |
} |
} |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PublicationForm.java |
---|
New file |
0,0 → 1,401 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Set; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.HorizontalPanel; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.form.DateField; |
import com.extjs.gxt.ui.client.widget.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormData; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTML; |
public class PublicationForm extends LayoutContainer implements Rafraichissable { |
private Mediateur mediateur = null; |
FormPanel panel = null ; |
private String idStructureEdition = "" ; |
private String idPublication = "" ; |
private String idProjet = "" ; |
private String metaPubli = "" ; |
private PersonneListe listePersonneAuteur = null ; |
private ListStore<Personne> storeAuteurs = null ; |
private ArrayList<ComboBox<Personne>> listeAuteurs = null; |
private TextField<String> nomArticle = null; |
private TextField<String> intituleCollPub = null; |
private TextField<String> uriPub = null; |
private ComboBox<Structure> comboListeEditeurs = null; |
private ListStore<Structure> storeEditeurs = null; |
private DateField datePub = null; |
private TextField<String> tomPub = null; |
private TextField<String> fasciculePub = null; |
private TextField<String> pagesPub = null; |
private String mode = "AJOUT"; |
FieldSet fieldSetAuteurs = null ; |
private Publication publi; |
public PublicationForm() { |
setLayout(new FitLayout()); |
mediateur = Registry.get(RegistreId.MEDIATEUR); |
storeAuteurs = new ListStore<Personne>(); |
listePersonneAuteur = new PersonneListe(); |
// Création de la disposition : FIELDSET |
FormLayout layoutFieldset = new FormLayout(); |
layoutFieldset.setLabelWidth(200); |
layoutFieldset.setPadding(4); |
//+-----------------------------------------------------------------------------------------------------------+ |
// Création du panneau Formulaire |
panel = new FormPanel(); |
panel.setFrame(true); |
panel.setIconStyle("icone-form-ajouter"); |
panel.setCollapsible(false); |
panel.setHeading("Ajout d'une publication"); |
panel.setButtonAlign(HorizontalAlignment.CENTER); |
panel.setLayout(new FlowLayout()); |
add(panel); |
// Fieldset Auteur |
fieldSetAuteurs = new FieldSet(); |
fieldSetAuteurs.setHeading("Auteur(s)"); |
fieldSetAuteurs.setCollapsible(true); |
fieldSetAuteurs.setLayout(layoutFieldset); |
panel.add(fieldSetAuteurs); |
genererChampsAuteur("",false); |
// Création de la disposition : FIELDSET |
FormLayout layoutFieldset2 = new FormLayout(); |
layoutFieldset.setLabelWidth(200); |
layoutFieldset.setPadding(4); |
// Fieldset Infos Générales |
FieldSet fieldSetInfosGen = new FieldSet(); |
fieldSetInfosGen.setHeading("Informations générales"); |
fieldSetInfosGen.setCollapsible(true); |
fieldSetInfosGen.setLayout(layoutFieldset2); |
panel.add(fieldSetInfosGen); |
nomArticle = new TextField<String>(); |
nomArticle.setName("cpu"); |
nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage"); |
intituleCollPub = new TextField<String>(); |
intituleCollPub.setFieldLabel("Intitulé de la collection ou de la revue"); |
uriPub = new TextField<String>(); |
uriPub.setFieldLabel("URI de la publication"); |
fieldSetInfosGen.add(nomArticle); |
fieldSetInfosGen.add(intituleCollPub); |
fieldSetInfosGen.add(uriPub); |
// Création de la disposition : FIELDSET |
FormLayout layoutFieldset3 = new FormLayout(); |
layoutFieldset.setPadding(4); |
// Fieldset Edition |
FieldSet fieldSetEdition = new FieldSet(); |
fieldSetEdition.setHeading("Edition"); |
fieldSetEdition.setCollapsible(true); |
fieldSetEdition.setLayout(layoutFieldset3); |
panel.add(fieldSetEdition); |
storeEditeurs = new ListStore<Structure>(); |
comboListeEditeurs = new ComboBox<Structure>(); |
comboListeEditeurs.setEmptyText("Sélectionner un editeur..."); |
comboListeEditeurs.setFieldLabel("Editeur de la publication"); |
comboListeEditeurs.setDisplayField("nom"); |
comboListeEditeurs.setStore(storeEditeurs); |
comboListeEditeurs.setEditable(true); |
comboListeEditeurs.setTypeAhead(true); |
comboListeEditeurs.setTriggerAction(TriggerAction.QUERY); |
datePub = new DateField(); |
datePub.setFieldLabel("Date de publication"); |
tomPub = new TextField<String>(); |
tomPub.setFieldLabel("Tome"); |
fasciculePub = new TextField<String>(); |
fasciculePub.setFieldLabel("Fascicule"); |
pagesPub = new TextField<String>(); |
pagesPub.setFieldLabel("Pages"); |
fieldSetEdition.add(comboListeEditeurs,new FormData(500,20)); |
fieldSetEdition.add(datePub, new FormData(75,20)); |
fieldSetEdition.add(tomPub); |
fieldSetEdition.add(fasciculePub); |
fieldSetEdition.add(pagesPub, new FormData(100,20)); |
// Ajout des boutons au panneau formulaire |
Button annulerBtn = new Button("Annuler"); |
annulerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
mediateur.clicMenu("Publications"); |
} |
}); |
panel.addButton(annulerBtn); |
Button validerBtn = new Button("Valider"); |
validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
soumettreFormulaire(); |
} |
}); |
panel.addButton(validerBtn); |
mediateur.clicObtenirListeAuteurs(this); |
mediateur.clicObtenirListeEditeurs(this); |
} |
public void rafraichir(Object nouvelleDonnees) { |
// Si on a reçu les details d'une publication |
if(nouvelleDonnees instanceof Publication) { |
mode = "MODIF" ; |
publi = (Publication)nouvelleDonnees; |
genererChampsAuteur(publi.getIdAuteur(),false); |
nomArticle.setValue(publi.getTitre()); |
intituleCollPub.setValue(publi.getCollection()); |
uriPub.setValue(publi.getURI()); |
datePub.setRawValue(publi.getDateParution()); |
tomPub.setValue(publi.getIndicationNvt()); |
fasciculePub.setValue(publi.getFascicule()); |
pagesPub.setValue(publi.getPages()); |
idPublication = publi.getId(); |
idStructureEdition = publi.getEditeur(); |
idProjet = publi.getProjet() ; |
panel.setHeading("Modification d'une publication"); |
} |
// Si on a reçu une liste des editeurs |
if(nouvelleDonnees instanceof StructureListe) { |
storeEditeurs.removeAll(); |
StructureListe listeStructure = (StructureListe) nouvelleDonnees; |
storeEditeurs.add((List<Structure>) listeStructure.toList()); |
if(mode.equals("MODIF")) { |
comboListeEditeurs.setValue((Structure) listeStructure.get(idStructureEdition)); |
} |
comboListeEditeurs.expand(); |
} |
if(nouvelleDonnees instanceof PersonneListe) { |
storeAuteurs.removeAll(); |
listePersonneAuteur = (PersonneListe)nouvelleDonnees; |
Set<String> listeStructureSet = listePersonneAuteur.keySet(); |
for(Iterator<String> it = listeStructureSet.iterator() ; it.hasNext() ;) { |
storeAuteurs.add(listePersonneAuteur.get(it.next())); |
} |
if(mode.equals("MODIF")) { |
genererChampsAuteur(publi.getIdAuteur(),false); |
} |
} |
} |
private void soumettreFormulaire() { |
String auteur = "" ; |
for(int i = 0 ; i < listeAuteurs.size() ; i++) { |
auteur += listeAuteurs.get(i).getValue(); |
if(i != listeAuteurs.size() -1) { |
auteur += "|"; |
} |
} |
String nomArt = nomArticle.getValue(); |
String pub = nomArticle.getValue()+" "+intituleCollPub.getValue(); |
String collPub = intituleCollPub.getValue(); |
String uri = uriPub.getValue(); |
String editeur = comboListeEditeurs.getValue().getId(); |
String datePar = datePub.getRawValue(); |
String tome = tomPub.getValue(); |
String fascicule = fasciculePub.getValue(); |
String pages = pagesPub.getValue(); |
if (mode.equals("AJOUT")) { |
Publication publi = new Publication(pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages); |
mediateur.ajouterPublication(this, publi); |
} else if (mode.equals("MODIF")) { |
Publication publi = new Publication(idPublication,idProjet,pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages); |
mediateur.modifierPublication(this, publi); |
} |
} |
private void genererChampsAuteur(String auteursStr, boolean ajouter) { |
String[] auteurs = auteursStr.split(";;"); |
LayoutContainer conteneurChamps = new LayoutContainer(); |
if(auteurs.length != 0) { |
listeAuteurs = new ArrayList<ComboBox<Personne>>(auteurs.length); |
} |
else{ |
listeAuteurs = new ArrayList<ComboBox<Personne>>(1); |
ajouter = true ; |
} |
fieldSetAuteurs.removeAll(); |
//final Label labelAuteur = new Label("Auteur de la publication :"); |
final HTML labelAuteur = new HTML("<label class=\"x-form-item-label x-formulaire-auteur-label\" style=\"width: 100px;\">Auteur(s) de l'article ou de l'ouvrage:</label>"); |
fieldSetAuteurs.add(labelAuteur); |
int i = 0; |
for(i = 0 ; i < auteurs.length ; i++) { |
conteneurChamps.add(creerTextFieldEtBouton(auteurs[i])); |
} |
if(ajouter) { |
conteneurChamps.add(creerTextFieldEtBouton(null)); |
} |
Button ajoutAuteurBtn = new Button("Ajouter un auteur"); |
ajoutAuteurBtn.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
String idsAuteurs = "" ; |
for(int i = 0 ; i < listeAuteurs.size() ; i++) { |
Personne enCours = listeAuteurs.get(i).getValue() ; |
String valeurChampAuteur = " " ; |
if(enCours != null) { |
valeurChampAuteur = enCours.getId(); |
} |
else |
{ |
valeurChampAuteur = null ; |
} |
if(valeurChampAuteur != null) |
{ |
idsAuteurs += valeurChampAuteur ; |
} |
idsAuteurs += ";;" ; |
} |
genererChampsAuteur(idsAuteurs,true); |
} |
}); |
fieldSetAuteurs.add(conteneurChamps); |
fieldSetAuteurs.add(ajoutAuteurBtn); |
fieldSetAuteurs.layout(); |
} |
public HorizontalPanel creerTextFieldEtBouton(String valeurDefaut) { |
HorizontalPanel p = new HorizontalPanel() ; |
// Création de la disposition : FIELDSET |
FormLayout layoutPanelTF = new FormLayout(); |
p.setLayout(layoutPanelTF); |
final ComboBox<Personne> tf = new ComboBox<Personne>() ; |
tf.setDisplayField("fmt_nom_complet"); |
tf.setStore(storeAuteurs); |
if(valeurDefaut != null && !valeurDefaut.equals("") ) { |
Personne auteur = listePersonneAuteur.get((String)valeurDefaut); |
tf.setValue(auteur); |
} |
tf.setSize(200, 20); |
listeAuteurs.add(tf); |
Button supp = new Button("-"); |
supp.addSelectionListener(new SelectionListener<ComponentEvent>() { |
@Override |
public void componentSelected(ComponentEvent ce) { |
String idsAuteurs = "" ; |
listeAuteurs.remove(tf); |
for(int i = 0 ; i < listeAuteurs.size() ; i++) { |
Personne enCours = listeAuteurs.get(i).getValue() ; |
String valeurChampAuteur = " " ; |
if(enCours != null) { |
valeurChampAuteur = enCours.getId(); |
} |
else |
{ |
valeurChampAuteur = null ; |
} |
if(valeurChampAuteur != null & !valeurChampAuteur.equals("")) |
{ |
idsAuteurs += valeurChampAuteur ; |
} |
else |
{ |
idsAuteurs += " " ; |
} |
if(i != listeAuteurs.size() - 1) { |
idsAuteurs+= ";;"; |
} |
} |
genererChampsAuteur(idsAuteurs,false); |
} |
}); |
p.add(tf); |
p.add(supp); |
fieldSetAuteurs.add(p); |
return p ; |
} |
} |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/CollectionDetailVue.java |
---|
New file |
0,0 → 1,151 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Collection; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.ValeurListe; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Html; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.google.gwt.core.client.GWT; |
public class CollectionDetailVue extends DetailVue implements Rafraichissable { |
private Structure structure = null; |
private String enteteTpl = null; |
private String generalTpl = null; |
private Collection collection = null; |
private ContentPanel panneauPrincipal = null; |
private Html entete = null; |
private TabPanel onglets = null; |
private TabItem generalOnglet = null; |
public CollectionDetailVue(Mediateur mediateurCourant) { |
super(mediateurCourant); |
initialiserTousLesTpl(); |
chargerOntologie(); |
panneauPrincipal = new ContentPanel(); |
panneauPrincipal.setLayout(new FlowLayout()); |
panneauPrincipal.setHeaderVisible(false); |
panneauPrincipal.setBodyBorder(false); |
entete = new Html(); |
entete.setId(ComposantId.ZONE_DETAIL_ENTETE); |
panneauPrincipal.setTopComponent(entete); |
onglets = new TabPanel(); |
onglets.setId(ComposantId.ZONE_DETAIL_CORPS); |
onglets.setHeight("100%"); |
onglets.setBodyBorder(false); |
generalOnglet = new TabItem(i18nC.structureInfoGeneral()); |
generalOnglet.setLayout(new AnchorLayout()); |
generalOnglet.setScrollMode(Scroll.AUTO); |
onglets.add(generalOnglet); |
panneauPrincipal.add(onglets); |
add(panneauPrincipal); |
} |
private void initialiserTousLesTpl() { |
initialiserEnteteHtmlTpl(); |
initialiserGeneralTpl(); |
} |
private void initialiserEnteteHtmlTpl() { |
enteteTpl = |
"<div id='{css_id}'>"+ |
" <h1>{nom}</h1>"+ |
" <h2>{structure}<span class='{css_meta}'>{projet} - {id} - {guid}</span></h2>" + |
" " + |
"</div>"; |
} |
private void initialiserGeneralTpl() { |
generalTpl = |
"<div class='{css_corps}'>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_identification}</h2>"+ |
" <span class='{css_label}'>{i18n_sigle} :</span> {sigle}<br />"+ |
" </div>"+ |
"</div>"; |
} |
private void chargerOntologie() { |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Collection) { |
collection = (Collection) nouvelleDonnees; |
afficherDetail(); |
} else if (nouvelleDonnees instanceof ProjetListe) { |
projets = (ProjetListe) nouvelleDonnees; |
} else if (nouvelleDonnees instanceof ValeurListe) { |
ValeurListe ontologieReceptionnee = (ValeurListe) nouvelleDonnees; |
ajouterListeValeursAOntologie(ontologieReceptionnee); |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
private void afficherDetail() { |
if (collection != null) { |
afficherEntete(); |
afficherIdentification(); |
} |
layout(); |
} |
private void afficherEntete() { |
Params enteteParams = new Params(); |
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE); |
enteteParams.set("css_meta", ComposantClass.META); |
enteteParams.set("nom", collection.getNom()); |
enteteParams.set("structure", collection.getStructureNom()); |
enteteParams.set("id", collection.getId()); |
enteteParams.set("guid", collection.getGuid()); |
enteteParams.set("projet", construireTxtProjet(collection.getIdProjet())); |
String eHtml = Format.substitute(enteteTpl, enteteParams); |
entete.getElement().setInnerHTML(eHtml); |
} |
private void afficherIdentification() { |
Params generalParams = new Params(); |
generalParams.set("i18n_titre_identification", i18nC.titreAdministratif()); |
generalParams.set("i18n_acronyme", i18nC.acronyme()); |
String acronyme = construireTxtTruck(collection.getIdAlternatif()); |
generalParams.set("acronyme", acronyme); |
afficherOnglet(generalTpl, generalParams, generalOnglet); |
} |
protected String getNomStructure() { |
String nomStructure = ""; |
if (structure != null) { |
nomStructure = structure.getNom(); |
} else { |
nomStructure = collection.getIdStructure(); |
} |
return nomStructure; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PopupChargement.java |
---|
New file |
0,0 → 1,34 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.i18n.Constantes; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.Text; |
import com.extjs.gxt.ui.client.widget.layout.TableLayout; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.PopupPanel; |
public class PopupChargement extends PopupPanel{ |
public PopupChargement() { |
super(); |
//créer un loader |
String url = "images/ajax-loader.gif"; |
Image imgLoading = new Image(url); |
LayoutContainer cp = new LayoutContainer(); |
cp.setLayout(new TableLayout(2)); |
Constantes constantes = GWT.create(Constantes.class); |
Text tLoad = new Text(constantes.chargement()); |
cp.add(imgLoading); |
cp.add(tLoad); |
add(cp); |
center(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/StructureDetailVue.java |
---|
New file |
0,0 → 1,689 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.i18n.Constantes; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Projet; |
import org.tela_botanica.client.modeles.ProjetListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneListe; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureValorisation; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Html; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.google.gwt.core.client.GWT; |
public class StructureDetailVue extends DetailVue implements Rafraichissable { |
private String enteteTpl = null; |
private String identificationTpl = null; |
private String personnelTpl = null; |
private String tableauPersonnelTpl = null; |
private String lignePersonnelTpl = null; |
private String conservationTpl = null; |
private String traitementConservationTpl = null; |
private String valorisationTpl = null; |
private String typeTraitementConservationTpl = null; |
private String rechercheValorisationTpl = null; |
private Structure structure = null; |
private StructureAPersonneListe personnel = null; |
private StructureValorisation valorisation = null; |
private StructureConservation conservation = null; |
private ContentPanel panneauPrincipal = null; |
private Html entete = null; |
private TabPanel onglets = null; |
private TabItem identificationOnglet = null; |
private TabItem personnelOnglet = null; |
private TabItem conservationOnglet = null; |
private TabItem valorisationOnglet = null; |
public StructureDetailVue(Mediateur mediateurCourant) { |
super(mediateurCourant); |
initialiserTousLesTpl(); |
chargerOntologie(); |
panneauPrincipal = new ContentPanel(); |
panneauPrincipal.setLayout(new FlowLayout()); |
panneauPrincipal.setHeaderVisible(false); |
panneauPrincipal.setBodyBorder(false); |
entete = new Html(); |
entete.setId(ComposantId.ZONE_DETAIL_ENTETE); |
panneauPrincipal.setTopComponent(entete); |
onglets = new TabPanel(); |
onglets.setId(ComposantId.ZONE_DETAIL_CORPS); |
onglets.setHeight("100%"); |
onglets.setBodyBorder(false); |
identificationOnglet = new TabItem(i18nC.structureInfoGeneral()); |
identificationOnglet.setLayout(new AnchorLayout()); |
identificationOnglet.setScrollMode(Scroll.AUTO); |
onglets.add(identificationOnglet); |
personnelOnglet = new TabItem(i18nC.structureInfoPersonnel()); |
personnelOnglet.setLayout(new AnchorLayout()); |
personnelOnglet.setScrollMode(Scroll.AUTO); |
onglets.add(personnelOnglet); |
conservationOnglet = new TabItem(i18nC.structureInfoConservation()); |
conservationOnglet.setLayout(new AnchorLayout()); |
conservationOnglet.setScrollMode(Scroll.AUTO); |
onglets.add(conservationOnglet); |
valorisationOnglet = new TabItem(i18nC.structureInfoValorisation()); |
valorisationOnglet.setLayout(new AnchorLayout()); |
valorisationOnglet.setScrollMode(Scroll.AUTO); |
onglets.add(valorisationOnglet); |
panneauPrincipal.add(onglets); |
add(panneauPrincipal); |
} |
private void chargerOntologie() { |
mediateur.obtenirListeValeurEtRafraichir(this, "stpr"); |
mediateur.obtenirListeValeurEtRafraichir(this, "stpu"); |
mediateur.obtenirListeValeurEtRafraichir(this, "statut"); |
mediateur.obtenirListeValeurEtRafraichir(this, "fonction"); |
mediateur.obtenirListeValeurEtRafraichir(this, "pays"); |
mediateur.obtenirListeValeurEtRafraichir(this, "localStockage"); |
mediateur.obtenirListeValeurEtRafraichir(this, "meubleStockage"); |
mediateur.obtenirListeValeurEtRafraichir(this, "parametreStockage"); |
mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection"); |
mediateur.obtenirListeValeurEtRafraichir(this, "onep"); |
mediateur.obtenirListeValeurEtRafraichir(this, "opRestau"); |
mediateur.obtenirListeValeurEtRafraichir(this, "autreMateriel"); |
mediateur.obtenirListeValeurEtRafraichir(this, "poisonTraitement"); |
mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement"); |
mediateur.obtenirListeValeurEtRafraichir(this, "actionValorisation"); |
mediateur.obtenirListeValeurEtRafraichir(this, "continentEtFr"); |
mediateur.obtenirListeValeurEtRafraichir(this, "typeRecherche"); |
} |
private void afficherDetailInstitution() { |
if (structure != null) { |
personnel = structure.getPersonnel(); |
valorisation = structure.getValorisation(); |
conservation = structure.getConservation(); |
afficherEntete(); |
afficherIdentification(); |
if (personnel != null) { |
afficherPersonnel(); |
} |
if (conservation != null) { |
afficherConservation(); |
} |
if (valorisation != null) { |
afficherValorisation(); |
} |
} |
layout(); |
} |
private void afficherEntete() { |
Params enteteParams = new Params(); |
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE); |
enteteParams.set("css_meta", ComposantClass.META); |
enteteParams.set("nom", structure.getNom()); |
enteteParams.set("ville", structure.getVille()); |
enteteParams.set("id", structure.getId()); |
enteteParams.set("guid", structure.getGuid()); |
enteteParams.set("projet", construireTxtProjet(structure.getIdProjet())); |
String eHtml = Format.substitute(enteteTpl, enteteParams); |
entete.getElement().setInnerHTML(eHtml); |
} |
private void afficherIdentification() { |
Params identificationParams = new Params(); |
identificationParams.set("i18n_titre_administratif", i18nC.titreAdministratif()); |
identificationParams.set("i18n_acronyme", i18nC.acronyme()); |
identificationParams.set("i18n_statut", i18nC.statut()); |
identificationParams.set("i18n_date_fondation", mediateur.i18nC.dateFondation()); |
identificationParams.set("i18n_nbre_personnel", mediateur.i18nC.nbrePersonnel()); |
identificationParams.set("i18n_titre_description", mediateur.i18nC.description()); |
identificationParams.set("i18n_description", mediateur.i18nC.description()); |
identificationParams.set("i18n_titre_adresse", mediateur.i18nC.adresse()); |
identificationParams.set("i18n_adresse", mediateur.i18nC.adresse()); |
identificationParams.set("i18n_cp", mediateur.i18nC.codePostal()); |
identificationParams.set("i18n_ville", mediateur.i18nC.ville()); |
identificationParams.set("i18n_region", mediateur.i18nC.region()); |
identificationParams.set("i18n_pays", mediateur.i18nC.pays()); |
identificationParams.set("i18n_titre_communication", mediateur.i18nC.titreCommunication()); |
identificationParams.set("i18n_tel", mediateur.i18nC.telephone()); |
identificationParams.set("i18n_fax", mediateur.i18nC.fax()); |
identificationParams.set("i18n_courriel", mediateur.i18nC.courriel()); |
identificationParams.set("i18n_acces", mediateur.i18nC.acces()); |
identificationParams.set("i18n_web", mediateur.i18nC.siteWeb()); |
String acronyme = construireTxtTruck(structure.getIdAlternatif()); |
String typePrive = construireTxtListeOntologie(structure.getTypePrive()); |
String typePublic = construireTxtListeOntologie(structure.getTypePublic()); |
String pays = construireTxtListeOntologie(structure.getPays()); |
String web = construireTxtTruck(structure.getUrl()); |
identificationParams.set("acronyme", acronyme); |
identificationParams.set("statut", typePrive+typePublic); |
identificationParams.set("date_fondation", structure.getDateFondationFormatLong()); |
identificationParams.set("nbre_personnel", structure.getNbrePersonne()); |
identificationParams.set("description", structure.getDescription()); |
identificationParams.set("adresse", structure.getAdresse()); |
identificationParams.set("cp", structure.getCodePostal()); |
identificationParams.set("ville", structure.getVille()); |
identificationParams.set("region", structure.getRegion()); |
identificationParams.set("pays", pays); |
identificationParams.set("tel", structure.getTelephone()); |
identificationParams.set("fax", structure.getFax()); |
identificationParams.set("courriel", structure.getCourriel()); |
identificationParams.set("acces", structure.getConditionAcces()); |
identificationParams.set("web", web); |
afficherOnglet(identificationTpl, identificationParams, identificationOnglet); |
} |
private void afficherPersonnel() { |
String tableauPersonnelHtml = ""; |
if (personnel.size() > 0) { |
tableauPersonnelHtml = construireTableauDuPersonnel(); |
} |
Params personnelParams = new Params(); |
personnelParams.set("i18n_titre_personnel", i18nC.titrePersonnel()); |
personnelParams.set("i18n_nbre_personnel_collection", i18nC.nbrePersonnelCollection()); |
personnelParams.set("nbre_personnel_collection", personnel.size()); |
personnelParams.set("tableau_personnel", tableauPersonnelHtml); |
afficherOnglet(personnelTpl, personnelParams, personnelOnglet); |
} |
private String construireTableauDuPersonnel() { |
Params contenuParams = new Params(); |
contenuParams.set("i18n_titre_membre", i18nC.titreMembre()); |
contenuParams.set("i18n_fonction", i18nC.fonction()); |
contenuParams.set("i18n_prenom", i18nC.prenom()); |
contenuParams.set("i18n_nom", i18nC.nom()); |
contenuParams.set("i18n_tel", i18nC.telephoneFixe()); |
contenuParams.set("i18n_fax", i18nC.fax()); |
contenuParams.set("i18n_courriel", i18nC.courrielPrincipal()); |
contenuParams.set("i18n_statut", i18nC.statut()); |
contenuParams.set("i18n_tps_w", i18nC.tpsTravail()); |
contenuParams.set("i18n_specialite", i18nC.specialite()); |
contenuParams.set("i18n_contact", i18nC.boolContact()); |
String lignesPersonnel = ""; |
Iterator<String> it = personnel.keySet().iterator(); |
while (it.hasNext()) { |
StructureAPersonne personne = personnel.get(it.next()); |
Params ligneParams = new Params(); |
String fonction = construireTxtListeOntologie(personne.getFonction()); |
String statut = construireTxtListeOntologie(personne.getStatut()); |
String contact = formaterOuiNon(personne.getContact()); |
ligneParams.set("fonction", fonction); |
ligneParams.set("prenom", personne.getPrenom()); |
ligneParams.set("nom", personne.getNom()); |
ligneParams.set("tel", personne.getTelephone()); |
ligneParams.set("fax", personne.getFax()); |
ligneParams.set("courriel", personne.getCourriel()); |
ligneParams.set("statut", statut); |
ligneParams.set("tps_w", personne.getBotaTravailHebdoTps()); |
ligneParams.set("specialite", personne.afficherSpecialite()); |
ligneParams.set("contact", contact); |
lignesPersonnel += Format.substitute(lignePersonnelTpl, ligneParams); |
} |
contenuParams.set("lignes", lignesPersonnel); |
String cHtml = Format.substitute(tableauPersonnelTpl, contenuParams); |
return cHtml; |
} |
private void afficherConservation() { |
Params conservationParams = new Params(); |
conservationParams.set("i18n_titre_conservation_personnel", i18nC.titreConservationPersonnel()); |
conservationParams.set("i18n_formation", i18nC.formation()); |
conservationParams.set("i18n_formation_interet", i18nC.formationInteret()); |
conservationParams.set("i18n_titre_local", i18nC.titreLocal()); |
conservationParams.set("i18n_local_specifique", i18nC.localSpecifique()); |
conservationParams.set("i18n_meuble_specifique", i18nC.meubleSpecifique()); |
conservationParams.set("i18n_local_parametre", i18nC.localParametre()); |
conservationParams.set("i18n_conservation_en_commun", i18nC.conservationEnCommun()); |
conservationParams.set("i18n_acces_controle", i18nC.accesControle()); |
conservationParams.set("i18n_titre_operation", i18nC.titreOperation()); |
conservationParams.set("i18n_restauration", i18nC.restauration()); |
conservationParams.set("i18n_materiel_conservation", i18nC.materielConservation()); |
conservationParams.set("i18n_traitement", i18nC.traitement()); |
conservationParams.set("i18n_titre_acquisition", i18nC.titreAcquisition()); |
conservationParams.set("i18n_acquisition_collection", i18nC.acquisitionCollection()); |
conservationParams.set("i18n_acquisition_echantillon", i18nC.acquisitionEchantillon()); |
conservationParams.set("formation", formaterOuiNon(conservation.getFormation())); |
conservationParams.set("formation_info", formaterSautDeLigne(conservation.getFormationInfo())); |
conservationParams.set("formation_interet", formaterOuiNon(conservation.getFormationInteret())); |
conservationParams.set("meuble_specifique", conservation.getStockageMeuble()); |
String chaineAAnalyser = conservation.getStockageLocal(); |
String chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("local_specifique", chaineAAfficher); |
chaineAAnalyser = conservation.getStockageMeuble(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("meuble_specifique", chaineAAfficher); |
chaineAAnalyser = conservation.getStockageParametre(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("local_parametre", chaineAAfficher); |
conservationParams.set("conservation_en_commun", formaterOuiNon(conservation.getCollectionCommune())); |
chaineAAnalyser = conservation.getCollectionAutre(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("collection_autre", formaterParenthese(chaineAAfficher)); |
conservationParams.set("acces_controle", formaterOuiNon(conservation.getAccesControle())); |
conservationParams.set("restauration", formaterOuiNon(conservation.getRestauration())); |
chaineAAnalyser = conservation.getRestaurationOperation(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("restauration_operation", formaterParenthese(chaineAAfficher)); |
chaineAAnalyser = conservation.getMaterielConservation(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("materiel_conservation", chaineAAfficher); |
chaineAAnalyser = conservation.getMaterielAutre(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("materiel_autre", formaterParenthese(chaineAAfficher)); |
conservationParams.set("traitement", formaterOuiNon(conservation.getTraitement())); |
chaineAAnalyser = conservation.getTraitements(); |
chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser); |
conservationParams.set("traitements", formaterParenthese(chaineAAfficher)); |
conservationParams.set("acquisition_collection", formaterOuiNon(conservation.getAcquisitionCollection())); |
conservationParams.set("acquisition_echantillon", formaterOuiNon(conservation.getAcquisitionEchantillon())); |
conservationParams.set("acquisition_traitement_info", construireTraitement()); |
afficherOnglet(conservationTpl, conservationParams, conservationOnglet); |
} |
private String construireTraitement() { |
String cHtml = ""; |
String echantillon = conservation.getAcquisitionEchantillon(); |
if (echantillon.equals("1")) { |
Params traitementConservationParams = new Params(); |
traitementConservationParams.set("i18n_acquisition_traitement", i18nC.acquisitionTraitement()); |
traitementConservationParams.set("acquisition_traitement", formaterOuiNon(conservation.getAcquisitionTraitement())); |
traitementConservationParams.set("acquisition_traitement_type_info", construireTraitementType()); |
cHtml = Format.substitute(traitementConservationTpl, traitementConservationParams); |
} |
return cHtml; |
} |
private String construireTraitementType() { |
String cHtml = ""; |
String traitement = conservation.getAcquisitionTraitement(); |
if (traitement.equals("1")) { |
Params typeTraitementParams = new Params(); |
typeTraitementParams.set("i18n_acquisition_traitement_insecte", i18nC.acquisitionTraitementInsecte()); |
typeTraitementParams.set("i18n_acquisition_traitement_poison", i18nC.acquisitionTraitementPoison()); |
String acquisitionTraitementInsecte = construireTxtListeOntologie(conservation.getAcquisitionTraitementInsecte()); |
typeTraitementParams.set("acquisition_traitement_insecte", acquisitionTraitementInsecte); |
String acquisitionTraitementPoison = construireTxtListeOntologie(conservation.getAcquisitionTraitementPoison()); |
typeTraitementParams.set("acquisition_traitement_poison", acquisitionTraitementPoison); |
cHtml = Format.substitute(typeTraitementConservationTpl, typeTraitementParams); |
} |
return cHtml; |
} |
private void afficherValorisation() { |
Params valorisationParams = new Params(); |
valorisationParams.set("i18n_titre_action_valorisation", i18nC.titreActionValorisation()); |
valorisationParams.set("i18n_action", i18nC.action()); |
valorisationParams.set("i18n_action_publication", i18nC.actionPublication()); |
valorisationParams.set("i18n_collection_autre", i18nC.collectionAutre()); |
valorisationParams.set("i18n_action_future", i18nC.actionFuture()); |
valorisationParams.set("action", formaterOuiNon(valorisation.getAction())); |
String actionInfo = construireTxtListeOntologie(valorisation.getActionInfo()); |
valorisationParams.set("action_info", formaterParenthese(actionInfo)); |
valorisationParams.set("action_publication", valorisation.getPublication()); |
String collectionAutre = construireTxtListeOntologie(valorisation.getCollectionAutre()); |
valorisationParams.set("collection_autre", collectionAutre); |
valorisationParams.set("action_future", formaterOuiNon(valorisation.getActionFuture())); |
valorisationParams.set("action_future_info", formaterParenthese(valorisation.getActionFutureInfo())); |
valorisationParams.set("i18n_titre_recherche_scientifique", i18nC.titreRechercherScientifique()); |
valorisationParams.set("i18n_recherche", i18nC.recherche()); |
valorisationParams.set("recherche", formaterOuiNon(valorisation.getRecherche())); |
valorisationParams.set("recherche_info", construireRecherche()); |
valorisationParams.set("i18n_titre_acces_usage", i18nC.titreAccesUsage()); |
valorisationParams.set("i18n_acces", i18nC.acces()); |
valorisationParams.set("i18n_visite", i18nC.visite()); |
valorisationParams.set("acces", formaterOuiNon(valorisation.getAccesSansMotif())); |
valorisationParams.set("acces_info", formaterParenthese(valorisation.getAccesSansMotifInfo())); |
valorisationParams.set("visite", formaterOuiNon(valorisation.getVisiteAvecMotif())); |
valorisationParams.set("visite_info", formaterParenthese(valorisation.getVisiteAvecMotifInfo())); |
afficherOnglet(valorisationTpl, valorisationParams, valorisationOnglet); |
} |
private String construireRecherche() { |
String cHtml = ""; |
String recherche = valorisation.getRecherche(); |
if (recherche.equals("1")) { |
Params rechercheParams = new Params(); |
rechercheParams.set("i18n_recherche_provenance", i18nC.rechercheProvenance()); |
rechercheParams.set("i18n_recherche_type", i18nC.rechercheType()); |
String rechercheProvenance = construireTxtListeOntologie(valorisation.getRechercheProvenance()); |
rechercheParams.set("recherche_provenance", rechercheProvenance); |
String rechercheType = construireTxtListeOntologie(valorisation.getRechercheType()); |
rechercheParams.set("recherche_type", rechercheType); |
cHtml = Format.substitute(rechercheValorisationTpl, rechercheParams); |
} |
return cHtml; |
} |
private void initialiserTousLesTpl() { |
initialiserEnteteHtmlTpl(); |
initialiserIdentificationTpl(); |
initialiserPersonnelTpl(); |
initialiserTableauPersonnelTpl(); |
initialiserLignePersonnelTpl(); |
initialiserConservationTpl(); |
initialiserTraitementConservationTpl(); |
initialiserTypeTraitementConservationTpl(); |
initialiserValorisationTpl(); |
initialiserRechercheValorisationTpl(); |
} |
private void initialiserEnteteHtmlTpl() { |
enteteTpl = |
"<div id='{css_id}'>"+ |
" <h1>{nom}</h1>"+ |
" <h2>{ville}<span class='{css_meta}'>{projet} - {id} - {guid}</span></h2>" + |
" " + |
"</div>"; |
} |
private void initialiserIdentificationTpl() { |
identificationTpl = |
"<div class='{css_corps}'>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_administratif}</h2>"+ |
" <span class='{css_label}'>{i18n_acronyme} :</span> {acronyme}<br />"+ |
" <span class='{css_label}'>{i18n_acces} :</span> {acces}<br />"+ |
" <span class='{css_label}'>{i18n_statut} :</span> {statut}<br />"+ |
" <span class='{css_label}'>{i18n_date_fondation} :</span> {date_fondation}<br />"+ |
" <span class='{css_label}'>{i18n_nbre_personnel} :</span> {nbre_personnel}<br />"+ |
" </div>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_description}</h2>"+ |
" {description}"+ |
" </div>"+ |
" <hr class='{css_clear}'/>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_adresse}</h2>"+ |
" <span class='{css_label}'>{i18n_adresse} :</span> {adresse}<br />" + |
" <span class='{css_label}'>{i18n_cp} :</span> {cp}<br />" + |
" <span class='{css_label}'>{i18n_ville} :</span> {ville}<br />" + |
" <span class='{css_label}'>{i18n_region} :</span> {region}<br />" + |
" <span class='{css_label}'>{i18n_pays} :</span> {pays}<br />" + |
" </div>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_communication}</h2>"+ |
" <span class='{css_label}'>{i18n_tel} :</span> {tel}<br />"+ |
" <span class='{css_label}'>{i18n_fax} :</span> {fax}<br />"+ |
" <span class='{css_label}'>{i18n_courriel} :</span> {courriel}<br />"+ |
" <span class='{css_label}'>{i18n_web} :</span> {web}<br />"+ |
" </div>"+ |
"</div>"; |
} |
private void initialiserPersonnelTpl() { |
personnelTpl = |
"<div class='{css_corps}'>"+ |
" <h2>{i18n_titre_personnel}</h2>"+ |
" <p><span class='{css_label}'>{i18n_nbre_personnel_collection} :</span> {nbre_personnel_collection}</p>"+ |
" {tableau_personnel}"+ |
"</div>"; |
} |
private void initialiserTableauPersonnelTpl() { |
tableauPersonnelTpl = |
"<h3>{i18n_titre_membre}</h3>"+ |
"<table>"+ |
" <thead>"+ |
" <tr>" + |
" <th>{i18n_fonction}</th>" + |
" <th>{i18n_prenom}</th>" + |
" <th>{i18n_nom}</th>" + |
" <th>{i18n_tel}</th>" + |
" <th>{i18n_fax}</th>" + |
" <th>{i18n_courriel}</th>" + |
" <th>{i18n_statut}</th>" + |
" <th>{i18n_tps_w}</th>" + |
" <th>{i18n_specialite}</th>" + |
" <th>{i18n_contact}</th>" + |
" </tr>"+ |
" </thead>"+ |
" <tbody>"+ |
" {lignes}"+ |
" </tbody>"+ |
"</table>"; |
} |
private void initialiserLignePersonnelTpl() { |
lignePersonnelTpl = |
"<tr>"+ |
" <td>{fonction}</td>"+ |
" <td>{prenom}</td>"+ |
" <td>{nom}</td>"+ |
" <td>{tel}</td>" + |
" <td>{fax}</td>" + |
" <td>{courriel}</td>" + |
" <td>{statut}</td>" + |
" <td>{tps_w}</td>" + |
" <td>{specialite}</td>" + |
" <td>{contact}</td>" + |
"</tr>"; |
} |
private void initialiserConservationTpl() { |
conservationTpl = |
"<div class='{css_corps}'>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_conservation_personnel}</h2>"+ |
" <span class='{css_label}'>{i18n_formation} :</span> {formation}<br />"+ |
" {formation_info}<br />"+ |
" <span class='{css_label}'>{i18n_formation_interet} :</span> {formation_interet}<br />"+ |
" </div>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_local}</h2>"+ |
" <span class='{css_label}'>{i18n_local_specifique} :</span> {local_specifique}<br />"+ |
" <span class='{css_label}'>{i18n_meuble_specifique} :</span> {meuble_specifique}<br />"+ |
" <span class='{css_label}'>{i18n_local_parametre} :</span> {local_parametre}<br />"+ |
" <span class='{css_label}'>{i18n_conservation_en_commun} :</span> {conservation_en_commun} {collection_autre}<br />"+ |
" <span class='{css_label}'>{i18n_acces_controle} :</span> {acces_controle}<br />"+ |
" </div>"+ |
" <hr class='{css_clear}'/>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_operation}</h2>"+ |
" <span class='{css_label}'>{i18n_restauration} :</span> {restauration} {restauration_operation}<br />"+ |
" <span class='{css_label}'>{i18n_materiel_conservation} :</span> {materiel_conservation} {materiel_autre}<br />"+ |
" <span class='{css_label}'>{i18n_traitement} :</span> {traitement} {traitements}<br />"+ |
" </div>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_acquisition}</h2>"+ |
" <span class='{css_label}'>{i18n_acquisition_collection} :</span> {acquisition_collection}<br />"+ |
" <span class='{css_label}'>{i18n_acquisition_echantillon} :</span> {acquisition_echantillon}<br />"+ |
" {acquisition_traitement_info}" + |
" </div>"+ |
"</div>"; |
} |
private void initialiserTraitementConservationTpl() { |
traitementConservationTpl = |
"<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement} :</span> {acquisition_traitement}<br />"+ |
" <div class='{css_indentation}'>"+ |
" {acquisition_traitement_type_info}"+ |
" </div>"; |
} |
private void initialiserTypeTraitementConservationTpl() { |
typeTraitementConservationTpl = |
"<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement_insecte} :</span> {acquisition_traitement_insecte}<br />"+ |
"<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement_poison} :</span> {acquisition_traitement_poison}<br />"; |
} |
private void initialiserValorisationTpl() { |
valorisationTpl = |
"<div class='{css_corps}'>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_action_valorisation}</h2>"+ |
" <span class='{css_label}'>{i18n_action} :</span> {action} {action_info}<br />"+ |
" <span class='{css_label}'>{i18n_action_publication} :</span> {action_publication}<br />"+ |
" <span class='{css_label}'>{i18n_collection_autre} :</span> {collection_autre}<br />"+ |
" <span class='{css_label}'>{i18n_action_future} :</span> {action_future} {action_future_info}<br />"+ |
" </div>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_recherche_scientifique}</h2>"+ |
" <span class='{css_label}'>{i18n_recherche} :</span> {recherche}<br />"+ |
" {recherche_info}"+ |
" </div>"+ |
" <hr class='{css_clear}'/>"+ |
" <div class='{css_fieldset}'>"+ |
" <h2>{i18n_titre_acces_usage}</h2>"+ |
" <span class='{css_label}'>{i18n_visite} :</span> {visite} {visite_info}<br />"+ |
" <span class='{css_label}'>{i18n_acces} :</span> {acces} {acces_info}<br />"+ |
" </div>"+ |
"</div>"; |
} |
private void initialiserRechercheValorisationTpl() { |
rechercheValorisationTpl = |
"<span class='{css_indentation} {css_label}'>{i18n_recherche_provenance} :</span> {recherche_provenance}<br />"+ |
"<span class='{css_indentation} {css_label}'>{i18n_recherche_type} :</span> {recherche_type}<br />"; |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Structure) { |
structure = (Structure) nouvelleDonnees; |
afficherDetailInstitution(); |
} else if (nouvelleDonnees instanceof ProjetListe) { |
projets = (ProjetListe) nouvelleDonnees; |
} else if (nouvelleDonnees instanceof ValeurListe) { |
ValeurListe ontologieReceptionnee = (ValeurListe) nouvelleDonnees; |
ajouterListeValeursAOntologie(ontologieReceptionnee); |
} else if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("liste_structure_a_personne")) { |
allouerPersonnelAStructure((StructureAPersonneListe) info.getDonnee(0)); |
afficherDetailInstitution(); |
} |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
protected void allouerPersonnelAStructure(StructureAPersonneListe personnel) { |
structure.setPersonnel(personnel); |
} |
protected String construireTxtProjet(String idProjet) { |
String chaineARetourner = idProjet; |
if (projets != null) { |
Projet projet = projets.get(idProjet); |
String nomDuProjet = projet.getNom(); |
if (!nomDuProjet.equals("")) { |
chaineARetourner = nomDuProjet; |
} |
} |
return chaineARetourner; |
} |
protected String construireTxtListeOntologie(String chaineAAnalyser) { |
ArrayList<String> termes = new ArrayList<String>(); |
ArrayList<String> autres = new ArrayList<String>(); |
if ((chaineAAnalyser != null) && (!chaineAAnalyser.trim().equals(""))) { |
String[] valeurs = chaineAAnalyser.split(";;"); |
int nbreValeurs = valeurs.length; |
if (nbreValeurs > 0) { |
for (int i = 0; i < nbreValeurs; i++) { |
String id = valeurs[i]; |
if (id.contains("AUTRE##")) { |
String txt = id.replaceFirst("^AUTRE##", ""); |
if (!txt.equals("")) { |
autres.add(txt); |
} |
} else if (id.matches("^[0-9]+$")) { |
if (ontologie != null) { |
Valeur valeur = ontologie.get(id); |
if (valeur != null) { |
String termeOntologie = valeur.getNom(); |
termes.add(termeOntologie); |
} |
} |
} |
} |
} |
} |
String chaineTermes = formaterTableauDeTxt(termes); |
String chaineAutres = formaterTableauDeTxt(autres); |
String chaineARetourner = chaineTermes+formaterAutre(chaineAutres); |
return chaineARetourner; |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/StatutVue.java |
---|
New file |
0,0 → 1,28 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.ComposantId; |
import com.extjs.gxt.ui.client.Style.Orientation; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.StatusBar; |
import com.extjs.gxt.ui.client.widget.layout.RowLayout; |
public class StatutVue extends LayoutContainer { |
private StatusBar barreStatut = null; |
public StatutVue() { |
setLayout(new RowLayout(Orientation.HORIZONTAL)); |
setId(ComposantId.PANNEAU_STATUT); |
barreStatut = new StatusBar(); |
add(barreStatut); |
} |
public void showBusy(String message) { |
barreStatut.showBusy(message); |
} |
public void clear() { |
barreStatut.clear(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/EnteteVue.java |
---|
New file |
0,0 → 1,161 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
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.ComponentEvent; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.button.ButtonBar; |
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.Menu; |
import com.extjs.gxt.ui.client.widget.menu.MenuItem; |
import com.google.gwt.core.client.GWT; |
public class EnteteVue extends LayoutContainer implements Rafraichissable { |
private Mediateur mediateur = null; |
private ButtonBar barreBoutons = null; |
private Button identificationBouton = null; |
private String identificationInfoTpl = null; |
private HtmlContainer identificationInfoHtml = null; |
public EnteteVue(Mediateur mediateurCourant) { |
mediateur = mediateurCourant; |
setLayout(new RowLayout(Orientation.HORIZONTAL)); |
setId(ComposantId.PANNEAU_ENTETE); |
// TODO : ajouter la gestion de l'identification |
HtmlContainer html = new HtmlContainer(); |
StringBuffer sb = new StringBuffer(); |
sb.append(" <div id='"+ComposantId.DIV_TITRE+"'>Collections en Ligne Demo</div>"); |
html.setHtml(sb.toString()); |
html.setEnableState(false); |
identificationInfoHtml = new HtmlContainer(); |
identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>"; |
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme"))); |
identificationInfoHtml.setEnableState(false); |
// Création des écouteurs |
SelectionListener<ComponentEvent> boutonEcouteur = new SelectionListener<ComponentEvent>() { |
public void componentSelected(ComponentEvent ce) { |
Button btn = (Button) ce.component; |
String message = Format.substitute("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_CONNEXION)) { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirIdentification(); |
} else if (btn.getId().equals(ComposantId.BTN_DECONNEXION)) { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).deconnecterUtilisateur(); |
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
message = Format.substitute("Déconnexion de l'utilisateur «{0}» en cours...", utilisateurCourant.getNomComplet()); |
} else if (btn.getId().equals(ComposantId.BTN_APPLIS)) { |
btn.getMenu().show(btn); |
message = ""; |
} |
if (!message.equals("")) { |
Info.display(mediateur.i18nC.chargement(), message); |
} |
} |
}; |
barreBoutons = new ButtonBar(); |
barreBoutons.setButtonAlign(Style.HorizontalAlignment.RIGHT); |
identificationBouton = new Button("Identifiez vous...", boutonEcouteur); |
identificationBouton.setId(ComposantId.BTN_CONNEXION); |
barreBoutons.add(identificationBouton); |
Button parametresBouton = new Button("Paramêtres", boutonEcouteur); |
parametresBouton.setId(ComposantId.BTN_PARAMETRES); |
parametresBouton.setIconStyle(ComposantClass.ICONE_PARAMETRE); |
barreBoutons.add(parametresBouton); |
Button aideBouton = new Button("Aide", boutonEcouteur); |
aideBouton.setId(ComposantId.BTN_AIDE); |
aideBouton.setIconStyle(ComposantClass.ICONE_AIDE); |
barreBoutons.add(aideBouton); |
SplitButton applisBouton = new SplitButton("Changez d'application..."); |
applisBouton.setId(ComposantId.BTN_APPLIS); |
applisBouton.addSelectionListener(boutonEcouteur); |
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(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL); |
} |
}); |
menuCel.setId(ComposantId.MENU_CEL); |
menuCel.setIconStyle(ComposantClass.ICONE_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(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL); |
} |
}); |
menuBel.setId(ComposantId.MENU_BEL); |
menuBel.setIconStyle(ComposantClass.ICONE_BEL); |
menu.add(menuBel); |
applisBouton.setMenu(menu); |
applisBouton.setIconStyle(ComposantClass.ICONE_BASCULE); |
barreBoutons.add(applisBouton); |
add(html, new RowData(.3, 1)); |
add(identificationInfoHtml, new RowData(.3, 1)); |
add(barreBoutons, new RowData(.4, 1)); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("maj_utilisateur")) { |
Utilisateur utilisateur = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)); |
if (utilisateur.isIdentifie() == true) { |
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getNomComplet()))); |
identificationBouton.setText("Deconnexion"); |
identificationBouton.setIconStyle(ComposantClass.ICONE_DECONNEXION); |
identificationBouton.setId(ComposantId.BTN_DECONNEXION); |
} else { |
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme"))); |
identificationBouton.setText("Identifiez vous..."); |
identificationBouton.setIconStyle(ComposantClass.ICONE_CONNEXION); |
identificationBouton.setId(ComposantId.BTN_CONNEXION); |
} |
} |
} else { |
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null); |
} |
layout(); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/vues/PersonneVue.java |
---|
New file |
0,0 → 1,59 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneListe; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; |
import com.google.gwt.core.client.GWT; |
public class PersonneVue extends LayoutContainer implements Rafraichissable { |
private PersonneListeVue panneauPersonneListe; |
private PersonneDetailVue panneauPersonneDetail; |
public PersonneVue() { |
BorderLayout layout = new BorderLayout(); |
layout.setEnableState(false); |
setLayout(layout); |
panneauPersonneListe = new PersonneListeVue(); |
this.add(panneauPersonneListe, new BorderLayoutData(LayoutRegion.CENTER)); |
panneauPersonneDetail = new PersonneDetailVue(); |
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000); |
southData.setSplit(true); |
southData.setMargins(new Margins(5, 0, 0, 0)); |
this.add(panneauPersonneDetail, southData); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Personne) { |
panneauPersonneDetail.rafraichir((Personne) nouvelleDonnees); |
} else if (nouvelleDonnees instanceof PersonneListe) { |
panneauPersonneListe.rafraichir((PersonneListe) nouvelleDonnees); |
} else if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
// Affichage des éventuels messages de déboguage ou d'alerte |
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) { |
GWT.log(info.getMessages().toString(), null); |
} |
// Traitement en fonction des types d'information |
if (info.getType().equals("liste_personne")) { |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListePersonnes((PersonneListe) info.getDonnee(0)); |
Info.display("Chargement d'une liste de personnes", ""); |
} |
} else { |
GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null); |
} |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/interfaces/Rafraichissable.java |
---|
New file |
0,0 → 1,25 |
package org.tela_botanica.client.interfaces; |
/** |
* Toutes les classes qui recoivent des données de manières asynchrones ou |
* imprévisible implémentent cette interface. Elle permet de faire transiter le |
* rafraichissable jusqu'au DAO et d'appeler sa méthode rafraichir un fois les |
* données reçues, tout celà en préservant bien la séparation des rôles car les |
* classes qui font transiter le rafraichissable ne connaissent que cette |
* interface et pas le reste de l'objet |
* |
* @author aurelien |
* |
*/ |
public interface Rafraichissable { |
/** |
* Méthode de mise à jour d'un objet |
* |
* @param nouvelleDonnees |
* Un objet de n'importe quel type (programmation générique) qui |
* contient les données de mise à jour |
*/ |
public void rafraichir(Object nouvelleDonnees); |
} |
/branches/v0.1-dora/src/org/tela_botanica/client/Modele.java |
---|
New file |
0,0 → 1,225 |
package org.tela_botanica.client; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Collection; |
import org.tela_botanica.client.modeles.CollectionAsyncDao; |
import org.tela_botanica.client.modeles.Personne; |
import org.tela_botanica.client.modeles.PersonneAsyncDao; |
import org.tela_botanica.client.modeles.ProjetAsyncDao; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.PublicationAsyncDao; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneAsyncDao; |
import org.tela_botanica.client.modeles.StructureAsyncDao; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureValorisation; |
import org.tela_botanica.client.modeles.Utilisateur; |
import org.tela_botanica.client.modeles.UtilisateurAsyncDao; |
import org.tela_botanica.client.modeles.ValeurListeAsyncDao; |
import org.tela_botanica.client.vues.ContenuVue; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
// TODO : le transformer en SINGLETON |
public class Modele { |
public Modele() { |
Registry.register(RegistreId.MODELE, this); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES VALEURS ET LISTES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeValeurs(Rafraichissable vue, Integer id) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.obtenirListe(id); |
} |
public void obtenirListeRegion(Rafraichissable vue, Integer id, String region) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.selectionner("abv", id, null, region); |
} |
public void obtenirValeur(Rafraichissable vue, String type, Integer id, String identifiant) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.selectionner(type, id, null, identifiant); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES UTILISATEURS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void connecterUtilisateur(Rafraichissable vue, String login, String mdp) { |
Utilisateur utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
utilisateur.setLogin(login); |
utilisateur.setMotDePasse(mdp); |
UtilisateurAsyncDao uDao = new UtilisateurAsyncDao(vue); |
uDao.connecterUtilisateur(); |
} |
public void deconnecterUtilisateur(Rafraichissable vue) { |
UtilisateurAsyncDao uDao = new UtilisateurAsyncDao(vue); |
uDao.deconnecterUtilisateur(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PROJETS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void selectionnerProjets(Rafraichissable vue) { |
ProjetAsyncDao projetsDao = new ProjetAsyncDao(vue); |
projetsDao.selectionner(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES STRUCTURES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeStructures(Rafraichissable vueARafraichir, String projetId) { |
StructureAsyncDao sDao = new StructureAsyncDao(); |
sDao.selectionner(vueARafraichir, projetId, ""); |
} |
public void selectionnerStructure(Rafraichissable vueARafraichir, String projetId, String structureId) { |
// Gestion des données des tables coel_structure, coel_structure_conservation et coel_structure_valorisation |
StructureAsyncDao sDao = new StructureAsyncDao(); |
sDao.selectionner(vueARafraichir, projetId, structureId); |
} |
/** Lance la creation d'une Structure |
* @param vueARafraichir la vue demandant a être rafraichie |
* @param structure les données de la structure |
*/ |
public void ajouterStructure(Rafraichissable vueARafraichir, String idUtilisateur, Structure structure, StructureConservation conservation, StructureValorisation valorisation) { |
StructureAsyncDao structureDao = new StructureAsyncDao(); |
structureDao.ajouter(vueARafraichir, idUtilisateur, structure, conservation, valorisation); |
} |
public void supprimerStructure(Rafraichissable vueARafraichir, String idUtilisateur, String idStr) { |
StructureAsyncDao structureDao = new StructureAsyncDao(); |
structureDao.supprimer(vueARafraichir, idUtilisateur, idStr); |
} |
public void modifierStructure(Rafraichissable vueARafraichir, String utilisateurId, String structureId, Structure structure, StructureConservation conservation, StructureValorisation valorisation) { |
StructureAsyncDao structureDao = new StructureAsyncDao(); |
structureDao.modifier(vueARafraichir, utilisateurId, structureId, structure, conservation, valorisation); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de la relation STRUCTURE A PERSONNE |
public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String idUtilisateur, String projetId, String structureId, String roleId) { |
// Gestion des données de la table coel_structure_a_personne |
if (structureId != null && roleId != null) { |
StructureAPersonneAsyncDao sapDao = new StructureAPersonneAsyncDao(); |
sapDao.selectionner(vueARafraichir, idUtilisateur, structureId, roleId); |
} |
} |
public void modifierStructureAPersonne(Rafraichissable vueARafraichir, String utilisateurId, StructureAPersonne personnel) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.modifier(vueARafraichir, utilisateurId, personnel); |
} |
public void ajouterStructureAPersonne(Rafraichissable vueARafraichir, String utilisateurId, String structureId, StructureAPersonne personnel) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.ajouter(vueARafraichir, utilisateurId, structureId, personnel); |
} |
public void supprimerStructureAPersonne(Rafraichissable vueARafraichir, String utilisateurId, String personnelId) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.supprimer(vueARafraichir, utilisateurId, personnelId); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES COLLECTIONS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void selectionnerCollection(Rafraichissable vueARafraichir, String projetId, String collectionId) { |
CollectionAsyncDao cDao = new CollectionAsyncDao(); |
cDao.selectionner(vueARafraichir, projetId, collectionId); |
} |
public void ajouterCollection(Rafraichissable vueARafraichir, |
String utilisateurId, Collection collection) { |
// TODO Auto-generated method stub |
} |
public void modifierCollection(Rafraichissable vueARafraichir, |
String utilisateurId, Collection collection) { |
// TODO Auto-generated method stub |
} |
public void supprimerCollection(Rafraichissable vueARafraichir, |
String utilisateurId, String identifiantsCollectionSepareParVirgule) { |
// TODO Auto-generated method stub |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PERSONNES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void selectionnerPersonne(Rafraichissable vueARafraichir, String personneId, String projetId, String nomComplet) { |
PersonneAsyncDao pDao = new PersonneAsyncDao(vueARafraichir); |
pDao.selectionner(personneId, projetId, nomComplet); |
} |
public void supprimerPersonne(Rafraichissable vueARafraichir, String idStr) { |
PersonneAsyncDao personneDao = new PersonneAsyncDao(vueARafraichir); |
personneDao.supprimer(vueARafraichir, idStr); |
} |
public void ajouterPersonne(Rafraichissable vue, Personne personne) { |
PersonneAsyncDao personneDao = new PersonneAsyncDao(vue); |
personneDao.ajouter(vue, personne); |
} |
public void modifierPersonne(Rafraichissable vueARafraichir, Personne personne) { |
PersonneAsyncDao personneDao = new PersonneAsyncDao(vueARafraichir); |
personneDao.modifier(vueARafraichir, personne); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PUBLICATIONS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void selectionnerPublications(Rafraichissable vueARafraichir) { |
PublicationAsyncDao lsDao = new PublicationAsyncDao(vueARafraichir); |
lsDao.obtenirListePublication(); |
} |
public void modifierPublication(Rafraichissable vueRafraichir, String utilisateurId, Publication publi) { |
PublicationAsyncDao pDao = new PublicationAsyncDao(vueRafraichir); |
pDao.modifierPublication(utilisateurId, publi); |
} |
public void ajouterPublication(Rafraichissable vueARafraichir, String utilisateurId, Publication publi) { |
PublicationAsyncDao pDao = new PublicationAsyncDao(vueARafraichir); |
pDao.ajouterPublication(utilisateurId, publi); |
} |
public void supprimerPublication(Rafraichissable vueARafraichir, String utilisateurId, List<Publication> publicationListe) { |
String idPubs = ""; |
for(Iterator<Publication> it = publicationListe.iterator(); it.hasNext();) { |
Publication pub = it.next(); |
idPubs += pub.getId(); |
if(it.hasNext()) { |
idPubs += ","; |
} |
} |
PublicationAsyncDao pDao = new PublicationAsyncDao(vueARafraichir); |
pDao.supprimerPublication(utilisateurId, idPubs); |
} |
} |
/branches/v0.1-dora/src/org/tela_botanica/public/Coel.html |
---|
New file |
0,0 → 1,50 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
<!-- The HTML 4.01 Transitional DOCTYPE declaration--> |
<!-- above set at the top of the file will set --> |
<!-- the browser's rendering engine into --> |
<!-- "Quirks Mode". Replacing this declaration --> |
<!-- with a "Standards Mode" doctype is supported, --> |
<!-- but may lead to some differences in layout. --> |
<html> |
<head> |
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
<!-- Le titre de l'application. --> |
<title>Coel</title> |
<!-- Fichier CSS spécifique à l'application. --> |
<link rel="stylesheet" type="text/css" href="Coel.css" /> |
<!-- Fichier JS de configuration spécifique à l'application. --> |
<script type="text/javascript" language="javascript" src="config.js"></script> |
<!-- This script loads your compiled module. If you add any GWT meta tags, they must --> |
<!-- be added before this line. --> |
<script type="text/javascript" language="javascript" src="org.tela_botanica.Coel.nocache.js"></script> |
<!-- Fichier CSS spécifique à GXT --> |
<link rel="stylesheet" type="text/css" href="css/ext-all.css" /> |
</head> |
<!-- The body can have arbitrary html, or you can leave the body empty if you want --> |
<!-- to create a completely dynamic UI. --> |
<body> |
<div id="loading"> |
<div class="loading-indicator"> |
<img src="images/default/shared/large-loading.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/> |
COEL v1.0 |
<a href="http://extjs.com"></a><br /> |
<span id="loading-msg">Chargement de l'application Collections en Ligne...</span> |
<noscript> |
<p> |
<span class="attention">ATTENTION : </span> |
il semblerait que le Javascript ne soit pas activé sur votre navigateur. |
Veuillez l'activer pour utiliser cette application. |
</p> |
</noscript> |
</div> |
</div> |
<!-- OPTIONAL: include this if you want history support --> |
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe> |
</body> |
</html> |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/connexion.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/connexion.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/aide.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/aide.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard_supprimer.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard_supprimer.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/images.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/images.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application_formulaire_modifier.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application_formulaire_modifier.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/ajouter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/ajouter.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/deconnexion.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/deconnexion.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/utilisateur.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/utilisateur.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/rafraichir.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/rafraichir.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application_panneau_liste.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/application_panneau_liste.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/groupe_engrenage.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/groupe_engrenage.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/replier_tout.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/replier_tout.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/engrenages.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/engrenages.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/formulaire_modifier.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/formulaire_modifier.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/imprimer.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/imprimer.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/fleche_bascule.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/fleche_bascule.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/information.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/information.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/livre_ouvert.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/livre_ouvert.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/supprimer.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/supprimer.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/table.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/table.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard_ajouter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard_ajouter.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/LICENCE.txt |
---|
New file |
0,0 → 1,13 |
Licence : Creative Commons Attribution 2.5 License < http://creativecommons.org/licenses/by/2.5/ > |
Source : http://www.famfamfam.com/lab/icons/silk/ |
Voir tous les icônes : http://www.famfamfam.com/lab/icons/silk/previews/index_abc.png |
Fichier utilisés : ajouter.png, supprimer.png, application_formulaire_modifier.png, printer.png |
--------------------------------------------------------------------------------------------------- |
Licence: www.fsf.org/licenses/lgpl.html |
Nom : engrenages.png (originale : gear.png) / Page web : www.everaldo.com |
Nom : groupe_engrenage.png |
--------------------------------------------------------------------------------------------------- |
Licence: http://www.eclipse.org/org/documents/epl-v10.html |
Nom : deplier_tout.png (originale : expandall_16x16.gif) / Auteur : Eclipse Project (www.eclipse.org) / Source : www.iconlet.com/info/19295_expandall_16x16 |
Nom : replier_tout.png(originale : collapseall_16x16.gif) / Auteur : Eclipse Project (www.eclipse.org) / Source : www.iconlet.com/info/20364_collapseall_16x16 |
--------------------------------------------------------------------------------------------------- |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/formulaire_ajouter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/formulaire_ajouter.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/deplier_tout.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/deplier_tout.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/icones/vcard.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/bg/hd-bg.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/branches/v0.1-dora/src/org/tela_botanica/public/images/bg/hd-bg.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/images/ajax-loader.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/v0.1-dora/src/org/tela_botanica/public/images/ajax-loader.gif |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/v0.1-dora/src/org/tela_botanica/public/Coel.php |
---|
New file |
0,0 → 1,62 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
<!-- The HTML 4.01 Transitional DOCTYPE declaration--> |
<!-- above set at the top of the file will set --> |
<!-- the browser's rendering engine into --> |
<!-- "Quirks Mode". Replacing this declaration --> |
<!-- with a "Standards Mode" doctype is supported, --> |
<!-- but may lead to some differences in layout. --> |
<html> |
<head> |
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
<meta name="gwt:property" content="locale=fr"> |
<!-- --> |
<!-- Any title is fine --> |
<!-- --> |
<title>Coel<?php echo ' - PHP v'.phpversion();?></title> |
<!-- Fichier CSS spécifique à l'application --> |
<link rel="stylesheet" type="text/css" href="Coel.css" /> |
<!-- Fichier JS de configuration spécifique à l'application --> |
<script type="text/javascript" language="javascript" src="config.js"></script> |
<!-- --> |
<!-- This script loads your compiled module. --> |
<!-- If you add any GWT meta tags, they must --> |
<!-- be added before this line. --> |
<!-- --> |
<script type="text/javascript" language="javascript" src="org.tela_botanica.Coel.nocache.js"></script> |
<!-- Fichier CSS spécifique à GXT --> |
<link rel="stylesheet" type="text/css" href="css/ext-all.css" /> |
</head> |
<!-- --> |
<!-- The body can have arbitrary html, or --> |
<!-- you can leave the body empty if you want --> |
<!-- to create a completely dynamic UI. --> |
<!-- --> |
<body> |
<div id="loading"> |
<div class="loading-indicator"> |
<img src="images/default/shared/large-loading.gif" width="32" height="32" style="margin-right:8px;float:left;vertical-align:top;"/> |
COEL v1.0 |
<a href="http://extjs.com"></a><br /> |
<span id="loading-msg">Chargement de l'application Collections en Ligne...</span> |
<noscript> |
<p> |
<span class="attention">ATTENTION : </span> |
il semblerait que le Javascript ne soit pas activé sur votre navigateur. |
Veuillez l'activer pour utiliser cette application. |
</p> |
</noscript> |
</div> |
</div> |
<!-- OPTIONAL: include this if you want history support --> |
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe> |
<!-- OPTIONEL: inclure la ligne ci-dessous si vous utilisez la classe org.tela_botanica.coel.util.print --> |
<iframe id="__printingFrame" style="width:0;height:0;border:0"></iframe> |
</body> |
</html> |
/branches/v0.1-dora/src/org/tela_botanica/public/Coel.css |
---|
New file |
0,0 → 1,243 |
/** Les CSS de l'application COEL */ |
*{ |
margin:0; |
padding:0;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* CHARGEMENT APPLICATION */ |
/* #------------------------------------------------------------------------------------------------------# */ |
#loading{ |
position:absolute; |
left:45%; |
top:40%; |
margin-left:-45px; |
padding:2px; |
z-index:20001; |
height:auto; |
border:1px solid #ccc; |
width:400px;} |
#loading a{ |
color:#225588;} |
#loading .loading-indicator{ |
background:white; |
color:#444; |
font:bold 13px tahoma, arial, helvetica; |
padding:10px; |
margin:0; |
height:auto;} |
#loading .loading-indicator img{ |
margin-right:8px; |
float:left; |
vertical-align:top;} |
#loading-msg{ |
font:normal 10px arial, tahoma, sans-serif;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* GÉNÉRAL */ |
/* #------------------------------------------------------------------------------------------------------# */ |
.attention{ |
font:bold 14px; |
color:red;} |
.coel-label{ |
font-weight:bold; |
line-height:18px;} |
.coel-fieldset{ |
float:left; |
padding:5px; |
width:45%;} |
.coel-clear{ |
clear:both; |
line-height:0; |
border:none; |
width:0;/*Pour IE*/} |
.coel-meta{ |
font-size:10px; |
font-weight:normal;} |
.coel-indentation{ |
padding-left:15px;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* ENTÊTE */ |
/* #------------------------------------------------------------------------------------------------------# */ |
#coel-entete{ |
color:white; |
height:100px; |
background:#1E4176 url(images/bg/hd-bg.png) repeat-x scroll 0pt; |
border:0pt none; |
padding-left:3px;} |
#coel-titre{ |
font-family:tahoma, arial, sans-serif; |
font-size:16px; |
font-size-adjust:none; |
font-stretch:normal; |
font-style:normal; |
font-variant:normal; |
font-weight:normal; |
line-height:normal; |
padding:0 0 8 6px;} |
#coel-identification{ |
float:right; |
margin:2 5 0 0px} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* AIDE */ |
/* #------------------------------------------------------------------------------------------------------# */ |
#coel-id-panneau-aide{ |
font-size:11px; |
margin:5px;} |
#coel-id-panneau-aide ul{ |
list-style-type:disc; |
padding-left:15px;} |
#coel-id-panneau-aide ol{ |
list-style-type:decimal; |
padding-left:15px;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* CONNEXION/DECONNEXION */ |
/* #------------------------------------------------------------------------------------------------------# */ |
#coel-identification-zone-msg{ |
text-align:center; |
background-color:#F8B9B9; |
border:1px solid red; |
margin:5px 0;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* PANNEAU DÉTAIL */ |
/* #------------------------------------------------------------------------------------------------------# */ |
#coel-detail-entete{ |
height:37px; |
background-color:#ddd; |
border-bottom:1px solid silver;} |
#coel-detail-entete h1{ |
font-weight:bold; |
font-size:12px; |
padding:5 0 2 5px;} |
#coel-detail-entete h2{ |
font-size:11px; |
font-weight:normal; |
padding:0 5 0 5px;} |
#coel-detail-entete .coel-meta{ |
position:absolute; |
top:0; |
right:0; |
padding:5px;} |
.coel-detail-corps-contenu{ |
padding:0 12px; |
background-color:white;} |
.coel-detail-corps-contenu h2{ |
font-size:14px; |
color:#1C3C78; |
padding:12px 0 5px 0;} |
.coel-detail-corps-contenu h3{ |
font-style:italic; |
padding:12px 0 5px 0;} |
.coel-detail-corps-contenu table{ |
border:1px solid #1C3C78; |
border-collapse:collapse; |
width:100% !important;width:95%;/*Pour IE*/ |
margin:auto;} |
.coel-detail-corps-contenu thead, .coel-detail-corps-contenu tfoot{ |
background-color:#D0E3FA; |
background-image:url(sky.jpg); |
border:1px solid #1C3C78;} |
.coel-detail-corps-contenu tbody{ |
background-color:#FFFFFF; |
border:1px solid #1C3C78;} |
.coel-detail-corps-contenu th{ |
font-family:monospace; |
border:1px dotted #1C3C78; |
padding:5px; |
background-color:#EFF6FF; |
width:25%;} |
.coel-detail-corps-contenu td{ |
font-family:sans-serif; |
font-size:80%; |
border:1px solid #1C3C78; |
padding:5px; |
text-align:left;} |
.coel-detail-corps-contenu caption{ |
font-family:sans-serif;} |
/* #------------------------------------------------------------------------------------------------------# */ |
/* ÎCONES */ |
/* #------------------------------------------------------------------------------------------------------# */ |
.no-icone{ |
padding:0;} |
.icone-aide{ |
background:url(images/icones/aide.png) no-repeat center left !important;} |
.icone-ajouter{ |
background:url(images/icones/ajouter.png) no-repeat center left !important;} |
.icone-appli{ |
background:url(images/icones/application.png) no-repeat center left !important;} |
.icone-appli-panneau-liste{ |
background:url(images/icones/application_panneau_liste.png) no-repeat center left !important;} |
.icone-bascule{ |
background:url(images/icones/fleche_bascule.png) no-repeat center left !important;} |
.icone-bel{ |
background:url(images/icones/livre_ouvert.png) no-repeat center left !important;} |
.icone-cel{ |
background:url(images/icones/images.png) no-repeat center left !important;} |
.icone-connexion{ |
background:url(images/icones/connexion.png) no-repeat center left !important;} |
.icone-deconnexion{ |
background:url(images/icones/deconnexion.png) no-repeat center left !important;} |
.icone-deplier-tout{ |
background:url(images/icones/deplier_tout.png) no-repeat center left !important;} |
.icone-form-ajouter{ |
background:url(images/icones/formulaire_ajouter.png) no-repeat center left !important;} |
.icone-form-modifier{ |
background:url(images/icones/formulaire_modifier.png) no-repeat center left !important;} |
.icone-imprimer{ |
background:url(images/icones/imprimer.png) no-repeat center left !important;} |
.icone-information{ |
background:url(images/icones/information.png) no-repeat center left !important;} |
.icone-modifier{ |
background:url(images/icones/formulaire_modifier.png) no-repeat center left !important;} |
.icone-param{ |
background:url(images/icones/engrenages.png) no-repeat center left !important;} |
.icone-preference{ |
background:url(images/icones/groupe_engrenage.png) no-repeat center left !important;} |
.icone-supprimer{ |
background:url(images/icones/supprimer.png) no-repeat center left !important;} |
.icone-table{ |
background:url(images/icones/table.png) no-repeat center left !important;} |
.icone-utilisateur{ |
background:url(images/icones/utilisateur.png) no-repeat center left !important;} |
.icone-vcard-ajouter{ |
background:url(images/icones/vcard_ajouter.png) no-repeat center left !important;} |
.icone-vcard-supprimer{ |
background:url(images/icones/vcard_supprimer.png) no-repeat center left !important;} |
.icone-rafraichir{ |
background:url(images/icones/rafraichir.png) no-repeat center left !important;} |
.icone-replier-tout{ |
background:url(images/icones/replier_tout.png) no-repeat center left !important;} |
/* #------------------------------------------------------------------------------------------------------#*/ |
/* IMAGES */ |
/* #------------------------------------------------------------------------------------------------------#*/ |
.conteneur-image-centre{ |
text-align:center;} |
.logo-personne{ |
max-height:250px;} |
/* #----------------------------------------------------------------------------------------------------------#*/ |
/* PANNEAU PUBLICATION */ |
/* #----------------------------------------------------------------------------------------------------------#*/ |
.x-formulaire-auteur{ |
padding-left:100px;} |
.x-formulaire-auteur-label{ |
padding:3px 0 !important; |
text-align:left; |
clear:left; |
display:block; |
float:left; |
padding:3px 3px 3px 0; |
position:relative; |
width:100px; |
z-index:2; |
font-weight:bold; |
font-family:tahoma,arial,helvetica,sans-serif; |
font-size:12px; |
font-size-adjust:none; |
font-style:normal; |
font-variant:normal; |
line-height:normal;} |
/* #----------------------------------------------------------------------------------------------------------#*/ |
/* AUTRES */ |
/* #----------------------------------------------------------------------------------------------------------#*/ |
#main-button button{ |
font-weight:bold; |
text-decoration:underline;} |
/branches/v0.1-dora/src/org/tela_botanica/public/config.js |
---|
New file |
0,0 → 1,55 |
var configuration = { |
celUrl:"http://www.tela-botanica.org/cel/www/org.tela_botanica.Cel/Cel.html", |
serviceBaseUrl:"http://localhost/jrest/", |
// liste 09 : Liste des fonctions d'une personne au sein d'une structure |
listeFonction:1012, |
// liste 10 : Liste des statuts d'une personne au sein d'une structure |
listeStatut:1013, |
// liste 12 : Liste des types de structure privé |
listeStpr:1015, |
// liste 13 : Liste des types de structure public |
listeStpu:1016, |
// liste 14 : Liste des identifiants alternatifs de structures à vocation botanique |
listeAcronymeBota:1017, |
// liste 15 : Liste des types de local de stockage de collections |
listeStockageLocal:1018, |
// liste 16 : Liste des types de mobilier de stockage de collections |
listeStockageMeuble:1019, |
// liste 17 : Liste des paramètres de contrôle environnemental d'un local |
listeStockageParametre:1020, |
// liste 18 : Liste des types de collection non botanique |
listeCollectionAutre:1021, |
// liste 19 : Liste des types d'opération de restauration pour les collections botaniques |
listeRestaurationOperation:1022, |
// liste 20 : Liste oui/non/en partie |
listeONEP:1023, |
// liste 21 : Liste du matériel dit de nom conservation des parts d'herbier |
listeMaterielAutre:1024, |
// liste 22 : Liste de traitement anti-insecte pour les collections botaniques |
listeDesinsectisation:1025, |
// liste 23 : Liste des poisons utilisés pour les collections botaniques |
listeEmpoisonnement:1026, |
// liste 24 : Liste des actions de valorisation des collections |
listeValorisationAction:1027, |
// liste 25 : Liste des continents habités incluant aussi le pays France |
listeContinentEtFr:1028, |
// liste 26 : Liste des types de recherche nécessitant la consultation de collection botanique |
listeRechercheType:1029, |
// liste 71 : Liste des pays du standard ISO-3166-1 |
listePays:1074, |
// Liste des préfixes |
listePrefixes:1004, |
// Liste des suffixes |
listeSuffixes:1005, |
// Liste sexe: |
listeSexe:1067, |
// Liste tel: |
listeTel:1007, |
// Liste régions |
listeRegions:1078 |
}; |