Rev 1563 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.fenetreoverlay;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.HasBlurHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasFocusHandlers;
import com.google.gwt.event.dom.client.HasKeyDownHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.shared.HasHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasVisibility;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
public abstract class FenetreOverlayDefilantePresenteur {
public interface Vue extends IsWidget {
public HasKeyDownHandlers getConteneurGlobal();
public IsWidget getOverlay();
public void afficherBoutonsSuivantsPrecedents(boolean afficher);
public HasClickHandlers getOverlayHasClickHandlers();
public HasVisibility getOverlayVisibility();
public IsWidget getOverlayContenu();
public HasVisibility getOverlayContenuVisibility();
public HasWidgets getOverlayContenuHasWidgets();
public HasClickHandlers getBoutonFermer();
public HasClickHandlers getBoutonSuivant();
public HasClickHandlers getBoutonPrecedent();
public void setStyleOverlay(String style);
public void setStyleOverlayContenu(String style);
public void setOverlayContenu(IsWidget w);
public void viderOverlay();
public void viderOverlayContenu();
public void surOuvertureFenetre();
public void surFermetureFenetre();
public void surSetContenuFenetre();
}
private Vue vue;
private boolean fenetreModaleOuverte = false;
private boolean fermableSurClicExterieur = true;
private int indexElementAffiche = 0;
// Constructeur
public FenetreOverlayDefilantePresenteur(int indexElementAffiche, Vue vue) {
this.indexElementAffiche = indexElementAffiche;
this.vue = vue;
gererEvenements();
}
// Afficheur
public void go() {
go(null);
}
public void go(HasWidgets composite) {
}
// Gestion des évènements
protected void gererEvenements() {
vue.getBoutonFermer().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
fermerFenetreModale();
}
});
vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
surClicBoutonPrecedent();
}
});
vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
surClicBoutonSuivant();
}
});
vue.getConteneurGlobal().addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_LEFT) {
surClicBoutonPrecedent();
}
if(event.getNativeKeyCode() == KeyCodes.KEY_RIGHT) {
surClicBoutonSuivant();
}
}
});
vue.getOverlayHasClickHandlers().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(fermableSurClicExterieur) {
fermerFenetreModale();
}
}
});
}
public void ouvrirFenetreModaleDefilante(int indexElementAffiche, Presenteur presenteurModal) {
vue.setStyleOverlay("overlay");
vue.setStyleOverlayContenu("overlayContenu");
vue.getOverlayContenuVisibility().setVisible(true);
vue.getOverlayVisibility().setVisible(true);
RootPanel.get().add(vue.asWidget());
fenetreModaleOuverte = true;
setContenuFenetreModale(indexElementAffiche, presenteurModal);
vue.surOuvertureFenetre();
}
public void setContenuFenetreModale(int indexElementAffiche, Presenteur presenteurModal) {
this.indexElementAffiche = indexElementAffiche;
vue.viderOverlayContenu();
presenteurModal.go(vue.getOverlayContenuHasWidgets());
vue.surSetContenuFenetre();
}
public abstract void surClicBoutonSuivant();
public abstract void surClicBoutonPrecedent();
public boolean fenetreModaleEstOuverte() {
return fenetreModaleOuverte;
}
public void fermerFenetreModale() {
vue.viderOverlay();
vue.viderOverlayContenu();
RootPanel.get().remove(vue.asWidget());
fenetreModaleOuverte = false;
vue.surFermetureFenetre();
}
public int getIndexElementAffiche() {
return indexElementAffiche;
}
public void setFermableSurClicExterieur(boolean fermableSurClicExterieur) {
this.fermableSurClicExterieur = fermableSurClicExterieur;
}
public void afficherBoutonsSuivantsPrecedents(boolean afficher) {
vue.afficherBoutonsSuivantsPrecedents(afficher);
}
}