STL-CPS - Les plugins Eclipse - Une Introduction -

publicité
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
Téléchargement