-
Event clic sur combo
Bonjour,
J'ai un petit soucis que je vais vous exposer.
En fait j'ai une CCombo qui contient une liste de noms de serveurs.
Cette liste est mise à jour via une méthode updateServerList.
En fait je souhaite abonner ma combo à un évènement qui ferait un updateServerList de manière à avoir la dernière liste de serveurs.
Mon problème vient du fait que je voudrais que l'update de la liste soit fait après que j'ai cliqué sur la flêche à droite de la liste déroulante.
Ce système m'éviterait d'avoir à mettre un bouton refresh ou alors d'intercepter l'évènement MouseEnter qui rechargerait la liste trop souvent.
Si quelqu'un a une idée...
Encore Merci.
-
Salut,
Je sais que CCombo est composé d'un Text et d'un Bouton (également d'une Shell avec une liste pour afficher le contenu dans la Combo).
Essaye de voir si tu ne peux pas au niveau du bouton faire un abonnement sur le message mouseDown. A ce moment là avant l'affichage de la liste, tu la mets à jour.
Mickael
-
Alors j'ai regardé le code de CCombo, et à ta place je reprendrais
le code de ce widget en y ajoutant simplement un "getter" sur le bouton
(qui s'appelle ARROW).
Puis je ferais comme mickael (ajout d'un selectionListener sur la flèche).
Laurent
-
Ah oui c'est vrai, le problème avec CCombo et la plupart des API Eclipse, la classe est final (pas d'héritage possible) et pour enfoncer le clou les attributs sont en visibilité par défaut (visible uniquement dans le même package). Sinon il y a un autre moyen pas trop propre mais bon qui fonctionne, c'est passer par la réflexivité pour atteindre la référence de l'attribut arrow.
Je sais je sors :yaisse2:
Mickael
-
Merci messieurs.
Bon alors je suis parti bille en tête pour récupérer sur le site d'eclipse les sources du plugin SWT via mon eclipse et l'import de projet CVS.
Tout se passe bien jusque là.
Je fais la petite modif qui consiste à ajouter un getter sur l'object Button arrow.
Et là maintenant il me faut recompiler tout cela.
Le problème lorsque je recompile tout cela me crée un jar swt.jar.
Et moi je voudrais pouvoir récupérer le plugin swt complet recompilé sour la forme org.eclipse.swt.[OS].[version].jar pour pouvoir l'utiliser dans ma console eclipse RCP.
Sauriez vous comment faire ?
Merci.
-
Pourquoi es-tu obligé de reconstruire l'archive de SWT ? Tu devrais plutôt fournir un nouveau plugin avec uniquement le nouveau CCombo
As-tu au moins essayer de voir si la solution de mouseDown te satisfaisait ?
Mickael
-
Salut,
Pour ce qui est de la méthode du mouseDown que tu cites, il faut (si je ne me trompe) que je récupère l'object Button : Arrow. Et ensuite que j'abonne ce bouton au listener sur l'action mouseDown.
Et pour récupérer ce Bouton il faut ajouter le getter getArrow dans la class CCombo du plugin SWT.
C'est pourquoi je voudrais pouvoir recompiler ce plugin une fois le getter ajouté.
(à moins que je me trompe complètément ce qui est fort possible également)
Sinon j'essaie de voir comment fournir uniquement un nouveau plugin avec uniquement la class CCombo modifié mais je ne vois pas comment faire. C'est la première fois que je modifie des plugins ou crée des plugins et je suis un peu perdu...
Merci pour votre aide.
-
Par rapport à ma précédente demande, je sous entendais que tu crées ta propre classe du style CComboAToi (qui n'est en fait qu'une recopie) et tu rendes l'attribut arrow accessible.
Concernant le plugin ce n'est pas difficile. Utilises le wizard d'Eclipse et tu y places ta classe. Ne pas oublier d'exposer cette classe.
Mickael
-
Merci Mickael,
En fait j'ai fait un mélange monstre dans ma tête, quand Meddle m'a indiqué dans son post de reprendre le code de ce widget (CCombo) en y ajoutant simplement un "getter" sur le bouton je suis parti bille en tête pour modifier les sources de ce widget recompiler le tout et hop emballé pesé...
Alors que tout bêtement il suffisait de créer ma propre classe MyCCombo reprenant le code de CCombo et de l'insérer dans mon projet (comme tu me l'as conseillé dans ton dernier post).
Pour en revenir au problème que j'ai eu, j'ai donc créé ma propre class MyCCombo, j'ai recopié dedans le code de la class CCombo et j'ai ajouté le getter getArrow() qui me renvoie le bouton avec une flêche à droite de la CCombo.
Il ne me restait plus alors qu'à abonner ce bouton à un Listener sur le mouseDown et le tour est joué.
Encore merci pour ce coup de main.
Pour la partie création de plug-in je regarderais ça plus tard.