Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2609 → Rev 2611

/trunk/src/org/tela_botanica/client/vues/MiniBarrePaginationVue.java
4,6 → 4,7
import org.tela_botanica.client.interfaces.Rafraichissable;
 
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Template;
import com.gwtext.client.data.Record;
15,7 → 16,10
import com.gwtext.client.widgets.ToolbarTextItem;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.Field;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter;
 
public class MiniBarrePaginationVue extends Toolbar implements Rafraichissable {
 
32,6 → 36,7
* Bouton suivant
*/
private ToolbarButton suivPage = new ToolbarButton();
/**
* Numéro de la page courante (attention, commence à zéro pour des raisons
* pratiques)
53,7 → 58,15
* Texte statique de la toolbar 2
*/
private ToolbarTextItem afficherNbElem = new ToolbarTextItem("Afficher ");
/**
* Affichage de la page courante
*/
private TextField champPage = new TextField("" + (pageCourante + 1));
private ToolbarTextItem surPageTotale = new ToolbarTextItem("/ ");
/**
* Combobox permettant de selectionner le nombre d'élements à afficher par
* page et donc de changer la variable taillePage
*/
62,7 → 75,7
/**
* Les différents intervalles de page possibles (intialisé par défaut)
*/
String[] pages = { "200","100","50", "20", "10" };
String[] pages = {"200","100","50", "20", "10"};
Store storeIntervalle = null ;
72,14 → 85,12
* Label indiquant le type d'element affiché
*
*/
private String labelElement="Obs";
 
private String labelElement="Elements";
 
/**
* taille de la page par defaut
*
*/
 
private int taillePageDefaut = 50;
 
86,13 → 97,11
/**
* Texte statique de la toolbar 3
*/
private ToolbarTextItem nbElemParPage = new ToolbarTextItem(
labelElement + " par page ");
private ToolbarTextItem nbElemParPage = new ToolbarTextItem(labelElement);
 
/**
* retourne la liste associé à la barre
*/
public ListePaginable getlistePaginable() {
return listePaginable;
}
119,7 → 128,8
// on dispose un peu de texte et quelques espaces pour séparer les
// éléments
addButton(prevPage);
addSpacer();
addField(champPage);
addItem(surPageTotale);
addButton(suivPage);
 
addSpacer();
142,6 → 152,7
addField(selecteurTaillePage);
selecteurTaillePage.setValue(""+taillePageDefaut);
selecteurTaillePage.setWidth(50);
champPage.setWidth(20);
addItem(nbElemParPage);
 
154,7 → 165,6
* Texte nommant les elements pagines (Images, Observation, truc, machin etc...).
* @param label
*/
public void setLabelElement(String label) {
this.labelElement = label;
nbElemParPage.setText(labelElement + " par page ");
242,6 → 252,83
}
 
});
champPage.addListener(new TextFieldListenerAdapter() {
 
@Override
public void onSpecialKey(Field field, EventObject e) {
 
// on teste si la touche entrée a été pressée
if (e.getKey() == EventObject.ENTER) {
int nouvellePage = pageCourante;
// on teste avec parseInt si la valeur entrée est un entier
try {
nouvellePage = Integer
.parseInt(champPage.getRawValue());
}
// si ce n'est pas le cas alors on remet le numéro de page
// correct
catch (NumberFormatException nfe) {
rafraichirNumeroPage();
champPage.focus(true);
return;
}
 
// si la conversion reussit on verifie s'il est nécessaire
// de changer de page
// et si la nouvelle est comprise dans l'intervalle des
// pages existantes (0..pageTotale)
if (nouvellePage != pageCourante + 1 && nouvellePage > 0
&& nouvellePage <= pageTotale) {
// le cas échéant, on charge la nouvelle page et on
// notifie le médiateur
changerPageCourante(nouvellePage - 1);
listePaginable.changerNumeroPage(pageCourante);
 
} else {
// sinon on reaffiche l'ancien numero de page sans rien
// changer
rafraichirNumeroPage();
champPage.focus(true);
}
}
}
 
@Override
public void onFocus(Field field) {
 
champPage.focus(true);
}
 
});
 
// pour éviter de se compliquer la vie, on filtre tous les charactères
// non numériques
champPage.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
 
// si c'est un numerique
if (Character.isDigit((char) e.getCharCode())) {
// on laisse passer
return;
}
 
// si c'est la touche entrée ou backspace (valider ou effacer)
if (e.getKey() == EventObject.ENTER
|| e.getKey() == EventObject.BACKSPACE) {
// on laisse passer
return;
} else {
// sinon on remet le numero de page correct et on annule
// l'évenement
rafraichirNumeroPage();
e.stopEvent();
}
}
 
});
}
 
/**
283,6 → 370,8
// le cas échéant on en notifie le médiateur
listePaginable.changerNumeroPage(pageCourante);
}
rafraichirNumeroPage();
}
}
 
318,4 → 407,17
public void selectionnerTaillePage(int nouvelleTaillePage) {
selecteurTaillePage.setValue("" + nouvelleTaillePage);
}
/**
* Met à jour les affichage sur les numéros de pages et d'intervalle
* d'éléments à partir des variables de classes
*/
public void rafraichirNumeroPage() {
if (nbElement == 0) {
champPage.setValue("" + (0));
} else {
champPage.setValue("" + (pageCourante + 1));
}
surPageTotale.setText("/"+pageTotale);
}
}