Bonjour à tous,

Avant toute chose, je suis dans un projet RCP sous eclipse 3.2 mais je n'ai pas posté dans le forum RCP car je pense que mon problème provient plus de SWT. Ne pas hésiter en cas de mauvais placement à le déplacer

Voici mon cas :

J'ai un tableau qui est écouté par deux événements :
- Un selectionListener
- Un MouseDoubleClick

Mon selectionListener me permet de lancer des traitements. Et ces traitements doivent être lancés tout le temps même si l'on re-clic sur la même ligne.
Mon MouseDoubleClick listener doit ouvrir une fenêtre.

Les traitements lancés prennent un certain temps,donc nous avons mis un job de façon à spécifier à l'utilisateur que quelque chose se passe.

Mon problème est le suivant :

Quand je double clic sur une ligne du tableau, le selectionListener catch ma sélection et lance mes traitements (jusque là tout va bien) et donc lance mon job (c'est là qu'est le souci). En résultat mon événement mouseDoubleClick n'est pas catcher...

J'ai donc chercher à comprendre se qui se passait et j'ai fait plusieurs tests :
J'ai mis bêttement des system.out.println dans mes listener pour voir quand ils y passaient

  1. J'ai d'abord pensé que la perte de mon doubleClick était lié à la priorité des listeners, J'ai donc affecté à mon tableau mon événement doubleClick en premier et le selectionListener en deuxième : ceci n'a rien changé.
    On passe dans le selectionListener
    On ne passe pas dans le mouseDouvleClickListener
  2. J'ai ensuite pensé que la perte de mon doubleClick était lié au temps engendré par mes traitements. J'ai donc supprimé mon job et mis un Thread.sleep(10000) à la place dans le but de simuler le temps passé par mon job pour vérifier mon test. Là ma fenêtre s'est ouverte...
    On passe dans le selectionListener
    On passe dans le mouseDouvleClickListener
  3. J'ai donc commencé à chercher du côté de l'ouverture de mon job. J'ai donc mis à la place de mon job, un messageDialog classique. Là ma fenêtre ne s'est pas ouverte.
    On passe dans le selectionListener
    On ne passe pas dans le mouseDouvleClickListener
  4. Je me suis dit que la perte du double clic pouvait provenir de la perte de focus. Et donc j'ai intercepté en plus le FocusOut sur mon tableau et j'ai annulé c'est événement en gardant mon job. Là ma fenêtre ne s'est pas ouverte...
    On passe dans le selectionListener
    On ne passe pas dans le mouseDouvleClickListener


Le problème provient donc de l'ouverture d'une fenêtre supplémentaire entraînant la perte de mon événement double clic...

En attendant, on met un sablier à la place de la souris pour que ça passe...

Est ce que quelqu'un aurait une idée pour contourner ce bug ?
Merci d'avance