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

SWT/JFace Java Discussion :

TableViewer changement de sélection


Sujet :

SWT/JFace Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur en apprentissage
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut TableViewer changement de sélection
    Bonjour tout le monde,

    J'ai un petit souci et j'aurais besoin d'aide.

    J'ai un tableviewer dans un Master/Details block. Dans ma master part beaucoup de nouveaux items l'updatent très rapidement. Mes detail pages affichent les infos de l'item sélectionné. J'aimerais que celles-ci soient persistantes et notifiées seulement en cas de changement de sélection.

    Mon problème est que quand un nouvel item est ajouté au tableviewer, la sélection change automatiquement.

    Des idées ?
    Merci

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Peux-tu nous donner la façon dont tu affiches la partie details? Ainsi que la façon dont tu mets à jour ton Viewer d'ailleurs.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur en apprentissage
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    J'ai une classe Observable qui détient une liste d'évènements qui me sert de modèle. Plusieurs handlers ajoutent des évènements à cette liste de façon synchronisée.

    Le ContentProvider du TableViewer se sert de cette liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Override
    public Object[] getElements(Object inputElement) {
         if (inputElement instanceof IDicoMessageEvent)
              return ((IDicoMessageEvent)inputElement).getMsgEventsArray();
         return new Object[0];
    }
    La classe Observable notifie ses Observers une fois la liste mise à jour.
    Le Master/Details block est un de ces Observer.

    Lorsque la sélection change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    _eventTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
             @Override
             public void selectionChanged(SelectionChangedEvent event) {
                  managedForm.fireSelectionChanged(spart, event.getSelection());
    });
    Les details pages sont bien registered.

    Le souci se situe au niveau du TableViewer. Lorsque je sélectionne un event et qu'un autre est ajouté, la sélection change car elle reste sur la même ligne.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur en apprentissage
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Cela vient du fait que mon TableViewer est SWT.VIRTUAL. Donc la sélection se fait sur l'index dans la table.
    Si j'enlève l'option SWT.VIRTUAL la sélection reste sur l'élément que j'ai sélectionné.

    Mais le problème c'est que mon TableViewer DOIT rester SWT.VIRTUAL parce qu'il contient tellement de données que les stocker de façon non virtuelle fait chuter grandement les performances de mon application.

    Personne n'a jamais été confronté à ce problème ?

  5. #5
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Tu peux modifier ton ContentProvider. Dans la méthode inputChanged(), tu peux récupérer la sélection courante pour la remettre une fois la mise à jour finie.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur en apprentissage
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci pour ta réponse. Malheureusement la méthode inputChanged() n'est appelée que lors de l'exécution des méthodes suivantes :
    setInput(), setContentProvider() et dispose().
    J'ai donc récupéré le ContentProvider pour l'appeler.

    Mais je souhaite agir sur ma sélection au moment de la mise à jour avant que la sélection ne change toute seule sinon j'ai 2 changements de sélection ce qui est encore pire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur en apprentissage
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Points : 10
    Points
    10

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2015, 20h09
  2. Réponses: 7
    Dernier message: 04/12/2012, 22h11
  3. QListView changement de sélection
    Par robert.tari dans le forum Débuter
    Réponses: 6
    Dernier message: 10/09/2010, 16h23
  4. Changement de sélection sur combobox
    Par norea dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 27/06/2009, 02h06
  5. Réponses: 5
    Dernier message: 13/02/2008, 11h15

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