Rev 1789 | Go to most recent revision | 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();
}
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;
}
}