|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2012 Messages : 10 ![]() |
Bonjour
Je suis (toujours) novice sur Eclipse (Indigo). Je viens de découvrir AdapterFactory. J'ai utilisé ce dernier pour alimenter la PropertyPage de ma Perspective. Maintenant, je souhaiterias ajouter un 2eme "écouteur" (ie un 2eme adapter) pour alimenter une autre vue contenant un treeviewer. Pour cela, j'ai déclarativement rajouter un adapter dans ma AdapterFactory. Mais la classe passée à getAdapter de ma Factory est toujours IPropertySource. Je ne vois jamais la classe de mon second adapter. J'ai surement loupé quelque chose, mais quoi ? Avez-vous une idée ? Merci d'avance |
|
|
00
|
|
|
#2 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 564 ![]() |
Salut,
J'ai pas vraiment tout compris à ton histoire Je ne sais pas si tu l'as déjà fait, mais je te conseille la lecture de cet article sur les adapters. De ce que j'ai compris, tu souhaites avoir une factory qui te permet d'adapter 2 types de classes. Pour moi, il te faut créer une extension org.eclipse.runtime.adapters avec 2 extensions factory: Code :
Voilà, à+ Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça. Le 5 et 6 juin à Toulouse, la première EclipseCon France ! |
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
Bonjour,
A ce que j'ai compris tu as un seul objet métier et tu veux qu'il s'affiche dans deux vues différentes : - La vue propriétés - Ta nouvelle vue Pour faire ça tu utilises un AdapaterFactory qui répond à deux classes : - IPropertySource.class pour les propriétés - TaClasse.class pour ta nouvelle vue Si c'est bien ce que tu veux faire, as tu bien retourné dans ton AdapterFactory dans la méthode getAdapterList : Code :
return new Class[] {IPropertySource.class, TaClasse.class}; après c'est à ta nouvelle vue d'appeler tonObjetMetier.getAdapter(TaClasse.class) afin de se remplir. |
|
|
10
|
|
|
#4 | |||
|
Invité de passage
![]() Inscription : août 2012 Messages : 10 ![]() |
Citation:
sam9722, tu as bien compris mon besoin. Cela étant dit, mon AdapterFactory renvoie bien les 2 classes: Code :
Pourrais-tu détailler s'il te plait? Les exemples avec IPropertySource sont légions sur le web. Ceux avec des adapters "custom" beaucoup moins Merci d'avance. |
|||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
sqlTreeItemPlan est ton objet métier à adapter, il doit implémenter l'interface IAdaptable avec quelque chose de cette forme :
Code :
Pour obtenir cet objet dans ta vue tu appeles la méthode : Code :
SqlTreeItemPlanAdapter3Adapter o = (SqlTreeItemPlanAdapter3Adapter) sqlTreeItemPlan.getAdapter(Adapter3.class); Code :
SqlTreeItemPlanAdapter3Adapter o = (SqlTreeItemPlanAdapter3Adapter)Platform.getAdapterManager().getAdapter(sqlTreeItemPlan, Adapter3.class); Si ce n'est pas ce que tu fais peux tu expliquer comment fonctionne ta vue? |
||
|
|
10
|
|
|
#6 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 564 ![]() |
Effectivement, ta factory doit ressembler à ça.
Après, dans ta classe adaptable, ta méthode getAdapter(Class adapter) doit être: Code :
Voilà, à+ Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça. Le 5 et 6 juin à Toulouse, la première EclipseCon France ! |
||
|
|
00
|
|
|
#7 | |||||
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
Citation:
Code :
|
|||||
|
|
00
|
|
|
#8 | ||||
|
Invité de passage
![]() Inscription : août 2012 Messages : 10 ![]() |
oui mon plugin.xml ressemble à cela :
Code :
Code :
Je commence à saturer pour aujourd'hui... ![]() a+ |
||||
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
A priori c'est parce que tu ne l'appeles pas, tu devrais avoir ce code là dans ta vue :
Code :
SqlTreeItemPlanAdapter3Adapter o = (SqlTreeItemPlanAdapter3Adapter) sqlTreeItemPlan.getAdapter(Adapter3.class); |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : août 2012 Messages : 10 ![]() |
pour l'instant, la vue ne fait que çà:
Code :
a+ |
||
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
lorsque l'execution arrive sur l'instruction
Code :
Platform.getAdapterManager().getAdapter(SqlTreeItemPlan.getInstance(), Adapter3.class); Si ce n'est pas le cas c'est parce que ta factory n'a pas pu être trouvée : - tu n'executes pas eclipse mais un programme java (la définition de la factory n'est donc pas chargée) - ta factory n'a pas de constructuteur public sans paramètre - tu n'as pas définit le bon package dans ton plugin pour ta factory - tu as une autre factory qui répond - SqlTreeItemPlan.getInstance() est null - awrgraph.SqlTreeItemPlan est dans un autre package que SqlTreeItemPlan.getInstance() - awrgraph.Adapter3 est dans un autre package que Adapter3.class |
|
|
10
|
|
|
#12 | |
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 564 ![]() |
Citation:
Selon moi, tout est bon. Après, dans un autre registre, je tenais à dire qu'il vaut mieux utiliser la forme Platform.getAdapterManager().getAdapter() plutôt que monObjectMetier.getAdapter(). La première utilisation à le mérite d'enlever le couplage entre la classe métier et la classe IAdaptable. Voilà, à+ Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça. Le 5 et 6 juin à Toulouse, la première EclipseCon France ! |
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : août 2012 Messages : 10 ![]() |
hello
Grâce à vos posts, j'ai pu avancer sur le sujet, avec succès : Le pb venait bien de SqlTreeItemPlan.getInstance(). ![]() J'ai rajouté dans le createPartControl de ma nouvelle vue : Code :
getSite().getPage().addSelectionListener((ISelectionListener) this); Code :
lAdapter = (SqlTreeItemPlanAdapter3Adapter) Platform.getAdapterManager().getAdapter(((TreeSelection)selection).getFirstElement(), Adapter3.class); Je me rends compte de plus en plus de ma méconnaissance des frameworks dans Eclipse. A part develoopez , auriez-vous des références (web ou bouquin, français ou anglais) pour un débutant comme moi ?Encore merci pour votre aide. |
|
|
00
|
|
|
#14 |
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 564 ![]() |
Salut,
Sur le sujet, je peux te citer eclipsetotale (site francophone), planet eclipse (blog anglophone qui recense pas mal d'articles), le site de Prakash G.R. Eclipse Tips ou encore le site de Lars Vogel qui est une mine d'informations Voilà, à+ Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça. Le 5 et 6 juin à Toulouse, la première EclipseCon France ! |
|
|
00
|
|
|
#15 | |
|
Membre du Club
![]() Inscription : juillet 2012 Messages : 32 ![]() |
Citation:
eclipse : http://wiki.eclipse.org/The_Official_Eclipse_FAQs rcp : http://wiki.eclipse.org/RCP_FAQ je te conseille de survoler les questions pour avoir un apperçu de ce qui existe dans eclipse et des problèmes que tu pourras renconter, ça te fera sûrement gagner beaucoup de temps au final. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com