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 :

Problème d'utilisation du ViewerFilter


Sujet :

SWT/JFace Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut Problème d'utilisation du ViewerFilter
    Bonjour,
    bien que sur la papier, ça semble aisé, j'avoue ne pas réussir à faire fonctionner mon ViewerFilter associé à un table Viewer.

    J'ai créé un TableViewer, et j'ai affiché sans problèmes une liste d'élements en utilisant un ILazyContentProvider, et en faisant un setContent de mon modèle (pour résumer rapidement..).

    j'ai crée le viewerFilter suivant:
    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
     
    public class MessageViewerFilter extends ViewerFilter
    {
    	String m_message = "";
     
    	public void init(String message)
    	{
    		m_message = ".*" + message + ".*";
     
    	}
     
    	@Override
    	public boolean select(Viewer viewer, Object parentElement, Object element) {
     
    		Message msg = (Message) element;
    		if(msg.getLogMessage().matches(m_message))
    		{
    			return true;
    		}
    		return false;
    	}
    Pour appliquer le filtre, j'ai fait:
    monTableViewer.addFilter(monInstanceDeMessageViewerFilter);

    J'update régulièrement le viewer avec le modèle (suivi d'un .refresh() ), mais je remarque que le filtrage ne se fait pas, et que le prog ne break jamais dans la methode 'select'.

    Il y a un secret dans l'utilisation des ViewerFilter ?

    Merci!
    Benoit

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Bon, et bien je pense que j'ai trouvé le problème:
    ILazyContentProvider et ViewerFilter, ça ne marche pas ensemble !

    La solution pour avoir à la fois du filtering et la rapidité du IlazyContentProvider consite à faire ceci:

    - Créer un tableviewer avec l'option SWT.VIRTUAL
    - Le Content provider à utiliser : IStructuredContentProvider
    Ensuite, il suffit de créer la classe de filtering et d'en passer une instance au tableviewer.

    et ça marche très bien !
    (n'hesitez pas à commenter si y a des limitations à ce que je raconte..)

    Benoit

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

Discussions similaires

  1. [RTFEditorKit] Problème d'utilisation
    Par jean.lamy dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/10/2004, 18h30
  2. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35
  3. [cvs] problèmes d'utilisation
    Par gromite dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 17h41
  4. Problème: Requête utilisant NOT IN
    Par fages dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/05/2004, 10h18
  5. problème d'utilisation avec turbo pascal 7.0
    Par le 27 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 03/12/2003, 10h44

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