|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Membre Expert
![]() |
Bonjour,
Je débute dans le développement d'application RCP et j'ai une question sans doute simple, mais qui me pause beaucoup de problèmes. Pour faire simple : A gauche j'ai un TreeViewer, à droite j'ai des onglets (ViewPart). Depuis l’arbre, l'utilisateur peut créer un nouvel onglet, lequel a besoin d'informations qui lui seront données par la sélection de l'utilisateur. Le TreeViewer est créé avec des TreeObject qui représentent des fichiers et des TreeParent qui représentent des dossiers. L'utilisateur peur sélectionner un TreeParent dans le TreeViewer et créer un onglet grâce aux informations contenues dans ce TreeParent. J'ai une classe Dialog qui étend ViewPart, c'est la vue de l'onglet. J'ai une classe NouvelOngletAction qui étend Action et me permet de créer un onglet, là je crée une instance de NouvelOngletAction : Code :
Code :
Dans ma classe qui étend ViewPart (la vue de l'onglet) dans createPartControl, je ne fais pas de treeViewer.setInput. Code :
Code :
Code :
Le problème intervient quand je quitte puis redémarre l'application. Les onglets sont vides. Ils ont pourtant gardé le nom qui leur avait été donné dans setTreeParent. Bien que le nom change quand je clique sur un onglet. Quelqu'un saurait-il me dire si ma méthode est bonne pour créer une vue avec un Object ? Et comment puis-je faire pour que le TreeParent de chaque instance de la classe qui étend ViewPart soit sauvegardé et que les onglets puissent être recréés lors du démarrage ? Merci d'avance pour votre aide.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||||||||||
|
|
00
|
|
|
#2 | |||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Salut,
Citation:
Tu vas donc pouvoir ouvrir un éditeur avec ses objets d'entrées directement sans passer par une méthode que tu auras explicitement créer dans ta classe. En pratique, un éditeur se déclare comme une vue dans le plugin.xml (avec une extension du point d'extension org.eclipse.ui.editors). Dans la partie "class" tu vas renseigner ta classe qui étend IEditorPart (ou qui hérite de EditorPart). Puis tu vas définir une classe qui hérite de IEditorInput. Ils s'ouvrent à peu-prêt de la même façon que les vues: 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 ! |
|||
|
|
10
|
|
|
#3 | ||
|
Membre Expert
![]() |
J'ai le même problème mais dans un cas plus simple.
J'ai une classe qui étend également ViewPart. Avec à l'intérieur un Browser. Code :
Mais je n'y arrive pas, dans le run de mon Action j'ai quelque chose comme ça : Code :
IViewPart part = window.getActivePage().showView(viewId, viewId+instanceNum++, IWorkbenchPage.VIEW_ACTIVATE); J'imagine que c'est vraiment un problème de débutant, je veux juste que la méthode createPartControl ait accès à des objets que je lui aurai transmis auparavant. Ici je ne peux pas utiliser mon bricolage en décalant les setInput. Comment dois-je procéder pour donner une String à une instance de ma classe qui étend ViewPart avant l’exécution de createPartControl ? Merci d'avoir lu ce post. ====================================================================== Edit : Merci Gueritarish je vais voir ça tout de suite.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
Ok alors j'essaie d'utiliser l'exemple de ce tutoriel : http://www.vogella.com/articles/Ecli...s/article.html
Donc j'ai une classe qui étend EditorPart et une classe qui implémente IEditorInput. Pour l'instant je n'arrive encore à rien, mais je vais continuer d'essayer. J'ai du mal à démarrer en Java RCP.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
|
|
00
|
|
|
#5 | ||||||||||
|
Membre Expert
![]() |
Bonsoir.
Maintenant j'arrive à créer un onglet (ViewPart avec un Brower à l'intérieur) avec un objet que je donne dans le constructeur de ma classe qui implémente IEditorInput. Par contre quand je redémarre l'application, les onglets ne sont plus là. Code :
Code :
Code :
En tout cas c'est chouette, la méthode init est appelé avant createPartControl. S'il vous plait, pourriez-vous me donner quelques indications ? Merci d'avance. Au revoir. ========== EDIT ========== Avant je faisais : Code :
window.getActivePage().showView(viewId, viewId+instanceNum++, IWorkbenchPage.VIEW_ACTIVATE); Maintenant je fais : Code :
window.getActivePage().openEditor(input, TestEditorPart.ID); Dans Perspective : Code :
Code :
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||||||||||
|
|
00
|
|
|
#6 |
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Salut,
Pour ton premier problème (la réouverture des éditeurs), c'est dû à ton implémentation de IEditorInput. En effet, pour pouvoir sauvegarder l'état de l'éditeur, la plateforme a besoin de:
Pour ce qui est du partName, il te suffit de le mettre en place dans la méthode getName() de ton IEditorInput (plus pratique et appelé automatiquement). Pour ton second problème, les éditeurs ne peuvent s'ouvrir que dans la zone d'édition Du coup, ta customisation de la perspective ne sert à rien 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 ! |
|
|
10
|
|
|
#7 | ||||||
|
Membre Expert
![]() |
Merci Gueritarish.
Je vais essayer d'implémenter ça dans mon IEditorInput, cela dit, je crois que je n'ai pas besoin de sauvegarder les onglets finalement. Ok alors qu'il est impossible que les views et les editors soit affiché au même endroit. Mais je n'arrive pas à me débarrasser des vues. Dans ma classe Perspective : Code :
Code :
J'ai essayé d'enlever le IFolderLayout, mais il s'affiche toujours lors de l’exécution. J'ai mal enlevé ça de plugin.xml : Code :
Merci pour ces éclaircissements. Je comprend certaines choses grâce à vous et ça m'aide énormément. ========== EDIT ========== En image ça donne ça : ![]() ![]() Je n'arrive pas à virer la barre en haut, elle attend des onglets views, mais je ne sais pas où je lui ai dit de s'afficher.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
J'ai fini par trouver la source du problème.
Dans Eclipse j'ai supprimé le dossier runtime de mon projet et maintenant l'affichage fonctionne comme je le souhaitais.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
|
|
00
|
|
|
#9 | ||||
|
Membre Expert
![]() |
Mon problème n'est pas encore totalement résolu, j'ai pu avancer et corriger des erreurs que j'avais réalisé, mais il me reste encore des questions au sujet du passage de paramètres.
Je me base sur un nouveau Plugin Project avec la template "RCP mail template" d'Eclipse. Code :
Pour l'instant j'utilise : Code :
Ma technique actuel est d'avoir une instance de la classe OpenViewAction, avant d’appeler run j'envoie un objet via une méthode setObjet(Objet obj). Mais j'aimerais savoir comment devrais-je m'y prendre pour, par exemple, créer un onglet selon la sélection qu'a fait l'utilisateur dans un treeViewer. Je dois probablement mal utilisé IEditorInput. Je vais rechercher de ce côté là.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||||
|
|
00
|
|
|
#10 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Salut,
Attention quand même aux amalgames (dangereux) que tu fais. Quand tu parles d'onglet il serait plus pertinent de parler de vue ou d'éditeur spécifiquement. Sinon, pour ce qui est du passage de sélection depuis une vue vers une action, tu peux utiliser le service de sélection. Pour ce faire, dans ta vue, il te faut enregistrer ton Viewer comme fournisseur de sélection: getViewSite().setSelectionProvider(myViewer); dans ta méthode createPartControl(). Ensuite, tu peux récupérer la sélection courante, dans ton action, en faisant: 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 ! |
||
|
|
10
|
|
|
#11 | ||
|
Membre Expert
![]() |
Merci beaucoup.
Je vais tacher de mettre en place des Commands et des Handlers. En réalité j'ai beaucoup de mal à trouver des exemples de Java RCP, il y a peu d'exemple dans Eclipse et aucun utilise de command et de handler apparemment. On dirait qu'il n'existe que http://www.vogella.com/. Edit : Je viens de recevoir un gigantesque coup de pouce de la part d'un collègue. Code :
J'ai fais getSite().setSelectionProvider(viewer); dans ma NavigationView et getSite().setSelectionProvider(tableViewer); dans ma DetailEditorPart. Je peux récupérer la sélection dans la méthode execute : Code :
HandlerUtil.getCurrentSelection(event); Bon pour l'instant c'est depuis la toolbar, mais ensuite je ferais la popup du clique droit.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||
|
|
00
|
|
|
#12 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Citation:
Tu utilises en ce moment même le meilleur exemple de RCP qui puisse exister... Tu développes dessus. Il te suffit de te procurer la version SDK d'Eclipse et tu auras accès à toutes les sources Eclipse. En programmation RCP, selon moi, il faut mettre les mains dans le cambouis et aller voir comment font ceux qui en ont déjà fait Citation:
![]() 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 ! |
||
|
|
10
|
|
|
#13 | ||
|
Membre Expert
![]() |
Oui je recherche dans le code source d'application RPC déjà fait.
Et en ce moment je recherche un exemple pour que lorsque je fais un clique droit une popup s'affiche. J'ai peut être trouvé ici : http://wiki.bioclipse.net/index.php?...es_the_Command J'ai l'impression que : Code :
locationURI="popup:org.eclipse.ui.examples.contributions.view?after=additions"
Pour l'instant je n'arrive pas à exécuté un handler ou afficher une popup lors d'un clique droit. Voyez-vous une erreur là dedans : Code :
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() |
Le problème doit venir de
Code :
locationURI="popup:org.eclipse.ui.popup.any?after=additions"
Je fais des clique droits partout et rien ne se passe. Je veux pouvoir faire un clique droit dans ma SelectionView et dans mes Editor. Mais la popup ne s'est jamais affiché. Edit : J'ai créé des commandes que j'ai ajouté à une toolbar, tout fonctionne, je n'ai plus qu'a affiché ses commandes lors d'un clique droit, normalement c'est simple, mais ça ne fonctionne pas chez moi...
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
|
|
00
|
|
|
#15 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Salut,
Quelques point de recherches:
<scheme>:<id>?<placement>=<id_menu_item> Avec: - <scheme> qui est à choisir parmi: menu, popup ou toolbar. - <id> l'identifiant de ta vue / menu / toolbar (ou des identifiants spéciaux comme le popupAny). - <placement> qui est à choisir parmi: before, after ou endof. - <id_menu_item> correspond à l'identifiant d'un menu item (une commande, un menu, ...). 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 ! |
||
|
|
10
|
|
|
#16 | ||||||||
|
Membre Expert
![]() |
Bonjour, merci pour cette réponse.
Citation:
Code :
Citation:
Citation:
Je ne crois pas. Citation:
Je dois bien utiliser popup:org.eclipse.ui.popup.any. J'aimerais avoir la popup dans le clique droit dans ma NavigationView et dans l'editor area. Mais je ne sais pas quel est le placement et le id_menu_item à donner. Edit : je n'ai pas définit de popup dans la vue ça doit être ça le problème. Est-ce quelque chose comme ça : http://www.vogella.com/articles/Ecli...commands_popup
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||||||||
|
|
00
|
|
|
#17 | ||||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Citation:
Dans ce cas, il te faut la créer... Ex dans une vue: Code :
Citation:
Après, le placement dépend de ton besoin. La variable <id_menu_item> que j'ai mis, correspond à l'identifiant d'un item de ta popup auprès duquel tu souhaites placé ta commande. 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 ! |
||||
|
|
10
|
|
|
#18 |
|
Membre Expert
![]() |
Merci !
J'ai enfin réussi à afficher une popup avec le clic droit ! Par contre j'ai du mal placé le code parce que le clic droit ne fonctionne que dans ma NavigationView et pas dans les editors. Je n'aurai peut être pas du utiliser un TreeViewer de NavigationView. Je vais rechercher ça, en tout cas j'ai presque réussi a faire tout ce que je voulais. Edit : J'ai utilisé le même code à deux endroits différents, une fois avec un TreeViewer dans une ViewPart et une fois avec un TableViewer dans un EditorPart et maintenant ça fonctionne, c'est propre de faire comme ça ?
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
|
|
00
|
|
|
#19 | ||
![]() ![]() Marc Développeur Java Inscription : mai 2007 Messages : 1 589 ![]() |
Rien ne t'empêche de le rendre générique... Tu crées une méthode createContextualMenu():
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 ! |
||
|
|
10
|
|
|
#20 | ||
|
Membre Expert
![]() |
D'accord, merci.
Par contre j'ai un problème avec getCurrentSelection et setSelectionProvider. Comme je l'ai déjà dis, dans la méthode createPartControl de ma classe EditorPart j'appelle : Code :
getSite().setSelectionProvider(tableViewer); Code :
getSite().setSelectionProvider(treeViewer); Code :
Pour être plus précis, depuis le TreeViewer de ma ViewPart je fais un clic droit et appuie sur "ouvrir dans un nouvel onglet" là tout fonctionne. Mais la sélection va automatiquement sur le nouvel onglet (le TableViewer de l'EditorPart) et ne peux pas revenir sur la ViewPart tant que je ne sélectionne pas l'EditorPart puis la ViewPart à nouveau.
__________________
Aidez la chaîne Nolife, abonnez-vous : http://www.nolife-tv.com/ |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com