63,7 → 63,7 |
|
private SimpleStore store = null ; |
|
private MiniBarrePaginationVue pgBar = new MiniBarrePaginationVue(iMediateur) ; |
private MiniBarrePaginationVue pgBar = new MiniBarrePaginationVue(this) ; |
|
private Toolbar bt = new Toolbar() ; |
|
79,7 → 79,16 |
|
int pageEnCours = 0; |
|
int nbElements = 0; |
|
int taillePage = 50; |
|
/** |
* Nombre de pages totales |
*/ |
private int pageMax = 1 ; |
|
/** |
* Constructeur avec arguments |
* @param im le médiateur à associer à la vue |
*/ |
89,6 → 98,53 |
|
this.setId("x-view-mini-obs") ; |
|
// on construit le modèle de colonnes |
|
// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir) |
|
Renderer colRend = new Renderer() { |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) { |
|
return "" ; |
} |
else |
{ |
|
} |
|
return value.toString() ; |
} |
|
} ; |
|
Renderer dateRend = new Renderer() { |
|
public String render(Object value, CellMetadata cellMetadata, |
Record record, int rowIndex, int colNum, Store store) { |
|
if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) { |
|
return "" ; |
} |
else |
{ |
String dateEntiere = value.toString() ; |
String[] dateEtHeure = dateEntiere.split(" ", 2); |
if(verifierFormatDate(dateEtHeure[0])) { |
String[] dateFormateeTab = dateEtHeure[0].split("-",3); |
return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ; |
} |
} |
|
return value.toString() ; |
} |
|
} ; |
|
// on crée un store simple contenant un petit set de données et deux colonnes |
store = new SimpleStore(new String[]{"transmis","id_obs","plante","date","lieu"}, getObs()); |
ColumnConfig[] columns = { |
107,10 → 163,10 |
} |
|
}), |
new ColumnConfig("Numero", "id_obs", 50, true), |
new ColumnConfig("Taxon", "plante", 145, true), |
new ColumnConfig("Date", "date", 68, true), |
new ColumnConfig("Lieu", "lieu", 145, true) } ; |
new ColumnConfig("Numero", "id_obs", 50, true, colRend), |
new ColumnConfig("Taxon", "plante", 145, true, colRend), |
new ColumnConfig("Date", "date", 68, true, dateRend), |
new ColumnConfig("Lieu", "lieu", 145, true, colRend) } ; |
|
ColumnModel columnModel = new ColumnModel(columns); |
|
165,21 → 221,6 |
// on configure le drag 'n drop |
configDragAndDrop() ; |
|
this.addListener(new ContainerListenerAdapter() { |
|
public void onRender(Component c) { |
|
obtenirMiniListeObservations() ; |
|
} |
|
public void onAfterLayout(Container c) |
{ |
obtenirMiniListeObservations() ; |
} |
|
}) ; |
|
this.addGridListener(new GridListenerAdapter() { |
|
public void onContextMenu(EventObject e) { |
198,6 → 239,8 |
} |
|
}) ; |
|
obtenirNombreMiniListeObservations(); |
} |
|
/** |
260,6 → 303,9 |
if(this.getView() != null) |
{ |
ListeObservation data = (ListeObservation)nouvelleDonnees ; |
|
//Window.alert(data.size()+""); |
|
String[][] listeObs = new String[data.size()][5] ; |
int i = 0 ; |
|
287,12 → 333,12 |
|
public void onShow(Component c) |
{ |
obtenirMiniListeObservations() ; |
obtenirNombreMiniListeObservations() ; |
} |
|
public void onAfterLayout(Container c) |
{ |
obtenirMiniListeObservations() ; |
obtenirNombreMiniListeObservations() ; |
} |
|
}) ; |
300,6 → 346,25 |
|
} |
|
// Si on reçoit un tableau d'entiers |
// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères |
if(nouvelleDonnees instanceof int[]) |
{ |
int[] pages = (int[])nouvelleDonnees ; |
|
// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle |
pageMax = calculerNbPages(pages[0]) ; |
nbElements = pages[0]; |
|
// et on notifie de le mediateur du changement des valeurs |
changerPageMaxEtCourante(pageMax,pageEnCours,taillePage,nbElements) ; |
|
masquerChargement(); |
obtenirMiniListeObservations(); |
} |
|
redimensionner(); |
|
deMasquerChargement() ; |
|
} |
306,9 → 371,14 |
|
private void obtenirMiniListeObservations() |
{ |
iMediateur.obtenirMiniListeObservations(this) ; |
iMediateur.obtenirMiniListeObservations(this, taillePage, pageEnCours) ; |
} |
|
private void obtenirNombreMiniListeObservations() |
{ |
iMediateur.obtenirNombreMiniListeObservations(this) ; |
} |
|
/** |
* Renvoie le faux set de données pour le store |
* @return un tableau à deux colonnes int - String |
336,6 → 406,8 |
liaison = true ; |
selecteurMode.removeClass("x-selec-consult") ; |
selecteurMode.setCls("x-selec-liaison") ; |
getBarrePagination().disable(); |
doLayout(); |
} |
else |
{ |
342,7 → 414,8 |
liaison = false ; |
selecteurMode.removeClass("x-selec-liaison") ; |
selecteurMode.setCls("x-selec-consult") ; |
|
getBarrePagination().enable(); |
doLayout(); |
} |
|
masquerChargement() ; |
382,8 → 455,15 |
public String getIdSelectionnees() { |
|
Record[] sels = getSelectionModel().getSelections() ; |
String id = sels[0].getAsString("id_obs") ; |
|
String id = ""; |
|
for(int i = 0; i < sels.length; i++) { |
id += ","+sels[i].getAsString("id_obs") ; |
} |
|
id = id.replaceFirst(",", ""); |
|
return id ; |
|
} |
404,13 → 484,18 |
|
public void redimensionner() { |
if(getView() != null) { |
|
this.setWidth("100%"); |
getView().setForceFit(true); |
doLayout(); |
|
int taille = 400; |
|
if(Window.getClientHeight() > 800 ) { |
taille = Window.getClientHeight() - 350; |
} |
setHeight(taille); |
getView().setForceFit(true); |
doLayout(); |
} |
else { |
Window.alert("null"); |
|
} |
} |
|
445,7 → 530,6 |
liObs.showAt(e.getXY()); |
} |
|
@Override |
public void changerNumeroPage(int pageCourante) { |
|
pageEnCours = pageCourante ; |
452,15 → 536,97 |
masquerChargement(); |
|
// On lance le chargerment des observations |
iMediateur.obtenirMiniListeObservations(this); |
iMediateur.obtenirNombreMiniListeObservations(this); |
|
pgBar.changerPageCourante(pageCourante); |
} |
|
/** |
* Appelle le modèle pour qu'il change la taille de page utilisée |
* @param nouvelleTaillePage la nouvelle taille de page |
*/ |
|
public void changerTaillePage(int nouvelleTaillePage) |
{ |
|
taillePage = nouvelleTaillePage ; |
pageEnCours = calculerPageCourante(nbElements) ; |
|
masquerChargement(); |
|
// On lance le chargerment des observations |
iMediateur.obtenirNombreMiniListeObservations(this); |
|
|
// et on met à jour la taille de page dans les barres d'outils |
pgBar.selectionnerTaillePage(nouvelleTaillePage); |
|
|
} |
|
/** |
* Met à jour les barre d'outils avec des nouvelles valeurs |
* @param pageMax le nombre de pages |
* @param pageEncours la page en cours |
* @param taillePage la taille de page |
* @param nbElement le nombre d'élements par page |
*/ |
public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) |
{ |
|
int[] pages = {pageMax,pageEncours, taillePage, nbElement} ; |
pgBar.rafraichir(pages, false) ; |
|
} |
|
/** |
* Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page |
* en cours |
* @param nbElements le nombre d'élements total |
* @return le nombre de pages |
*/ |
public int calculerNbPages(int nbElements) |
{ |
// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement |
// pour eviter qu'il arrondisse mal la division |
// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur |
|
double nPage = (1.0*nbElements)/(1.0*taillePage) ; |
double nPageRound = Math.ceil(nPage) ; |
Double nPageInt = new Double(nPageRound) ; |
|
// on convertit en entier |
return nPageInt.intValue() ; |
} |
|
@Override |
public void changerTaillePage(int nouvelleTaillePage) { |
// TODO Auto-generated method stub |
|
/** |
* Recalcule la page en cours lors du changement du nombre d'élements |
* @param nbElements le nombre d'élements total |
* @return la nouvelle page encours |
*/ |
public int calculerPageCourante(int nbElements) |
{ |
// on calcule le nombre de page |
int nouvelNbPages = calculerNbPages(nbElements) ; |
// la nouvelle page en cours |
double nPageCourante = (1.0*pageEnCours)/(1.0*pageMax) * (1.0*nouvelNbPages) ; |
|
// on arrondit au supérieur |
double nPageRound = Math.ceil(nPageCourante) ; |
Double nPageInt = new Double(nPageRound) ; |
|
// on convertit en entier |
return Math.abs(nPageInt.intValue()) ; |
} |
|
public boolean verifierFormatDate(String date) { |
|
String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ; |
if(date.matches(regex) && !date.equals("0000-00-00")) { |
return true ; |
} |
else { |
return false; |
} |
} |
} |