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

Eclipse Platform Discussion :

Selection dans un Tableau


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut Selection dans un Tableau
    Bonjour,

    Encore un petit soucis sur un projet Eclipse RCP ..
    Dans une de mes vues, j'affiche un tableau :
    table = new Table(top, SWT.CHECK | SWT.FULL_SELECTION);

    J'ai ajouté 2 listener dessus ..

    - le premier pour le check
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    table.addListener(SWT.Selection, new Listener() {
    			public void handleEvent(Event event) {
    				if (event.detail == SWT.CHECK) {
    					isOriginal();
    				}
    			}
    		});
    - le second pour la selection d'une ligne pour ouvrir un message d'information complémentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    table.addSelectionListener(new SelectionListener(){
    			public void widgetDefaultSelected(SelectionEvent arg0) {
    			}
    			public void widgetSelected(SelectionEvent arg0) {
    				if (arg0.detail != SWT.CHECK) {
    					MessageDialog.openInformation();
    				} 
    			}
    		});
    Le problème que je rencontre est que lorsque je coche la case d'une ligne déjà sélectionnée, il effectue les 2 .. Alors que moi dans ce cas, je souhaiterais qu'il ne prenne en compte que le check .. Si quelqu'un a déjà rencontré ce problème, ou si tout simplement quelqu'un à une idée ..

    Je précise que j'ai déjà essayé pas mal de méthodes avant de poster sur le forum, mais rien y fait .. j'ai aussi regardé les détails de ARG0 mais je ne trouve rien de probant.


    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Par défaut
    ça ne fonctionne pas ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    table.addListener(SWT.Selection, new Listener() {
    			public void handleEvent(Event event) {
    				if (event.detail == SWT.CHECK) {
    					isOriginal();
    				}
                                     else{
                                            MessageDialog.openInformation();
                                    }
    			}
    		});

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut
    Non ça ne marche, c'est la première solution que j'avais adoptée ..
    En fait, il voit les 2 à la fois .. car la ligne cochée est également sélectionnée

  4. #4
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    Salut,

    addListener(SWT.Selection... et addSelectionListener ... c'est exactement la même chose, c'est pour ca qu'il passe dans les deux. En fait quand tu fait un addSelectionListener, ca fait un addListener(SWT.Selection ...

    Donc tu ne déclare qu'un listener et que tu fait un switch (c un peu mieux que des if imbriqués je pense), tu peux faire par exemple :

    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
    addSelectionListener(new SelectionAdapter(){
    			public void widgetDefaultSelected(SelectionEvent arg0) {
    			}
    			public void widgetSelected(SelectionEvent arg0) {
    			    switch (arg0.detail) {
    				case SWT.CHECK:
    					// Action du chek
    					break;
    				....autres case
    					break;
    				default:
    					//Action autre par défaut
    					break;
    				}
     
    			}
    		});

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut
    Salut,

    Oui c'est vrai que c'est plus propre de faire un Switch avec plusieurs choix que des if imbriqués

    Mais j'ai toujours le même soucis avec le Switch ..
    J'avais déjà essayé en ne faisant qu'un seul listener, le problème est qu'il faisait 3 choses .. il ouvrait la boite de dialogue, cochait la case et ouvrait une deuxième boite de dialogue ..
    En utilisant 2 listener, il n'ouvre qu'une seule boite de dialogue, voila pourquoi j'en ai mis 2 ..

    En fait, le fond du problème est que je n'arrive pas à détécter une sélection .. Pour le check pas de soucis, avec un SWT.CHECK ça marche parfaitement, mais j'ai beau essayer de voir avec un SWT.SELECTED ou un SWT.SELECTION, rien ne marche !
    Voila pourquoi j'ai un deuxième listener qui ne se déclenche que si l'évènement est diffèrent d'un SWT.CHECK

    En tout cas, merci pour vos contributions !

  6. #6
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    Ben oui, mais.... si tu fais d'abord ton case sur le check et que tu n'oublie pas le break, tu met dans defaut ce que tu veux que ca fasse si ce n'est pas un check, il n'y a pas de raison qu'il fasse les deux actions

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut
    voila un exemple de code ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    table.addSelectionListener(new SelectionListener(){
    			public void widgetDefaultSelected(SelectionEvent arg0) {
    			}
    			public void widgetSelected(SelectionEvent arg0) {
    				switch (arg0.detail) {
    					case SWT.CHECK : 
    						System.out.println("check..");
    						break;
    					default :
    						System.out.println("sélection..");
    				} 
    			}
    		});


    et voila ce qu'on obtient :

    => sélection d'une ligne
    sélection..

    => je coche la case de la ligne sélectionnée
    sélection..
    check..

    => je décoche la case de la ligne sélectionnée
    sélection..
    check..


    Je suis également très étonné du résultat obtenu .. et c'est pourquoi je post sur le forum pour avoir une solution ..

  8. #8
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    Effectivement, je viens de le faire en debug, si tu check une ligne déja selectionné, il lance deux evenements, d'abord la selection et ensuite le check....

    Bizarre autant qu'étrange , donc le switch n'est pas en cause (ni le if d'ailleurs)...

    mmmmm (intense reflexion ) la je seche....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 21h18
  2. select dans un tableau
    Par gentelmand dans le forum Langage
    Réponses: 4
    Dernier message: 27/07/2010, 07h17
  3. [PLSQL] - Retour d'un select dans un tableau
    Par toxycyty dans le forum SQL
    Réponses: 13
    Dernier message: 27/06/2008, 15h29
  4. Mettre le résultat d'un select dans un tableau
    Par adham84 dans le forum SQL
    Réponses: 3
    Dernier message: 24/04/2008, 12h51
  5. [sgbd] Recuperer valeurs d'un Select dans un tableau
    Par Mu_Belier dans le forum SGBD
    Réponses: 16
    Dernier message: 27/05/2005, 15h46

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