Rev 1222 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.vues.pictoflora.moteur;
import java.util.List;
import org.tela_botanica.del.client.modeles.Protocole;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.OptionElement;
import com.google.gwt.dom.client.SelectElement;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
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.FlowPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
public class MoteurPictofloraVue extends Composite implements MoteurPictofloraPresenteur.Vue {
private final Panel panneauChargement = new FlowPanel();
interface MyUiBinder extends UiBinder<Widget, MoteurPictofloraVue> {
}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField
Panel panneauResultats, zoneRecherche;
@UiField
ListBox listeProtocoles;
// Constructeur
public MoteurPictofloraVue() {
initWidget(uiBinder.createAndBindUi(this));
}
public Panel getPanneauChargement() {
return panneauChargement;
}
// Cette méthode est public car appelé dans GestionnaireHistorique
public Panel getZoneResultats() {
return panneauResultats;
}
public void setPanneauResultats(Panel panneauResultats) {
this.panneauResultats = panneauResultats;
}
public HasWidgets getZoneRecherche() {
return zoneRecherche;
}
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
public void setListeProtocoles(ListBox listeProtocoles) {
this.listeProtocoles = listeProtocoles;
}
public HasChangeHandlers getListeProtocoles() {
return listeProtocoles;
}
public void ajouterProtocole(String NomProtocole, String idProtocole) {
listeProtocoles.addItem(NomProtocole, idProtocole);
}
public void selectionnerProtocole(int index) {
listeProtocoles.setSelectedIndex(index);
}
@Override
public String getNomProtocoleSelectionne() {
return listeProtocoles.getItemText((listeProtocoles.getSelectedIndex()));
}
@Override
public int getIdProtocoleSelectionne() {
return Integer.parseInt(listeProtocoles.getValue((listeProtocoles.getSelectedIndex())));
}
@Override
public void ajouterProtocoles(List<Protocole> protocoles) {
SelectElement selectElement = SelectElement.as(listeProtocoles.getElement());
NodeList<OptionElement> options = selectElement.getOptions();
// Capitalisation d'images est toujours en premier. Il a l'id 3. Oui mais,
// comme les chiens galeux qui ont codé cette appli ont placé les résultats
// dans un List et non un Map, on a accès aux éléments par leur ordre...
// qui n'est pas garanti puisque le service retourne un Objet et non un
// Tableau... sur qui on tape ?
// Du coup tant pis, on fait comme si l'ordre était garanti, on n'a pas
// le choix : Capitalisation d'Images est le 2e élément (index 1)
listeProtocoles.addItem(protocoles.get(1).getNom(), protocoles.get(1).getId()+"");
// on ajoute les autres meme si on les aime pas :P
for (int i = 0; i < protocoles.size(); i++) {
if (i != 1) { // bouuu l'astuce cracra
listeProtocoles.addItem(protocoles.get(i).getNom(), protocoles.get(i).getId()+"");
options.getItem(i).setTitle(protocoles.get(i).getDescription());
}
}
}
@Override
public void mettreAJourDescriptionProtocoleCourant(
Protocole protocoleCourant) {
listeProtocoles.setTitle(protocoleCourant.getDescription());
}
@Override
public void selectionnerProtocoleParProtocole(Protocole protocole) {
int index = 0;
for (int i = 0; i < listeProtocoles.getItemCount(); i++) {
int id = Integer.parseInt(listeProtocoles.getValue(i));
if (id == protocole.getId()) {
index = i;
}
}
listeProtocoles.setSelectedIndex(index);
}
}