Subversion Repositories eFlore/Applications.coel

Rev

Rev 1794 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.accueil;

import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.Menu;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.Print;

import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.TreePanelEvent;
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.form.StoreFilterField;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
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.FormLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.http.RequestBuilderWithCredentials;
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.regexp.shared.MatchResult;
import com.google.gwt.regexp.shared.RegExp;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;

public class AccueilTutorielVue extends LayoutContainer {

        private static final String SERVICE_NOM = "CoelAide";
        private static final String PAGE_A_OUVRIR_CODE = "AideCOELTutoriel";
        
        private static Menu pagePrincipale = null;
        private static Menu menuAOuvrirParDefaut = null;

        private ContentPanel contenuPanneau = null;
        private HtmlContainer conteneurDuHtml;
        private LayoutContainer entetePanneau;
                
        public AccueilTutorielVue(Mediateur mediateur) {
                setLayout(new FitLayout());
                creerPanneauContenu();
                chargerPageParDefaut();
        }
        
        private void chargerPageParDefaut() {
                String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
                String defautPageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_A_OUVRIR_CODE+"/";
                chargerPageAide(defautPageUrl);
        }

        private void creerPanneauContenu() {
                contenuPanneau = new ContentPanel();
                contenuPanneau.setScrollMode(Scroll.AUTO);
                contenuPanneau.setHeaderVisible(false); 
                contenuPanneau.setLayout(new FitLayout());
                add(contenuPanneau);
        }
        
        private void chargerPageAide(String url) {
                conteneurDuHtml = new HtmlContainer() {
                        public void onBrowserEvent(Event e) {
                                // Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
                                if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().toString().startsWith("<a href=\"http://")) {
                                        e.preventDefault();
                                        String urlPageCliquee = extraireLien(e.getEventTarget().toString());
                                        if(urlPageCliquee != null) {
                                                chargerPageAide(urlPageCliquee);
                                        }
                                        
                                } else {
                                        GWT.log("Event target:"+e.getEventTarget().toString()+" - type :"+e.getTypeInt()+"="+Event.ONCLICK, null);
                                }
                        }
                };
                
                conteneurDuHtml.setId(ComposantId.PANNEAU_TUTORIEL);

                conteneurDuHtml.sinkEvents(Event.ONCLICK);
                conteneurDuHtml.setUrl(url);
                conteneurDuHtml.recalculate();
                
                contenuPanneau.removeAll();
                contenuPanneau.add(conteneurDuHtml);
                contenuPanneau.layout();
                
                conteneurDuHtml.setStyleAttribute("padding-left", "5px");
                conteneurDuHtml.setStyleAttribute("padding-top", "5px");
        }
        
        public String extraireLien(String str) {
                String lien = null;
                RegExp regExp = RegExp.compile("href=\"(.*?)\"");
                MatchResult matcher = regExp.exec(str);
                boolean matchOK = (matcher != null);
                if (matchOK) {
                        //TODO plus de vérifications
                        lien = matcher.getGroup(1);
                }
                return lien;
        }
}