IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

Raffrachissment onglet TabPanel


Sujet :

GWT et Vaadin Java

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut Raffrachissment onglet TabPanel
    Bonjour,

    Mon problème est le suivant : j'utilise un TabPanel avec un onglet centrale entouré d'un onglet "-" et d'un onglet "+". J'utilise un TabPanelListenerAdapter pour que lorsque je clique sur "+", mon onglet du milieu s'incrémente de 1 et vice versa avec le "-".

    L'action sur le + et le - met à jour le contenu de mon onglet (SELECT en base de données) et c'est la que j'ai un bogue. En effet, lorsque je clique sur + ou - je n'ai pas un clic mais 4 clics qui sont enregistrés dans mon listener.

    Ce qui entraine que je n'ai pas d'affichage de mes données. De même lorsque je reste cliqué, les données s'affichent et lorsque je relache elles disparaissent. (reproductible mais pas toujours)

    Quelqu'un aurait-il déjà eu ce problème?

    Merci


    PS : petite remarque : lorsque je redimensionne la fenêtre de mon appli, les données apparaissent...

    Merci

  2. #2
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    J'ai réussi à afficher mes données mais j'ai remarqué que le relachement du clic est pris en compte aussi... Du coup je navigue par pas de 2 sur mes onglets. Y'a t-il un moyen de ne capter qu'un seul clic?

    Merci

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par CcHhUu Voir le message
    J'ai réussi à afficher mes données mais j'ai remarqué que le relachement du clic est pris en compte aussi... Du coup je navigue par pas de 2 sur mes onglets. Y'a t-il un moyen de ne capter qu'un seul clic?

    Merci
    essaye d'utiliser ChangeListener et la méthode stateChanged()
    mais attention ,lors de l'ouverture de ta fenêtre ,il y aura appel a cette méthode

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Malheureusement j'utilise le TabPanel de gwt-ext et le ChangeListener ne peut apparement pas s'y appliquer.

    Sinon j'ai finalement réussi à afficher mes données avec une petite bidouille (:S).

    Mais maintenant j'ai un autre problème parce que je veux faire un rafraichissement automatique de mon onglet où j'affiche les données.
    J'ai donc créé un Timer avec dedans l'appel à ma méthode qui va récupérer les données rafraichies à afficher. Avec des sysout je vois bien que les données sont rafraichies mais lors de la mise à jour de l'onglet les données ne s'affichent pas directement. Il faut que je redimensionne la fenêtre pour les voir apparaitre.. :S

    Merci

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Mon problème est toujours d'actualité. J'ai essayé de re-sélectionner l'onglet après l'avoir remplit mais rien n'y fait.
    j'ai toujours un onglet vide lors de la mise à jour et l'apparition des données lorsque je redimensionne ma fenêtre.

    Merci pour votre aide

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Tes données sont coté serveur ?
    Je crois que le serveur ne peux pas envoyer des infos coté client.
    Tu peux essayer de voir ce que tu peux faire avec un pattern observer ? Mais je ne sais pas si ca s'appliquera coté client et coté serveur..

    Quelle opération fais-tu lors d'un resize ?

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Mon resize je le fais avec ma souris .
    La mise à jour des données fonctionne. J'ai bien mon objet qui est remplis c'est juste l'affichage qui ne se fait pas.
    Et le plus bizarre c'est que j'ai mis un bouton avec un listener pour forcer la mise à jour et là l'affichage s'effectue bien...

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Ton resize a forcément du code pour savoir quoi faire...
    Ton problème, c'est que tu fais tes modifications coté serveur, et le client n'est pas averti de ces modifications.

    Lorsque tu resize ou que tu cliques sur le bouton, tu avertis le client qu'il y a eu une modification. Donc il met à jour

  9. #9
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Je suis d'accord que le fait de redimensionner une fenêtre manuellement possède un morceau de code mais il s'agit d'un redimensionnement classique comme lorsque tu redimensionnes n'importe quelle autre fenêtre.

    (J'ai aussi testé lorsque je réduis la fenêtre et que je l'agrandis de nouveau et ça a le même effet que le redimenssionnement == affichage)

    La mise à jour automatique possède exactement le même code que ma mise à jour manuelle (j'ai même mis mon listener dans une classe à part et pour faire la mise à jour auto j'ai essayé de lancer le onTabChange() du listener et l'affichage de mon objet reste vide)

    Comment est ce que je peux "avertir" mon objet?

    Merci

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Il existe le Design Pattern "Observer" mais je ne garantie pas qu'il puisse être implémentable d'un client vers un serveur. (ou inversement)
    Tu peux chercher dans cette voie

    Actuellement, qu'est-ce qui est sensé déclencher la mise à jour automatique ?

  11. #11
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Dans mon entrypoint j'ai mis un timer qui se déclenche toutes les 90 secondes et qui appel une méthode distante via RPC et qui me renvoi mes données rafraichies et enfin met à jour mon onglet.

  12. #12
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Est-ce que le timer est bien appelé ?
    Sinon, je ne vois pas..

  13. #13
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    J'ai finalement réussi avec une bidouille. A la place d'exécuter la méthode qui met à jour mes données. Je fais un setActiveTab du bouton qui me sert à la mise à jour manuelle. Ceci entraine l'appel au listener et fais la mise à jour.
    C'est pas très beau mais ça fonctionne.

  14. #14
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 375
    Par défaut
    Tu peux me montrer ta méthode qui met à jour et où elle est appelée stp

  15. #15
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Par défaut
    Dans ma classe qui implémente EntryPoint :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public void onModuleLoad() 
      	{ 
             .....
            Timer timer_rapide = new Timer() 
                  { 
                  AsyncCallback<List<String[]>> callback_jeu_tache_a_faire = new AsyncCallback<List<String[]>>() 
    	                  {  
    	            	  //objet à rafraichir
    	                  public void onSuccess(List<String[]> result)
    	                  	{
           	           		ListeTaches.onglet_aujourdhui.clear();
    	            		ListeTaches.setListeTaches(liste_filtree);
     
    				//modification de l'onglet du milieu
    	            	        ListeTaches.onglet_aujourdhui
                                                   .setTitle(ListeTaches.jour_visible);
     
    	            		ListeTaches.listetaches.setActiveTab(3);
     
    	                  	}  
     
     
     
                  public void run() 
    		              	{            
                                    Application.getServicesDistantsInstance()
                                         .connexionBDD(callback_jeu_tache_a_faire );
     
                                    }  
                  }

Discussions similaires

  1. 2 grid dans des onglets (tabPanel) c'est possible!?
    Par beben06 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 15/09/2010, 14h55
  2. Cacher onglet tabpanel
    Par BqiKo dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 29/04/2010, 18h19
  3. Taille onglet tabPanel
    Par BqiKo dans le forum Ext JS / Sencha
    Réponses: 7
    Dernier message: 29/04/2010, 11h39
  4. Réponses: 4
    Dernier message: 18/08/2009, 10h35
  5. Gestion des clicks sur les onglets d'un TabPanel
    Par Erwan62 dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 11/06/2009, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo