STL-CPS - Les plugins Eclipse - Une Introduction © 2007, Frédéric Peschanski La plateforme Eclipse ● Aperçu de la plateforme ● Eclipse Runtime – ● Plugins Development Environment – ● Extensions ActionSets et View (Swt/JFace) Workspace interfaces/objets – ● Composants OSGI “Equinoxe” Platform, PluginRegistry, Selection service, etc. Quoi encore ? – features, builder, markers, natures, etc. Architecture de la plateforme Platform runtime org.eclipse.osgi org.eclipse.core.runtime – Définition du modèle de plugin – Gestion du registre des plugins: – – ● déploiement (archive) ● installation/désinstallation Découverte automatique ● Chargement/déchargement à la demande ● Résolution dynamique des dépendances Implémentation ● Bundle OSGI (sorte de “super jar”) Workspace ● Gestion des ressources – – Création, chargement, sauvegarde ● Projets ● Fichiers ● Répertoires ● Autres types de ressources (extensible) connexion avec le système de fichier ● répertoire workspace Workbench (UI) org.eclipse.ui.workbench ● Implémentation du modèle d'interface utilisateur – basé sur SWT: toolkit “portabilité native” – et JFace: framework MVC: Vues et Editeurs – Points d'extension Eclipse – ● ActionSet (menus et actions) ● Views (vues) ● etc. Rich client Platform: ● Sous-ensemble du workbench Interface du Workbench Framework OSGI ● OSGI orienté service – bundle = implémenation modulaire et portable de service(s) ● – services de base: ● ● composants binaires installation/désinstallation, chargement/activation dynamique, découverte, log, etc. Utilisation dans Eclipse – découverte de Plugin – chargement à la demande (déchargement ?) – résolution des inter-dépendances ● chargement éventuel de plugins requis Cycle de vie des Bundle OSGI Installed Starting start Resolved Active stop Uninstalled Stopping Demo 1 : console OSGI Plugin Eclipse ● ● Composant structuré – descriptif de bundle OSGI (manifest MANIFEST.MF) – descriptif de plugin Eclipse (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) Eclipse SDK Points d'extension et extensions ● ● Point d'extension – point d'ancrage dans plugins – le “provide” des composants – ressemble à la déclaration d'une interface mais description en XML Extension – greffon attaché à un point d'extension – le “require” des composants – ressemble à une liaison entre une interface et une implémentation (description XML) Liaison Plugin A ● Extension (provide) (require) Plugin B Liaison statique – ● Extension Point définie dans plugin.xml ● <extension-point>... pour le fournisseur ● <extension> ... pour le requiérant Chargement dynamique – si chargement nécessaire de Plugin B – chargement automatique de plugin A Etendre Eclipse ● Plugin contributions – ● extension de points d'extension “standards” des plugins de base d'Eclipse ● Points d'extension du workspace ● Points d'extension du workbench ● etc. Plugin contributeur – propose de nouveaux points d'extension pour d'autres plugins Points d'Extension du Workbench Catégories de contributions ● Action Set – ● Views – ● affichage d'information Editors – ● menus, popup menus, etc. édition d'information Perspectives – Assemblage d'actions, de vues et d'éditeurs pour supporter un processus global (ex. perspective Java rédiger du code Java) Catégories de contributions (2) ● Wizards – ● Pages de préférences – ● idem pour les ressources (local) Builders, Markers, Natures – ● interface de paramétrage du plugin (global) Pages de propriétés – ● Suite ordonnée de dialogues pour réaliser une tâche extensions au niveau projet etc ! Exemple: Plugins Timer/Clock ● Plugin Timer – Extension du workbench “Action sets” ● – Point d'extension: ● ● ajout d'un menu dans la barre de menus 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 Demo 2 : plugins Timer/Clock Liens utiles ● Eclipse – ● http://www.eclipse.org OSGI – http://www.osgi.org/ – eclipse equinoxe ● ● http://www.eclipse.org/equinoxe Développement de plugins http://www.instantiations.com/EclipseWorld2007/CommercialQualityPlugins07.pdf