Exercice 1 : Ajouter des commandes dans la barre de menu et la barre d'outils▲
But▲
- Apprendre à créer une commande.
- Apprendre à créer un handler et à l'associer à une commande.
- Apprendre à ajouter une commande dans la barre d'outils d'une application Eclipse.
- Apprendre à ajouter une commande dans le menu d'une application Eclipse.
Description▲
Ajoutez dans le menu principal un élément de menu appelé JUGeRCP qui contiendra deux commandes : une permettant de réinitialiser le gestionnaire des participants (supprime tous les participants) et une permettant de démarrer le jeu-concours. Par ailleurs, une commande est également ajoutée à la barre d'outils principale permettant de réinitialiser le gestionnaire des participants (même comportement que la commande située dans le menu). Cet exercice apporte des modifications sur les deux plug-ins eclipse.labs.jugercp.attendees et eclipse.labs.jugercp.quizz.
Étapes à suivre▲
Si vous n'avez pas complètement terminé le développement des plug-ins eclipse.labs.jugercp.attendees et eclipse.labs.jugercp.quizz lors de la fin de la leçon 3, vous pouvez récupérer le code complet dans le répertoire ressources\lesson 3 - Interaction entre plug-ins\solution.
À partir du plug-in eclipse.labs.jugercp.quizz, créez une extension sur la base du point d'extension org.eclipse.ui.commands (ne pas utiliser le patron de construction).
Ajoutez un sous-élément de type Command à partir de l'élément org.eclipse.ui.commands puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Recopiez le code ci-dessous dans la classe LaunchQuizzHandler qui implémente le comportement (appelé handler) de la commande.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public
class
LaunchQuizzHandler extends
AbstractHandler {
@Override
public
Object execute
(
ExecutionEvent event) throws
ExecutionException {
try
{
IViewPart showView =
PlatformUI.getWorkbench
(
).getActiveWorkbenchWindow
(
).getActivePage
(
).showView
(
"eclipse.labs.jugercp.quizz.quizzid"
);
if
(
showView !=
null
) {
((
QuizzViewPart)showView).launchQuizz
(
);
}
}
catch
(
PartInitException e) {
e.printStackTrace
(
);
}
return
null
;
}
}
Créez une extension sur la base du point d'extension org.eclipse.ui.menus.
Ajoutez un sous-élément de type menuContribution à partir de l'élément org.eclipse.ui.menus puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Il est précisé ici qu'un élément graphique est ajouté au menu principal de l'application Eclipse.
Ajoutez un sous-élément de type menu à partir de l'élément menuContribution puis respectez les valeurs de l'attribut comme indiqué sur la capture d'écran ci-dessous.
Il est précisé ici qu'un élément de menu JUGeRCP est ajouté au menu principal de l'application Eclipse.
Ajoutez un sous-élément de type command à partir de l'élément menu puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Un élément de menu défini par la commande eclipse.labs.jugercp.quizz.laundquizzcommandid est ajouté au menu JUGeRCP.
Exécutez la configuration d'exécution pour tester le nouveau résultat attendu. Vous devriez voir afficher un résultat similaire à la capture d'écran ci-dessous.
Nous nous intéressons maintenant à la commande de réinitialisation du gestionnaire de participants. À partir du plug-in eclipse.labs.jugercp.attendees, créez une extension sur la base du point d'extension org.eclipse.ui.commands (ne pas utiliser le patron de conception).
Ajoutez un sous-élément de type Command à partir de l'élément org.eclipse.ui.commands puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Vous remarquerez que l'attribut defaultHandler n'a pas été renseigné. Par la suite, nous allons déléguer le comportement à un handler spécifique.
Créez une extension sur la base du point d'extension org.eclipse.ui.handlers
Automatiquement, un élément de type handler est ajouté à l'élément org.eclipse.ui.handlers.
Recopiez le code ci-dessous dans la classe InitializeAttendeesHandler pour implémenter la réinitialisation du gestionnaire de participants.
2.
3.
4.
5.
6.
7.
8.
public
class
InitializeAttendeesHandler extends
AbstractHandler {
@Override
public
Object execute
(
ExecutionEvent event) throws
ExecutionException {
Activator.getDefault
(
).getAttendeesManager
(
).removeAllAttendees
(
);
return
null
;
}
}
Créez une extension sur la base du point d'extension org.eclipse.ui.menus.
Ajoutez un sous-élément de type menuContribution à partir de l'élément org.eclipse.ui.menus puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Ajoutez un sous-élément de type menu à partir de l'élément menuContribution puis respectez les valeurs de l'attribut comme indiqué sur la capture d'écran ci-dessous.
À noter que ce menu est identique à celui créé précédemment. Il est important que la valeur de l'identifiant soit la même pour éviter de créer un doublon.
Ajoutez un sous-élément de type command à partir de l'élément menu puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
La commande est maintenant ajoutée au menu JUGeRCP. Intéressons-nous maintenant à ajouter cette commande au niveau de la barre d'outils principale.
Ajoutez un sous-élément de type menuContribution à partir de l'élément org.eclipse.ui.menus puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Il est précisé ici qu'un élément graphique est ajouté à la barre d'outils de l'application Eclipse.
Ajoutez un sous-élément de type toolbar à partir de l'élément menuContribution puis respectez la valeur de l'attribut id comme indiqué sur la capture d'écran ci-dessous.
Ajoutez un sous-élément de type command à partir de l'élément toolbar puis respectez les valeurs des attributs comme indiqué sur la capture d'écran ci-dessous.
Exécutez la configuration d'exécution pour tester le nouveau résultat attendu. Vous devriez voir afficher un résultat similaire à la capture d'écran ci-dessous.
Exercice 2 : Restrictions sur les commandes▲
But▲
- Création d'Expression Definitions.
- Appliquer une restriction sur une commande en utilisant le langage Core Expressions.
Description▲
Lorsque la perspective JUGParticipants est affichée seule la commande permettant de réinitialiser le gestionnaire des participants est accessible. De même lorsque la perspective JUGConcours est affichée seule la commande permettant de démarrer le jeu concours est accessible. Cet exercice apporte des modifications sur les deux plug-ins.
Étapes à suivre▲
À partir du plug-in eclipse.labs.jugercp.quizz, éditez le fichier plugin.xml en utilisant l'outil PDE.
Ajoutez un élément visibleWhen à l'élément command (celui utilisé pour l'affichage de la commande dans le menu).
Ajoutez un élément with à l'élément visibleWhen puis indiquez dans l'attribut variable la valeur activeWorkbenchWindow.activePerspective. Ceci est une variable prédéfinie par la plateforme permettant de récupérer la valeur de la perspective courante.
Ajoutez un élément equals à l'élément with puis indiquez dans l'attribut value l'identifiant de la perspective relative à la perspective JUGConcours (org.eclipse.ui.resourcePerspective).
Exécutez la configuration d'exécution pour tester le nouveau résultat attendu. La commande Quizz ne devrait pas être disponible dans la perspective JUGParticipants.
Le plug-in eclipse.labs.jugercp.attendees affiche à la fois la commande dans le menu et dans la barre d'outils de l'application Eclipse. Nous pourrions procéder de la même manière que précédemment pour rendre accessible cette commande. Malheureusement nous devrions dupliquer les déclarations relatives à la restriction. Pour pallier ce problème, nous utilisons la définition d'expression.
À partir du plug-in eclipse.labs.jugercp.attendees, éditez le fichier MANIFEST.MF en utilisant l'outil PDE. Ajoutez dans les dépendances (onglet Dependencies) le plug-in org.eclipse.core.expressions.
Créez maintenant une extension sur la base du point d'extension org.eclipse.core.expressions.definitions.
Automatiquement, un élément definition est créé. La construction de la restriction est similaire à celle construite précédemment.
Ajoutez un élément de type with avec la valeur activeWorkbenchWindow.activePerspective pour l'attribut variable.
Ajoutez un élément de type equals avec la valeur eclipse.labs.jugercp.attendees.jugattendeesid pour l'attribut value.
Il reste à associer à la restriction visibleWhen du menu et de la barre d'outils JUGeRCP cette nouvelle définition.
Pour chaque restriction visibleWhen, ajoutez un sous-élément de type reference avec la valeur eclipse.labs.jugercp.attendees.resetexpdefinitionid pour l'attribut definitionid (créé précédemment).
Exécutez la configuration d'exécution pour tester le nouveau résultat attendu. La commande Reset Participants ne devrait pas être disponible dans la perspective JUGConcours.
Pour aller plus loin…▲
- https://mbaron.developpez.com/eclipse/commands : support de cours relatif à la notion de commandes.
- http://www.vogella.com/articles/EclipseCommands/article.html.
- http://wiki.eclipse.org/Command_Core_Expressions.
- http://wiki.eclipse.org/Platform_Command_Framework.