/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImageVue.ui.xml |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImagePresenteur.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImageVue.java |
---|
File deleted |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java |
---|
9,18 → 9,38 |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.utils.MockDatasource; |
import org.tela_botanica.del.client.vues.rechercheimages.MoteurRechercheImage.Vue; |
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur; |
import org.tela_botanica.del.client.vues.rechercheimages.vote.MoyenneVotePresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImageVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class ImagePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public abstract void loadImage(Image image); |
public abstract HasClickHandlers getImagePrincipale(); |
public abstract HasClickHandlers getEnSavoirPlus(); |
public abstract HasClickHandlers getAjoutValidation(); |
public abstract void cacherZoneCache(); |
public abstract void afficherZoneCache(); |
public abstract HasWidgets getZoneVoter(); |
} |
private Vue vue; |
private final MockDatasource validationService = MockDatasource.getInstance(); |
private final Image image; |
private boolean detailsOpen = false; |
27,15 → 47,14 |
private Protocole protocole; |
public ImagePresenteur(Image image, Protocole protocole) { |
super(new ImageVue()); |
public ImagePresenteur(Image image, Protocole protocole, Vue vue) { |
this.image = image; |
this.protocole = protocole; |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
ImageVue vue = (ImageVue) this.getVue(); |
composite.add(vue); |
composite.add(vue.asWidget()); |
vue.loadImage(image); |
loadValidationData(); |
gererEvenements(); |
42,24 → 61,20 |
} |
private void loadValidationData() { |
ImageVue vue = (ImageVue) this.getVue(); |
List<VoteProtocole> observationValidationDatas = validationService.getVoteByImageAndProtocol(image.getIdImage(), protocole.getNom()); |
new MoyenneVotePresenteur(observationValidationDatas).go(vue.voter); |
new MoyenneVotePresenteur(observationValidationDatas).go(vue.getZoneVoter()); |
} |
@Override |
protected void gererEvenements() { |
ImageVue vue = (ImageVue) this.getVue(); |
vue.imagePrincipale.addClickHandler(new ClickHandler() { |
vue.getImagePrincipale().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
com.google.gwt.user.client.ui.Image photo = (com.google.gwt.user.client.ui.Image) event.getSource(); |
ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText())); |
ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText(), new DetailImageVue())); |
} |
}); |
vue.enSavoirPlus.addClickHandler(new ClickHandler() { |
vue.getEnSavoirPlus().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
72,7 → 87,7 |
} |
}); |
vue.ajoutValidation.addClickHandler(new ClickHandler() { |
vue.getAjoutValidation().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
82,24 → 97,14 |
} |
public void cacherDetails() { |
ImageVue vue = (ImageVue) this.getVue(); |
VerticalPanel zoneCache = vue.zoneCache; |
Label enSavoirPlus = vue.enSavoirPlus; |
zoneCache.setVisible(false); |
vue.cacherZoneCache(); |
detailsOpen = false; |
} |
public void afficherDetails() { |
ImageVue vue = (ImageVue) this.getVue(); |
ResultatRechercheImagePresenteur.getInstance().fermerTousPanneauxDetailsObservations(); |
vue.afficherZoneCache(); |
VerticalPanel zoneCache = vue.zoneCache; |
Label enSavoirPlus = vue.enSavoirPlus; |
zoneCache.setVisible(true); |
detailsOpen = true; |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.java |
---|
1,9 → 1,11 |
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images; |
import com.google.gwt.core.client.GWT; |
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.HasWidgets; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.Label; |
10,7 → 12,7 |
import com.google.gwt.user.client.ui.VerticalPanel; |
import com.google.gwt.user.client.ui.Widget; |
public class ImageVue extends Composite { |
public class ImageVue extends Composite implements ImagePresenteur.Vue { |
// Annotation can be used to change the name of the associated xml file |
// @UiTemplate("ObservationVue.ui.xml") |
39,8 → 41,20 |
initWidget(uiBinder.createAndBindUi(this)); |
} |
protected void loadImage(org.tela_botanica.del.client.modeles.Image image) { |
public HasWidgets getZoneVoter() { |
return voter; |
} |
public void cacherZoneCache() { |
zoneCache.setVisible(false); |
} |
public void afficherZoneCache() { |
zoneCache.setVisible(true); |
} |
public void loadImage(org.tela_botanica.del.client.modeles.Image image) { |
zoneCache.setVisible(false); |
nomEspece.setText(image.getObservation().getSpecies()); |
nomAuteur.setText(image.getObservation().getAuteur()); |
56,4 → 70,19 |
} |
@Override |
public HasClickHandlers getImagePrincipale() { |
return imagePrincipale; |
} |
@Override |
public HasClickHandlers getEnSavoirPlus() { |
return enSavoirPlus; |
} |
@Override |
public HasClickHandlers getAjoutValidation() { |
return ajoutValidation; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java |
---|
8,6 → 8,7 |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur; |
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur; |
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
24,22 → 25,16 |
} |
public void go(HasWidgets composite) { |
composite.add(vue); |
createPaginationWidget(CacheClient.getInstance().getImages().size()); |
reactualiserImagesEtMoyenneVoteProtocole(0, CacheClient.getInstance().getPaginationPasRechercheImage()); |
actualiserImagesEtMoyenneVoteProtocole(0, CacheClient.getInstance().getPasPagination()); |
} |
private void reactualiserImagesEtMoyenneVoteProtocole(int premier, int dernier) { |
private void actualiserImagesEtMoyenneVoteProtocole(int premier, int dernier) { |
// Remise à zéro du panneau d'affichage et des composants |
vue.nettoyer(); |
// TODO : créer une méthode globale pour l'application ? voir |
// superclasse présenteur ? |
// FIXME : ne s'affiche pas |
vue.startChargement(); |
List<Panel> panneauxImagesAffichees = new ArrayList<Panel>(); |
List<Image> imagesAffichees = CacheClient.getInstance().getSousListeImages(premier, dernier); |
vue.creerPanneauxObservations(imagesAffichees.size()); |
47,7 → 42,7 |
Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator(); |
for (Image image : imagesAffichees) { |
Panel imagePanel = panelIterator.next(); |
ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant()); |
ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue()); |
imagePresenteur.go(imagePanel); |
panneauxImagesAffichees.add(imagePanel); |
observationPresenteurs.add(imagePresenteur); |
68,17 → 63,17 |
private void createPaginationWidget(int nbImages) { |
PaginationPresenteur pagination = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPaginationPasRechercheImage()) { |
PaginationPresenteur pagination = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) { |
@Override |
public void changerPage(int debut, int fin) { |
showImagePanels(debut, fin); |
CacheClient.getInstance().setNumPageRechercheImage(getPageCourante()); |
CacheClient.getInstance().setPageCouranteRecherche(getPageCourante()); |
} |
@Override |
public void actualiserPasCache(int pas) { |
CacheClient.getInstance().setPaginationPasRerchercheImage(pas); |
CacheClient.getInstance().setPasPagination(pas); |
} |
}; |
pagination.go(vue.getPanneauPagination()); |
85,7 → 80,7 |
} |
public void showImagePanels(int first, int last) { |
reactualiserImagesEtMoyenneVoteProtocole(first, last); |
actualiserImagesEtMoyenneVoteProtocole(first, last); |
} |
public ResultatRechercheImageVue getView() { |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/MoteurRechercheImage.java |
---|
New file |
0,0 → 1,113 |
package org.tela_botanica.del.client.vues.rechercheimages; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage; |
import org.tela_botanica.del.client.services.rest.ProtocoleService; |
import org.tela_botanica.del.client.utils.MockDatasource; |
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.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.event.dom.client.KeyCodes; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class MoteurRechercheImage { |
public interface Vue extends IsWidget { |
public abstract void ajouterProtocole(String protocole); |
public abstract void selectionnerProtocole(int index); |
public abstract HasClickHandlers getBoutonChercher(); |
public abstract HasKeyPressHandlers getChampEspece(); |
public abstract HasChangeHandlers getListeProtocoles(); |
public abstract HasWidgets getZoneResultats(); |
public abstract String getValeurEspece(); |
} |
private Vue vue; |
// private final ImageService imageService = MockDatasource.getInstance(); |
private final ProtocoleService protocoleService = MockDatasource.getInstance(); |
private List<Protocole> protocoles; |
//TODO : passer ça en cache |
private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE; |
/** |
* Constructeur |
* */ |
public MoteurRechercheImage(Vue vue) { |
this.vue = vue; |
if (CacheClient.getInstance().getProtocoleCourant() == null) { |
CacheClient.getInstance().setProtocoleCourant(protocoleService.getProtocole(protocoleParDefaut)); |
} |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
gererEvenements(); |
chargerProtocoles(); |
} |
private void chargerProtocoles() { |
protocoles = protocoleService.getProtocoles(); |
for (Protocole protocole : protocoles) { |
vue.ajouterProtocole(protocole.getNom()); |
} |
vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant())); |
} |
public void gererEvenements() { |
vue.getBoutonChercher().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
lancerRechercheImage(); |
} |
}); |
vue.getChampEspece().addKeyPressHandler(new KeyPressHandler() { |
public void onKeyPress(KeyPressEvent event) { |
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) { |
lancerRechercheImage(); |
} |
} |
}); |
vue.getListeProtocoles().addChangeHandler(new ChangeHandler() { |
@Override |
public void onChange(ChangeEvent event) { |
Protocole protocoleCourant = (Protocole) event.getSource(); |
EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant); |
BusEvenementiel.getInstance().fireEvent(evenement); |
} |
}); |
} |
public void lancerRechercheImage() { |
CacheClient.getInstance().setEspeceRecherche(vue.getValeurEspece()); |
BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage()); |
} |
public HasWidgets getZoneResultats() { |
return vue.getZoneResultats(); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/MoteurRechercheImageVue.java |
---|
New file |
0,0 → 1,87 |
package org.tela_botanica.del.client.vues.rechercheimages; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FlowPanel; |
import com.google.gwt.user.client.ui.HasText; |
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.TextBox; |
import com.google.gwt.user.client.ui.VerticalPanel; |
import com.google.gwt.user.client.ui.Widget; |
public class MoteurRechercheImageVue extends Composite implements MoteurRechercheImage.Vue { |
private final VerticalPanel mainPanel = new VerticalPanel(); |
private final Panel panneauChargement = new FlowPanel(); |
interface MyUiBinder extends UiBinder<Widget, MoteurRechercheImageVue> {} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
@UiField TextBox nomEspece; |
@UiField Panel panneauResultats; |
@UiField Button boutonChercher; |
@UiField Label protocoleLabel; |
@UiField ListBox listeProtocoles; |
// Constructeur |
public MoteurRechercheImageVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
nomEspece.setFocus(true); |
} |
public Panel getPanneauChargement() { |
return panneauChargement; |
} |
public void setListeProtocoles(ListBox listeProtocoles) { |
this.listeProtocoles = listeProtocoles; |
} |
public void setProtocoleLabel(Label protocoleLabel) { |
this.protocoleLabel = protocoleLabel; |
} |
// Cette méthode est public car appelé dans GestionnaireHistorique |
public Panel getZoneResultats() { |
return panneauResultats; |
} |
public void setPanneauResultats(Panel panneauResultats) { |
this.panneauResultats = panneauResultats; |
} |
public HasClickHandlers getBoutonChercher() { |
return boutonChercher; |
} |
public HasKeyPressHandlers getChampEspece() { |
return nomEspece; |
} |
public HasChangeHandlers getListeProtocoles() { |
return listeProtocoles; |
} |
public void ajouterProtocole(String protocole) { |
listeProtocoles.addItem(protocole); |
} |
public void selectionnerProtocole(int index) { |
listeProtocoles.setSelectedIndex(index); |
} |
public String getValeurEspece() { |
return nomEspece.getText(); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/MoteurRechercheImageVue.ui.xml |
---|
New file |
0,0 → 1,26 |
<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:with field='res' type='org.tela_botanica.del.client.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="rechercheImage.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="{style.observationsRecherche}"> |
<g:Label text="{constants.rechercherImage}" styleName="titre" /> |
<g:HorizontalPanel styleName="{style.moteurRecherche}"> |
<g:TextBox ui:field="nomEspece" text="apifera"/> |
<g:Button text="{constants.rechercherTaxon}" ui:field="boutonChercher" /> |
<g:Label ui:field="protocoleLabel" text="{constants.protocole}" styleName="{style.labelProtocole}"/> |
<g:ListBox ui:field="listeProtocoles" /> |
</g:HorizontalPanel> |
<g:Label text="{constants.entrerMotClef}" styleName="gris" /> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="panneauResultats" /> |
</g:HTMLPanel> |
</ui:UiBinder> |