Rev 29 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client;// TODO : sortie User vers une classe ...// TODO : sortie les boutons supprimer et exporter et inclure ici : vraiment ?// TODO : optimisation, ne pas rechercher stations ou date si non affichésimport net.mygwt.ui.client.Style;import net.mygwt.ui.client.widget.Viewport;import net.mygwt.ui.client.widget.WidgetContainer;import net.mygwt.ui.client.widget.layout.BorderLayout;import net.mygwt.ui.client.widget.layout.BorderLayoutData;import net.mygwt.ui.client.widget.layout.FillLayout;import com.google.gwt.i18n.client.Dictionary;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;import com.google.gwt.user.client.HTTPRequest;import com.google.gwt.user.client.ResponseTextHandler;import com.google.gwt.user.client.ui.TextBox;public class Mediator implements AutoCompleteAsyncTextBoxListener {// Generalprivate WidgetContainer west = null;private WidgetContainer south = null;private WidgetContainer center = null;private WidgetContainer north = null;private String serviceBaseUrl = getServiceBaseUrlFromDictionnary(); // Recherche url de base des services distants// Utilisateurprivate ConnexionView connexionView=null; // Information de connexionprivate String user = null; // Identifiant utilisateur connecte ou bien identifiant de session en coursprivate boolean connected=false; // Positionne a vrai si identification reussie// Filtres sur les relevesprivate InventoryFilterView inventoryFilterView=null; // Containeur filtre date, lieu, lieu-dit ...private LocationFilterView locationFilterView=null; // Filtre sur lieu de releveprivate DateFilterView dateFilterView = null; // Filtre sur date d'observation// Saisie d'une observationprivate EntryView entryView=null; // Formulaire de saisie observationprivate NameAssistant nameAssistant=null; // Assistant de saisie nom scientifiqueprivate LocationAssistant locationAssistant=null; // Assistant de saisie nom de communeprivate TextBox date = null; // date observationprivate TextBox station = null; // station observationprivate TextBox milieu = null; // milieu observationprivate TextBox lieudit = null; // lieu dit observationprivate TextBox comment = null; // commentaire observationprivate InventoryItem inventoryItem=null; // Une observation saisie// Liste de releves saisisprivate InventoryListView inventoryListView = null; // Liste de releves// Actions sur les relevesprivate ActionView actionView=null; // Action sur les observationsprivate SearchPanel searchPanel = null; // Recherche dans les relevés saisis// Informationsprivate InfoPopup infoPopup=null; // Information complementaire sur un taxon (photo, repartition)Mediator() {// Recherche identifiant utilisateur connecteHTTPRequest.asyncGet(serviceBaseUrl + "/User/",new ResponseTextHandler() {public void onCompletion(String str) {JSONValue jsonValue = JSONParser.parse(str);JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {user = ((JSONString) jsonArray.get(0)).stringValue(); // Identifiant utilisateur ou identifiant de session si non connecteconnected = ((JSONBoolean) jsonArray.get(1)).booleanValue(); // Drapeau leve si utilisateur identifie}_Mediator();}});}// Fin initialisationprivate void _Mediator() {// NavigateurViewport viewport = new Viewport();// viewport.setStyleName("my-border-layout");// viewport.setBorders(true);viewport.setLayout(new BorderLayout());center = new WidgetContainer();center.setLayout(new BorderLayout());// center.setBorders(true);west = new WidgetContainer();west.setLayout(new FillLayout());// west.setBorders(true);south = new WidgetContainer();south.setLayout(new FillLayout());// south.setBorders(true);north = new WidgetContainer();north.setLayout(new FillLayout());// north.setBorders(true);inventoryListView = new InventoryListView(this); // Liste de relevesconnexionView = new ConnexionView(this); // Identifiant de connectioninventoryFilterView = new InventoryFilterView(this); // Ensemble de filtres sur liste de relevesentryView = new EntryView(this); // Formulaire de saisieactionView = new ActionView(this); // Action sur releves saisis// searchPanel = new SearchPanel(this); // Recherche dans releves//applicationPanel.add(searchPanel);BorderLayoutData westData = new BorderLayoutData(Style.WEST, 200, 150, 300);westData.resizeable = true;viewport.add(west, westData);BorderLayoutData centerData = new BorderLayoutData(Style.CENTER, 400, 400, 800);viewport.add(center, centerData);BorderLayoutData northData = new BorderLayoutData(Style.NORTH, 20, 20, 20);viewport.add(north, northData);BorderLayoutData southData = new BorderLayoutData(Style.SOUTH, 400, 400, 800);// viewport.add(south, southData);viewport.layout();onInit();// Methodes Private}/*** Recuperation du prefixe d'appel des services* @return prefix appel des service*/private String getServiceBaseUrlFromDictionnary() {Dictionary theme = Dictionary.getDictionary("Parameters");return theme.get("serviceBaseUrl");}// Methodes Public// Actions declanchee par le systeme/*** Action initialisation premier affichage*/public void onInit() {locationFilterView.setIDLocation("all"); // Mise a jour filtre localitelocationFilterView.setLocation("all"); // Mise a jour filtre localitelocationFilterView.setLieudit("all"); // Mise a jour filtre localitelocationFilterView.update(); // Mise a jour affichagedateFilterView.setYear("all");dateFilterView.setMonth("all");dateFilterView.setDay("all");dateFilterView.update();this.onLocationSelected("all","all","all");}// Actions sur formulaire de saisie/*** Action lancee par la completion d'un nom dans un assistant de saisie* Recherche d'information complementaires ....** @return void*/public void onComplete(ResponseTextHandler sender, String str, String value) {if (sender instanceof NameAssistant) {onNameCompleted(value);}}/*** Action suivant la completion d'un nom : affichage popup information**/public void onNameCompleted(String value) {if (infoPopup==null) {infoPopup = new InfoPopup(this);}infoPopup.setImageUrl(value);}/*** Action prealable a l'ajout d'une observation : controle presence champs requis et lancement mise a jour**/public void onAddInventoryItem() {// Lazy instantiationif (inventoryItem==null) {inventoryItem=new InventoryItem(this);}inventoryItem.setContent(nameAssistant.getText(),nameAssistant.getValue(),locationAssistant.getText(),locationAssistant.getValue(),date.getText(),lieudit.getText(),station.getText(), milieu.getText(), comment.getText(),"null");inventoryItem.addelement();}/*** Action prealable a la modification d'une observation : controle presence champs requis et lancement mise a jour**/public void onModifyInventoryItem(String ordre) {// Lazy instantiationif (inventoryItem==null) {inventoryItem=new InventoryItem(this);}inventoryItem.setContent(nameAssistant.getText(),nameAssistant.getValue(),locationAssistant.getText(),locationAssistant.getValue(),date.getText(),lieudit.getText(),station.getText(), milieu.getText(), comment.getText(),ordre);inventoryItem.updateElement();}/*** Action lancee par la selection d'un nom dans un assistant de saisie. Lance* la recherche d'informations complementaires (famille, numero* nomenclaturaux etc) et met a jour l'inventaire (addelement())** @return void*/public void onValidate(SourcesAutoCompleteAsyncTextBoxEvents sender,String str, String value) {if (entryView.getOrdre()==null) { // Nouvelle observationonAddInventoryItem();}else {onModifyInventoryItem(entryView.getOrdre()); // Modification d'une observationentryView.setOrdre(null);}}// Action portant sur la liste des observations/*** Action suite ajout, modification, suppression d'un element inventaire*/public void onInventoryUpdated(String id_location,String loc, String lieu) {if (id_location.compareTo("")==0) {id_location="000null";}if (loc.compareTo("")==0) {loc="000null";}if (lieu.compareTo("")==0) {lieu="000null";}locationFilterView.setIDLocation(id_location); // Mise a jour filtre localitelocationFilterView.setLocation(loc); // Mise a jour filtre localitelocationFilterView.setLieudit(lieu); // Mise a jour filtre localitelocationFilterView.update(); // Mise a jour affichagedateFilterView.setYear("all");dateFilterView.setMonth("all");dateFilterView.setDay("all");dateFilterView.update();this.onLocationSelected(id_location,loc,lieu); // Selection localite}/*** Action sur selection d'une observation : affichage du detail*/public void onInventoryItemSelected(String ordre) {entryView.setOrdre(ordre); // Mise a jour du formulaire de saisie avec l'element selectionneentryView.update();}/*** Action sur deselection d'une observation : remise a zero*/public void onInventoryItemUnselected() {entryView.setOrdre(null); // Mise a jour du formulaire de saisie avec l'element selectionne}// Action sur Filtrage// Filtre identification/*** Action sur login : initialisation filtres pour cette utilisateur* @param user*/public void onLogin(String user) {this.user=user;connexionView.getSignLabel().setText(user+ " (deconnexion)");inventoryListView.setUser(user);dateFilterView.setUser(user);entryView.setUser(user);locationFilterView.setUser(user);this.onInit();}/*** Action sur logoff* @param user*/public void onLogoff(String user) {this.user=user;connexionView.getSignLabel().setText("Connexion");inventoryListView.setUser(user);dateFilterView.setUser(user);entryView.setUser(user);locationFilterView.setUser(user);this.onInit();}// Filtre recherche contenu/*** Action sur recherche : affichage de la liste des taxons correspondants*/public void onSearch(String search) {if (search.trim().compareTo("")==0) {search="all";}inventoryListView.setSearch(search);inventoryListView.updateCount();}// Filtre selection lieu/*** Action sur selection d'un lieu : affichage de la liste des taxons correspondants au filtrage*/public void onLocationSelected(String id_loc, String loc,String lieu) {// Positionnement Filtre affichageinventoryListView.setIdLocation(id_loc);inventoryListView.setLocation(loc);inventoryListView.setLieudit(lieu);inventoryListView.updateCount();// Affichage des filtresinventoryListView.displayFilter();}// Filtre date d'observation/*** Action sur selection d'une date : affichage de la liste des taxons correspondants*/public void onDateSelected(String year,String month,String day) {inventoryListView.setYear(year);inventoryListView.setMonth(month);inventoryListView.setDay(day);inventoryListView.updateCount();inventoryListView.displayFilter();}// Declaration, enregistrement/*** Declaration date : date observation* @param date*/public void registerDate(TextBox date) {this.date=date;}/*** Declaration lieu dit : lieu dit d'observation** @param lieudit*/public void registerLieudit(TextBox lieudit) {this.lieudit=lieudit;}/*** Declaration station : station d'observation** @param station*/public void registerStation(TextBox station) {this.station=station;}/*** Declaration milieu : milieu d'observation** @param milieu*/public void registerMilieu(TextBox milieu) {this.milieu=milieu;}/*** Declaration commentaire b* @param commentaire*/public void registerComment(TextBox comment) {this.comment=comment;}/*** Declaration NameAssistant : completion nom scientifique* @param nameassistant*/public void registerNameAssistant(NameAssistant nameAssistant) {this.nameAssistant=nameAssistant;}/*** Declaration DateFilterView : filtre date observation* @param locationList*/public void registerDateFilterView(DateFilterView dateFilterView) {this.dateFilterView=dateFilterView;}/*** Declaration LocationAssistant : completion commune* @param locationassistant*/public void registerLocationAssistant(LocationAssistant locationAssistant) {this.locationAssistant=locationAssistant;}/*** Declaration LocationFilterView : filtre lieu observation* @param locationList*/public void registerLocationFilterView(LocationFilterView locationFilterView) {this.locationFilterView=locationFilterView;}// Accesseurs et setteurs/*** Accesseur Url de base* @return Url de base*/public String getServiceBaseUrl() {return serviceBaseUrl;}/*** Accesseur Utilisateur* @return utilisateur connecte ou identifiant de session*/public String getUser() {return user;}public void setUser(String user) {this.user=user;}public WidgetContainer getCenterContainer() {return center;}public WidgetContainer getNorthContainer() {return north;}public WidgetContainer getWestContainer() {return west;}public WidgetContainer getSouthContainer() {return south;}public InventoryListView getInventoryListView() {return inventoryListView;}public LocationFilterView getLocationFilterView() {return locationFilterView;}public NameAssistant getNameAssistant() {return nameAssistant;}public LocationAssistant getLocationAssistant() {return locationAssistant;}public InventoryItem getInventoryItem() {return inventoryItem;}public EntryView getEntryView() {return entryView;}public InventoryFilterView getInventoryFilterView() {return inventoryFilterView;}public InfoPopup getInfoPopup() {if (infoPopup==null) {infoPopup = new InfoPopup(this);}return infoPopup;}public void setConnected(boolean connected) {this.connected=connected;}public boolean getConnected() {return this.connected;}public ActionView getActionView() {return this.actionView;}}