Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1195 → Rev 1196

/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/rechercheImage.css
New file
0,0 → 1,47
.zoneRecherche {
width: 100%
}
 
.moteurRecherche {
margin-bottom: 10px;
}
 
.moteurRecherche button {
margin-left: 2px;
margin-top: -1px
}
 
.labelProtocole {
padding: 0 5px 0 0;
float: left
}
 
.chapeau {
min-height:70px;
}
 
.labelProtocole:after {
content: " :"
}
 
.entrerMotClef {
margin-bottom: 10px;
}
 
.lienProposerImage {
margin-top:20px;
margin-left:70px;
margin-bottom:10px;
}
 
.lienAide {
margin-right:70px;
padding:4px 15px;
margin-top:19px;
float:right;
color:white;
}
 
.titreRecherche {
margin:0;
}
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVueMyUiBinderImplGenMessages.properties
New file
0,0 → 1,2
chapeauImages=<ul class="traitTela"><li>Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du <br /> \
Carnet en ligne... et de voter pour la qualité des images selon un protocole défini.</li></ul>
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVue.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:generateLocales="default">
 
<ui:with field='res'
type='org.tela_botanica.del.client.resources.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="rechercheImage.css" />
<g:HTMLPanel>
<g:HTMLPanel styleName="limiteMax">
<g:HTML styleName="{style.chapeau}"><ui:msg key="chapeauImages">Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du Carnet en ligne... et de voter pour la qualité des images selon un protocole défini.</ui:msg></g:HTML>
<g:Label ui:field="ajouterObservation" text="{constants.ajouterImage}" title="{constants.legendeAjouterObservation}" styleName="acceder-outil {style.lienProposerImage}"/>
<g:Anchor target="_blank" href="{constants.lienAidePictoflora}" ui:field="aide" text="{constants.accesAide}" title="{constants.legendeAjouterObservation}" styleName="acceder-aide {style.lienAide}"/>
<g:HTMLPanel ui:field="zonePartageUrl"></g:HTMLPanel>
<g:HTMLPanel styleName="importance1">
<g:Label text="{constants.rechercherImage}" styleName="titre {style.titreRecherche}" />
<g:Label text="{constants.entrerMotClef}" styleName="gris {style.entrerMotClef}" />
<g:HTMLPanel ui:field="zoneRecherche" />
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel ui:field="panneauResultats" />
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraPresenteur.java
New file
0,0 → 1,111
package org.tela_botanica.del.client.vues.pictoflora.moteur;
 
import javax.validation.Configuration;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraPresenteur;
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraVue;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Panel;
 
public class MoteurPictofloraPresenteur {
 
public interface Vue extends IsWidget {
public HasWidgets getZoneResultats();
 
public HasWidgets getZoneRecherche();
 
public void ajouterVue(HasWidgets composite);
public Panel getZonePartageUrl();
 
HasClickHandlers getLienAjoutObservation();
}
 
private Vue vue;
private ProtocoleService protocoleService;
 
/**
* Constructeur
* */
public MoteurPictofloraPresenteur(Vue vue, ProtocoleService protocoleService) {
this.vue = vue;
this.protocoleService = protocoleService;
PartageUrlPresenteur presenteurPartageUrl = new PartageUrlPresenteur(new PartageUrlVue());
presenteurPartageUrl.go(vue.getZonePartageUrl());
// TODO: le code ci dessous sert à ne pas recharger les protocoles
// à chaque fois, voir si on peut le factoriser quelque part
if (CacheClient.getInstance().getProtocoleCourant() == null) {
if (CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
 
@Override
public void surRetour(ProtocoleServiceResultat protocolesRecus) {
CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
if (protocolesRecus.getProtocoles().size() > 0) {
CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
} else {
// TODO afficher message indiquant que la liste des
// protocoles de votes n'est pas fourni
}
}
});
} else {
CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0));
}
}
gererEvenements();
}
private void gererEvenements() {
vue.getLienAjoutObservation().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("applisaisie"), "Saisie d'une nouvelle observation", null);
}
});
}
 
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
chargerMoteurRechercheAvancee();
}
 
public void chargerMoteurRechercheAvancee() {
MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
public void lancerRecherche() {
chercherImages();
}
};
presenteurRecherche.go(vue.getZoneRecherche());
}
 
public void chercherImages() {
vue.getZoneResultats().clear();
new ResultatPictofloraPresenteur(new ImageServiceConcret(), new ProtocoleServiceConcret(), new ResultatPictofloraVue()).go(vue.getZoneResultats());
}
 
public HasWidgets getZoneResultats() {
return vue.getZoneResultats();
}
}
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVue.java
New file
0,0 → 1,67
package org.tela_botanica.del.client.vues.pictoflora.moteur;
 
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.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, zonePartageUrl;
@UiField
Label ajouterObservation;
 
// Constructeur
public MoteurPictofloraVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public Panel getZonePartageUrl() {
return zonePartageUrl;
}
// 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 HasClickHandlers getLienAjoutObservation() {
return ajouterObservation;
}
 
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
 
}