Rev 912 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.InterneValeur;
import org.tela_botanica.client.util.Debug;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.event.WindowListener;
import com.extjs.gxt.ui.client.store.ListStore;
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.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.custom.Portal;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
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.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
public class AccueilVue extends LayoutContainer implements Rafraichissable {
private Mediateur mediateur = null;
private Constantes i18nC = null;
private Portal portail = null;
public AccueilVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
i18nC = Mediateur.i18nC;
setLayout(new FitLayout());
ContentPanel panneauPrincipal = new ContentPanel();
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.setHeading("Accueil");
panneauPrincipal.setBorders(false);
ToolBar barreOutils = new ToolBar();
Button ajouter = new Button(i18nC.ajouter());
ajouter.setIcon(Images.ICONES.ajouter());
ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
ajouterPortlet(0);
}
});
barreOutils.add(ajouter);
panneauPrincipal.setTopComponent(barreOutils);
portail = new Portal(3);
portail.setBorders(true);
portail.setStyleAttribute("backgroundColor", "white");
portail.setShadow(true);
portail.setColumnWidth(0, .33);
portail.setColumnWidth(1, .33);
portail.setColumnWidth(2, .33);
panneauPrincipal.add(portail);
ajouterPortlet(0);
add(panneauPrincipal);
mediateur.desactiverChargement();
}
private void ajouterPortlet(int index) {
Portlet portlet = new Portlet();
portlet.setHeading("Statistiques des collections");
configPanel(portlet);
portlet.setLayout(new FitLayout());
HtmlContainer conteneurHtml = new HtmlContainer();
conteneurHtml.setUrl("http://localhost/jrest/CoelStatistique/NombreDonnees");
portlet.add(conteneurHtml);
portlet.setHeight(250);
portail.add(portlet, index);
}
private void configPanel(final ContentPanel panel) {
panel.setLayout(new FitLayout());
panel.setCollapsible(true);
panel.setAnimCollapse(false);
panel.setScrollMode(Scroll.AUTO);
panel.getHeader().addTool(new ToolButton("x-tool-gear", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
ContentPanel panneau = new ContentPanel();
panneau.setHeaderVisible(false);
panneau.setLayout(Formulaire.creerFormLayout(350, LabelAlign.TOP));
String baseUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
baseUrl += "CoelStatistique/";
ListStore<InterneValeur> appletteStore = new ListStore<InterneValeur>();
appletteStore.add(new InterneValeur(baseUrl+"NombreDonnees", "Nombre de données"));
appletteStore.add(new InterneValeur(baseUrl+"Accueil", "Bienvenue"));
appletteStore.add(new InterneValeur(baseUrl+"TypeDepot", "Types de dépôt des collections"));
appletteStore.add(new InterneValeur(baseUrl+"NombreCollectionParStructure", "Nombre de collections par institution"));
final ComboBox<InterneValeur> applettesCombo = new ComboBox<InterneValeur>();
applettesCombo.setFieldLabel("Veuillez sélectionner le type d'applette");
applettesCombo.setForceSelection(true);
applettesCombo.setTriggerAction(TriggerAction.ALL);
applettesCombo.setDisplayField("nom");
applettesCombo.setStore(appletteStore);
applettesCombo.setEditable(false);
applettesCombo.setWidth(300);
panneau.add(applettesCombo);
final Dialog configurationFenetre = new Dialog();
configurationFenetre.setHeading("Configuration de l'applette");
configurationFenetre.setButtons(Dialog.OK);
configurationFenetre.setSize(350, 150);
configurationFenetre.setPlain(true);
configurationFenetre.setModal(true);
configurationFenetre.setBlinkModal(true);
configurationFenetre.setLayout(new FitLayout());
configurationFenetre.setHideOnButtonClick(true);
configurationFenetre.addWindowListener(new WindowListener(){
public void windowHide(WindowEvent we) {
String url = applettesCombo.getValue().getAbr();
HtmlContainer conteneurHtml = new HtmlContainer();
conteneurHtml.setUrl(url);
conteneurHtml.recalculate();
panel.removeAll();
panel.add(conteneurHtml);
Debug.log(url);
panel.layout();
}
});
configurationFenetre.add(panneau);
configurationFenetre.show();
}
}));
panel.getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
panel.removeFromParent();
}
}));
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
String type = info.getType();
if (type.equals("")) {
}
} else {
Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
}
}
}