Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 119 → Rev 120

/src/org/tela_botanica/del/client/pagination/PaginationVue.java
New file
0,0 → 1,37
package org.tela_botanica.del.client.pagination;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
 
public class PaginationVue extends Composite {
 
@UiField
HorizontalPanel zoneLiens;
 
@UiField
ListBox nbElements;
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("PaginationVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, PaginationVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
public PaginationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public HorizontalPanel getZoneLiens() {
return this.zoneLiens;
}
 
public ListBox getNbElements() {
return nbElements;
}
}
/src/org/tela_botanica/del/client/pagination/pagination.css
New file
0,0 → 1,2
.pagination {width:100%;}
.selecteurElements {float:right}
/src/org/tela_botanica/del/client/pagination/PaginationVue.ui.xml
New file
0,0 → 1,11
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:style src="pagination.css" />
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<g:HorizontalPanel styleName="{style.pagination}">
<g:HorizontalPanel ui:field="zoneLiens"></g:HorizontalPanel>
<g:ListBox ui:field="nbElements" styleName="{style.selecteurElements}"></g:ListBox>
</g:HorizontalPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/pagination/PaginationPresenteur.java
New file
0,0 → 1,170
package org.tela_botanica.del.client.pagination;
 
import java.util.Iterator;
import java.util.Vector;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
 
public abstract class PaginationPresenteur {
 
// Singleton
private static PaginationPresenteur presenteur;
 
private final PaginationVue vue;
private int nbElementsTotal = 0;
private int nbPage;
private Vector<Button> liens;
private int pageActuelle = 0;
private int pas;
 
public PaginationPresenteur(int nbElements) {
 
presenteur = this;
this.nbElementsTotal = nbElements;
actualiserNbPage();
vue = new PaginationVue();
setPas(10);
}
 
private void actualiserNbPage() {
Double a = Math.ceil((double) nbElementsTotal / (double) pas);
this.nbPage = a.intValue();
}
 
public void setPageActuelle(int pageActuelle) {
this.pageActuelle = pageActuelle;
}
 
public void setPas(int pas) {
this.pas = pas;
actualiserNbPage();
creerLiens();
changerPage(pas * pageActuelle, pas * (pageActuelle + 1));
}
 
public void creerLiens() {
HorizontalPanel zoneLiens = vue.getZoneLiens();
zoneLiens.clear();
liens = new Vector<Button>();
Button precedent = new Button();
precedent.setText("<");
precedent.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
pagePrecedente();
}
});
 
liens.add(precedent);
vue.getZoneLiens().add(precedent);
 
for (int i = 0; i < nbPage; i++) {
Button bouton = new Button();
bouton.setText(String.valueOf(i));
liens.add(bouton);
zoneLiens.add(bouton);
}
 
Button suivant = new Button();
suivant.setText(">");
suivant.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
pageSuivante();
}
});
 
liens.add(suivant);
vue.getZoneLiens().add(suivant);
 
handleEvents();
}
 
public void initNbElements() {
 
ListBox nbElements = vue.getNbElements();
for (int i = 0; i < 20; i += 5) {
int valeur = i;
if (i == 0) {
valeur = 1;
}
 
nbElements.addItem(String.valueOf(valeur));
}
nbElements.setSelectedIndex(pas / 5);
nbElements.addChangeHandler(new ChangeHandler() {
 
@Override
public void onChange(ChangeEvent event) {
ListBox nbElements = (ListBox) event.getSource();
int index = nbElements.getSelectedIndex();
setPas(Integer.parseInt(nbElements.getValue(index)));
}
 
});
}
 
public void go(HasWidgets container) {
initNbElements();
creerLiens();
container.add(vue);
 
}
 
public void handleEvents() {
Iterator<Button> iterator = liens.iterator();
while (iterator.hasNext()) {
Button bouton = iterator.next();
 
bouton.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
Button bouton = (Button) event.getSource();
pageActuelle = Integer.parseInt(bouton.getText());
int debut = Integer.parseInt(bouton.getText()) * pas;
int fin = (debut + pas);
changerPage(debut, fin);
 
}
});
 
}
}
 
public void pageSuivante() {
if (pageActuelle < nbPage - 1) {
pageActuelle++;
int debut = pageActuelle * pas;
int fin = debut + pas;
changerPage(debut, fin);
 
}
}
 
public void pagePrecedente() {
 
if (pageActuelle > 0) {
pageActuelle--;
int debut = pageActuelle * pas;
int fin = debut + pas;
changerPage(debut, fin);
 
}
}
 
public abstract void changerPage(int debut, int fin);
 
public PaginationPresenteur getInstance() {
return presenteur;
}
}