Exercice 1 : Construction programmatique d'une perspective▲
But▲
- Construire une perspective en implémentant IperspectiveFactory.
- Utiliser l'outil Plug-in Spy pour identifier les identifiants de vues.
Description▲
Cet exercice va consister à construire la perspective JUGParticipants qui contient les vues Liste Participants et Edition Participant définies dans la leçon 1 puis la vue Properties définie par la plateforme Eclipse.
Étapes à suivre▲
Si vous n'avez pas complètement terminé le développement du plug-in eclipse.labs.jugercp.attendees lors de la fin de la leçon 1, vous pouvez récupérer le code complet dans le répertoire ressources\lesson 1 - Construction d'un plug-in\solution.
Créez une nouvelle extension à partir du point d'extension org.eclipse.ui.perspectives (voir capture d'écran ci-dessous). Ne pas sélectionner le patron Release Engineering Perspective. Pour une première fois, il est souvent utile de comprendre comment mettre en place à la mano ce type de fonctionnalité.
Donnez en paramètre d'identifiant de la perspective la valeur eclipse.labs.jugercp.attendees.jugattendees.id et comme nom la valeur JUGParticipants.
Au niveau du champ classe qui décrit de manière programmatique la perspective JUGParticipants saisissez JUGAttendeesPerspectiveFactory et eclipse.labs.jugercp.attendees.perspectives comme valeur de package.
Dans le corps de la méthode createInitialLayout(IPageLayout layout) de la classe JUGAttendeesPerspectiveFactory saisissez le code présent ci-dessous.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public
void
createInitialLayout
(
IPageLayout layout) {
layout.setEditorAreaVisible
(
false
);
String editorArea =
layout.getEditorArea
(
);
layout.addView
(
"eclipse.labs.jugercp.attendees.attendeeid"
,
IPageLayout.LEFT, 0.5
f, editorArea);
layout.addView
(
"eclipse.labs.jugercp.attendees.listattendeesid"
,
IPageLayout.BOTTOM, 0.5
f, editorArea);
layout.addView
(
"org.eclipse.ui.views.PropertySheet"
,
IPageLayout.BOTTOM, 0.5
f,
"eclipse.labs.jugercp.attendees.attendeeid"
);
}
Dans le code qui a été copié, seules deux vues sont intégrées dans la perspective JUGParticipants. Il vous reste à intégrer la vue Properties définie par la plateforme Eclipse. Pour récupérer l'identifiant de cette vue, une solution consiste à utiliser l'outil Plug-in Spy permettant d'introspecter le contenu d'une application Eclipse en cours d'exécution. Cet outil est installé par défaut dans l'environnement de développement. À partir de l'environnement de développement Eclipse, ouvrez la vue Properties. Puis effectuez le raccourci clavier suivant ALT + SHIFT + F1. Notez l'identifiant de cette vue.
Complétez la perspective JUGParticipants de façon à afficher la vue Properties sous la vue Edition Participant.
Exécutez la configuration d'exécution comme détaillée dans la leçon 1 et affichez la perspective JUGParticipants (le résultat attendu est celui présenté sur la capture d'écran ci-dessous) :
NOTE : pour l'instant la vue Properties ne réagit pas à la sélection d'un élément de la liste des participants. Nous étudierons cet aspect dans la leçon 3.
Exercice 2 : Construction déclarative d'une perspective▲
But▲
- Construire une perspective de manière déclarative en dérivant une perspective existante via les Perspective Extensions.
Description▲
Construire la perspective JUGConcours qui contient la vue JeuConcours et la vue Properties à partir de la perspective prédéfinie par la plateforme Eclipse Resource. Un nouveau plug-in eclipse.labs.jugercp.quizz est développé pour contenir cette vue et cette perspective. L'intérêt de cet exercice est de montrer qu'il est possible d'étendre une perspective existante en limitant l'usage de la programmation Java.
Étapes à suivre▲
Créez un nouveau plug-in eclipse.labs.jugercp.quizz en suivant la démarche développée dans la leçon 1 (n'utilisez pas de patron de génération).
Créez une nouvelle extension à partir du point d'extension org.eclipse.ui.views.
Créez un sous-élément de type view pour construire la vue JeuConcours.
Paramétrez les éléments de la nouvelle vue JeuConcours en respectant les informations données par la capture d'écran ci-dessous :
La classe QuizzViewPart a déjà été développée en partie, copiez cette classe située dans le répertoire ressources\lesson 2 - Perspectives\exercice2-5 en respectant le chemin défini par le package.
Occupons-nous maintenant de créer la perspective qui va agencer la vue JeuConcours et Properties. Créez une nouvelle extension à partir du point d'extension org.eclipse.ui.perspectiveExtensions.
Créez un élément de type perspectiveExtension.
Cliquez sur le bouton Browse de façon à rechercher la perspective Resource dont l'identifiant est org.eclipse.ui.resourcePerspective.
À partir de l'élément perspectiveExtension créez un sous-élément de type view.
Respectez les indications données par la capture d'écran ci-dessous pour paramétrer la vue JeuConcours.
Créez un nouvel élément de type view et respectez les indications données par la capture d'écran ci-dessous pour paramétrer la vue Properties.
Modifiez la configuration d'exécution de telle sorte que le nouveau plug-in eclipse.labs.jugercp.quizz soit ajouté puis exécutez-la. En affichant la perspective Resource vous devriez obtenir le résultat suivant :
Pour aller plus loin▲
Comme vous avez pu le remarquer, construire une perspective de manière programmatique nécessite de manipuler le code Java puisque l'agencement des vues et de l'éditeur est codé dans une classe Java. Au contraire, la programmation déclarative permet de s'abstraire du langage Java et tout le développement se fait au travers de l'outil PDE via les paramètres de l'extension.
Quelle est par conséquent la solution à adopter ? Je recommanderais la solution déclarative qui à mon sens est celle qui permettra une plus grande facilité pour la migration des plugins lors des prochaines évolutions de la plateforme Eclipse. En effet, il est question d'utiliser d'autres langages que Java.
- https://mbaron.developpez.com/eclipse/perspectives/ : support de cours relatif à la construction de perspectives
- https://mbaron.developpez.com/eclipse/views/ : support de cours relatif à la construction de vues