New file |
0,0 → 1,148 |
package org.tela_botanica.del.client.composants.fenetreoverlay; |
|
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
|
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.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(); |
public boolean testerFermetureClicExterieur(ClickEvent event); |
} |
|
private Vue vue; |
|
private boolean fenetreModaleOuverte = false; |
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(vue.testerFermetureClicExterieur(event)) { |
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; |
GWT.log("Index elemt à afficher :"+indexElementAffiche); |
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 afficherBoutonsSuivantsPrecedents(boolean afficher) { |
vue.afficherBoutonsSuivantsPrecedents(afficher); |
} |
} |