New file |
0,0 → 1,120 |
package org.tela_botanica.del.client.composants.fenetreOverlayDefilante; |
|
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
|
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.user.client.Window; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.HTMLPanel; |
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.Panel; |
import com.google.gwt.user.client.ui.RootPanel; |
|
public abstract class FenetreOverlayDefilantePresenteur { |
|
private IsWidget overlay; |
private IsWidget overlayContenu; |
public interface Vue extends IsWidget { |
public IsWidget getOverlay(); |
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(); |
} |
|
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(event); |
} |
}); |
|
vue.getBoutonSuivant().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
surClicBoutonSuivant(event); |
} |
}); |
} |
|
public void ouvrirFenetreModaleDefilante(int indexElementAffiche, Presenteur presenteurModal) { |
this.indexElementAffiche = indexElementAffiche; |
overlay = vue.getOverlay(); |
vue.setStyleOverlay("overlay"); |
vue.getOverlayVisibility().setVisible(false); |
overlayContenu = vue.getOverlayContenu(); |
vue.setStyleOverlayContenu("overlayContenu"); |
|
presenteurModal.go(vue.getOverlayContenuHasWidgets()); |
|
vue.getOverlayContenuVisibility().setVisible(true); |
vue.getOverlayVisibility().setVisible(true); |
|
RootPanel.get().add(vue.asWidget()); |
fenetreModaleOuverte = true; |
} |
|
public void setContenuFenetreModale(int indexElementAffiche, Presenteur presenteurModal) { |
this.indexElementAffiche = indexElementAffiche; |
vue.viderOverlayContenu(); |
presenteurModal.go(vue.getOverlayContenuHasWidgets()); |
} |
|
public abstract void surClicBoutonSuivant(ClickEvent evt); |
public abstract void surClicBoutonPrecedent(ClickEvent evt); |
|
public boolean fenetreModaleEstOuverte() { |
return fenetreModaleOuverte; |
} |
|
public void fermerFenetreModale() { |
vue.viderOverlay(); |
vue.viderOverlayContenu(); |
RootPanel.get().remove(vue.asWidget()); |
fenetreModaleOuverte = false; |
} |
|
public int getIndexElementAffiche() { |
return indexElementAffiche; |
} |
} |