STL-CPS - Les plugins Eclipse - Une Introduction -
STL-CPS - Les plugins Eclipse - Une Introduction -
STL-CPS - Les plugins Eclipse - Une Introduction -
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
S T L - C P S - L e s p l u g i n s E c l i p s e- <strong>Une</strong> <strong>Introduction</strong> -© 2007, Frédéric Peschanski
L a p l a t e f o r m e E c l i p s e●●●●Aperçu de la plateforme<strong>Eclipse</strong> Runtime– Composants OSGI “Equinoxe”Plugins Development Environment– Extensions ActionSets et View (Swt/JFace)Workspace interfaces/objets– Platform, PluginRegistry, Selection service,etc.● Quoi encore ?– features, builder, markers, natures, etc.
A r c h i t e c t u r e d e l a p l a t e f o r m e
P l a t f o r m r u n t i m eorg.eclipse.osgiorg.eclipse.core.runtime– Définition du modèle de plugin– Gestion du registre des <strong>plugins</strong>:●●déploiement (archive)installation/désinstallation– Découverte automatique●●Chargement/déchargement à la demandeRésolution dynamique des dépendances– Implémentation●Bundle OSGI (sorte de “super jar”)
W o r k s p a c e●Gestion des ressources– Création, chargement, sauvegarde●●●●ProjetsFichiersRépertoiresAutres types de ressources (extensible)– connexion avec le système de fichier●répertoire workspace
W o r k b e n c h ( U I )org.eclipse.ui.workbench●Implémentation du modèle d'interfaceutilisateur– basé sur SWT: toolkit “portabilité native”– et JFace: framework MVC: Vues et Editeurs– Points d'extension <strong>Eclipse</strong>●●●ActionSet (menus et actions)Views (vues)etc.– Rich client Platform:●Sous-ensemble du workbench
I n t e r f a c e d u W o r k b e n c h
F r a m e w o r k O S G I●OSGI orienté service– bundle = implémenation modulaire etportable de service(s)●composants binaires– services de base:●●installation/désinstallation, chargement/activationdynamique, découverte, log, etc.Utilisation dans <strong>Eclipse</strong>– découverte de Plugin– chargement à la demande (déchargement ?)– résolution des inter-dépendances●chargement éventuel de <strong>plugins</strong> requis
C y c l e d e v i e d e s B u n d l e O S G IInstalledStartingstartResolvedActivestopUninstalledStopping
D e m o 1 : c o n s o l e O S G I
P l u g i n E c l i p s e●●Composant structuré– descriptif de bundle OSGI(manifest MANIFEST.MF)– descriptif de plugin <strong>Eclipse</strong>(manifest plugin.xml)– code d'implémentation du plugin(généralement en Java)Environnement de développement PDE– code d'implémentation Java (JDT)– configuration (manifest.mf, plugin.xml, etc.)– packaging (création d'un jar)
E c l i p s e S D K
P o i n t s d ' e x t e n s i o n e t e x t e n s i o n s●Point d'extension– point d'ancrage dans <strong>plugins</strong>– le “provide” des composants●– ressemble à la déclaration d'une interfacemais description en XMLExtension– greffon attaché à un point d'extension– le “require” des composants– ressemble à une liaison entre une interfaceet une implémentation (description XML)
L i a i s o nExtension PointExtensionPlugin A(provide)(require)Plugin B●Liaison statique– définie dans plugin.xml●... pour le fournisseur●● ... pour le requiérantChargement dynamique– si chargement nécessaire de Plugin B– chargement automatique de plugin A
E t e n d r e E c l i p s e●Plugin contributions– extension de points d'extension “standards”des <strong>plugins</strong> de base d'<strong>Eclipse</strong>●●Points d'extension du workspacePoints d'extension du workbench●●etc.Plugin contributeur– propose de nouveaux points d'extension pourd'autres <strong>plugins</strong>
P o i n t s d ' E x t e n s i o n d u W o r k b e n c h
C a t é g o r i e s d e c o n t r i b u t i o n s●●●●Action Set– menus, popup menus, etc.Views– affichage d'informationEditors– édition d'informationPerspectives– Assemblage d'actions, de vues et d'éditeurspour supporter un processus global (ex.perspective Java rédiger du code Java)
C a t é g o r i e s d e c o n t r i b u t i o n s ( 2 )●●●●Wizards– Suite ordonnée de dialogues pour réaliserune tâchePages de préférences– interface de paramétrage du plugin (global)Pages de propriétés– idem pour les ressources (local)Builders, Markers, Natures– extensions au niveau projet● etc !
E x e m p l e : P l u g i n s T i m e r / C l o c k●Plugin Timer– Extension du workbench “Action sets”●ajout d'un menu dans la barre de menus– Point d'extension:●●permet l'enregistrement de tâche répétitives ou àdéclencher de façon retardée (mini-cron)Plugin Clock– Extension du workbench “View”●ajout d'une vue– Extension du Timer●si actif, se réveille toutes les secondes
D e m o 2 : p l u g i n s T i m e r / C l o c k
L i e n s u t i l e s●<strong>Eclipse</strong>– http://www.eclipse.org●OSGI– http://www.osgi.org/– eclipse equinoxe●●http://www.eclipse.org/equinoxeDéveloppement de <strong>plugins</strong>http://www.instantiations.com/<strong>Eclipse</strong>World2007/CommercialQualityPlugins07.pdf