Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité régulier
    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 : 8
    Points
    8

    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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
    Invité régulier
    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 : 8
    Points
    8

    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 :
    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 :
    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
    Invité régulier
    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 : 8
    Points
    8

    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
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro Marc
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Nom : Homme Marc
    Âge : 30
    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 778
    Points
    3 778

    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
    Invité régulier
    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 : 8
    Points
    8

    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
    Invité régulier
    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 : 8
    Points
    8

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •