Développement de clients
riches : Plateforme Eclipse
Mickaël BARON - 2009
mailto:baron.mickael@gmail.com ou mailto:baron@e...
2Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
Creative Commons
Contrat Paternité
Partage des Conditio...
3Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Organisation du cours sur le Workbench : Perspectives
T...
4Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Déroulement du cours
† Pédagogie du cours
† Illustratio...
5Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ressources …
† Des articles sur la construction de pers...
6Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† Une perspective est un regroupement de vu...
7Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† Perspective Java
8Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† Perspective Debug
9Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† Perspective Java Browsing
10Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† Personnalisation des raccourcis d'une pe...
11Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Généralités
† La construction d’une perspective peut ê...
12Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction d'une extension
† Sélectionner le point d...
13Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction d'une extension
Onglet Extensions
Ajout d...
14Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction d'une extension
Identifiant unique de la
...
15Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction d'une extension
package eclipse.workbench...
16Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction d'une extension
Comme prévu la perspectiv...
17Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron IPageLayout
† Une perspective définit l'agencement des...
18Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addView
† Exemple : agencer trois vues dans une perspe...
19Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addView
† Exemple (suite) : agencer trois vues dans un...
20Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
† L’interface IPageLayout fournit des méthodes pour aj...
21Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addView (ratio)
† L’argument ratio spécifie comment do...
22Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addView (ratio)
25% 75 %
55%
45%
45%
55%
Vue Bookmarks...
23Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addFastView
† Exemple : ajouter deux vues FastView à u...
24Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addFastView
† Caractéristiques d’une vue de type FastV...
25Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addFastView
† Exemple (suite) : ajouter deux vues Fast...
26Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Caractéristiques d’une vue de type...
27Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Exemple : agencer une vue Standalo...
28Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Exemple (suite) : agencer une vue ...
29Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Exemple : agencer une vue Standalo...
30Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Exemple (suite) : agencer une vue ...
31Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addStandaloneView
† Exemple (suite) : agencer une vue ...
32Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addPlaceholder
† Un Place Holder ou emplacement prédéf...
33Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addPlaceholder
† L’interface IPageLayout fournit des m...
34Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addPlaceholder
† Exemple : fixer l’emplacement de deux...
35Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron addPlaceholder
† Exemple (suite) : fixer l’emplacement...
36Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createFolder
† Un Place Folder ou emplacement à onglet...
37Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createFolder
† L’interface IPageLayout fournit une mét...
38Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createFolder
† Exemple : création d’un Place Folder et...
39Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createFolder
† Exemple (suite) : création d’un Place F...
40Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createPlaceholderFolder
† Un Place Holder Folder ou em...
41Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron createPlaceholderFolder
† Exemple : création d’un Plac...
42Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Raccourcis
† Différents types de raccourcis peuvent êt...
43Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Raccourcis
† Exemple : création de raccourcis
Liste le...
44Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Raccourcis
† Exemple (suite) : création de raccourcis
...
45Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective
† Possibilité de modifi...
46Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective
† Exemple (suite) : pas...
47Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective
† Exemple (suite) : pas...
48Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
† Nous avons montré précédemmen...
49Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
Choisir le point d’extension
pe...
50Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
Définition de la perspective
qu...
51Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
package eclipse.workbench.persp...
52Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
Possibilité d’ajouter des
vues ...
53Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
† Ajout d’une vue dans la persp...
54Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Perspective Extensions
† Exemple : refaire à l’identiq...
55Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Construction à l’exécution
† Précédemment nous avons m...
56Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Registre des perspectives
† Le registre des perspectiv...
57Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Registre des perspectives
† L’interface IPerspectiveRe...
58Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Registre des perspectives
† Une perspective est défini...
59Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Registre des perspectives
† Exemple : manipuler le reg...
60Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Registre des perspectives
† Exemple (suite) : manipule...
61Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ecouteurs
† Tout changement réalisé par la perspective...
62Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ecouteurs
† Plusieurs sous interfaces à IPerspectiveLi...
63Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ecouteurs
† Interface IPerspectiveListener2
† void per...
64Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ecouteurs
† Interface IPerspectiveListener4
† void per...
65Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Ecouteurs
† Exemple : écouter les changements d’une pe...
66Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Principales opérations
† La plateforme Eclipse fournit...
67Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Principales opérations
† org.eclipse.ui.window.previou...
68Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Principales opérations
† Exemple : exécuter une comman...
69Perspectives - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Principales opérations
† Exemple : exécuter une comman...
Prochain SlideShare
Chargement dans…5
×

Construction de perspectives avec la plateforme Eclipse

4 926 vues

Publié le

Ce support de cours s'intéresse à détailler la construction de perspectives avec la plateforme Eclipse. Il fait partie de la série des supports de cours liée au Workbench. Les aspects suivants sont étudiés : construction déclarative, ajout de vues (view, fastview, standaloneview, placeholder, createfolder, placeholderfolder), paramétrage d'une perspective, étendre une perspective existante via Perspective Extensions, registre des perspectives, écouter les changements d'une perspective et les principales opérations du Workbench liées aux perspectives.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 926
Sur SlideShare
0
Issues des intégrations
0
Intégrations
614
Actions
Partages
0
Téléchargements
121
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Construction de perspectives avec la plateforme Eclipse

  1. 1. Développement de clients riches : Plateforme Eclipse Mickaël BARON - 2009 mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr @mickaelbaron Chapitre 3 : Conception de plug-ins Workbench : Perspectives
  2. 2. 2Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Creative Commons Contrat Paternité Partage des Conditions Initiales à l'Identique 2.0 France http://creativecommons.org/licenses/by-sa/2.0/fr Licence
  3. 3. 3Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Organisation du cours sur le Workbench : Perspectives Tous les exemples du cours sont disponibles directement à l’adresse mbaron.developpez.com/eclipse/perspectives † Construction déclarative † Ajout de vues † Paramétrage † Etendre une perspective existante † Registre des perspectives † Ecouter les changements † Principales opérations
  4. 4. 4Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Déroulement du cours † Pédagogie du cours † Illustration avec de nombreux exemples qui sont disponibles à l’adresse mbaron.developpez.com/eclipse/perspectives † Des bulles d’aide tout au long du cours † Logiciels utilisés † Eclipse 3.4.2 Ganymede † Pré-requis † Connaître la structure d’un plug-ins et savoir créer une extension † Généralités sur le Workbench † Remerciement † Developpez.com : djo.mos (Jawher MOUSSA) Ceci est une alerte Ceci est une astuce
  5. 5. 5Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ressources … † Des articles sur la construction de perspectives † www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html † www.javalobby.org/java/forums/t18187.html † Des livres † Eclipse – Building Commercial-Quality Plug-ins, 2004 - ISBN : 0-321-22847-2 † Eclipse – Rich Client Platform, 2005 – ISBN : 0-321-33461-2
  6. 6. 6Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † Une perspective est un regroupement de vues, d’éditeurs et de raccourcis au sein du Workbench afin de faciliter une tâche de l'utilisateur † Une perspective fournit des mécanismes pour faciliter l'agencement des vues et des éditeurs † Différents types de raccourcis peuvent être référencés † Raccourcis sur des commandes † Raccourcis pour changer la perspective † Raccourcis pour démarrer un assistant † Raccourcis pour ouvrir une vue † Exemples des perspectives prédéfinies du développeur Java † Java, Debug, Java Browsing … Les commandes remplacent les actions, voir le cours Commands pour des détails supplémentaires
  7. 7. 7Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † Perspective Java
  8. 8. 8Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † Perspective Debug
  9. 9. 9Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † Perspective Java Browsing
  10. 10. 10Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † Personnalisation des raccourcis d'une perspective Liste les raccourcis sur les assistants Le raccourci sur l'assistant Création de Fichier a été ajouté Barre d'outils où seront ajoutés les raccourcis sur les commandes. Le raccourci sur la commande Synchronisation a été ajouté Liste les raccourcis sur les perspectives Le raccourci sur la perspective Resource a été ajouté Liste les raccourcis sur les vues Le raccourci sur la vue Console a été ajouté
  11. 11. 11Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Généralités † La construction d’une perspective peut être réalisée de trois manières différentes † Programmatiquement † Utilisation du point d’extension org.eclipse.ui.perspective † Nécessite la construction d’une classe de type IPerspectiveFactory † L’agencement des vues et de l’éditeur est codé dans cette classe † Déclarativement † Utilisation du point d’extension org.eclipse.ui.perspectiveExtensions † L’agencement est défini au travers de l’outil PDE via les paramètres de l’extension † En cours d’exécution † La construction se fait pendant l’exécution de l’application † L’utilisateur agence ses vues puis sauvegarde une nouvelle perspective personnalisée
  12. 12. 12Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction d'une extension † Sélectionner le point d’extension org.eclipse.ui.perspectives Point d'extension à créer
  13. 13. 13Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction d'une extension Onglet Extensions Ajout d'une nouvelle perspective † Ajouter une nouvelle perspective Projet PerspectiveExemple
  14. 14. 14Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction d'une extension Identifiant unique de la perspective Nom de la perspective utilisable par l'utilisateur pour identifier la perspective Classe de type IPerspectiveFactory qui décrit comment la perspective doit être créée Personnalisation de la perspective † Saisir les paramètres de la perspective créée
  15. 15. 15Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction d'une extension package eclipse.workbench.perspectiveexample; public class EmptyPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { // Ceci est une perspective vide ... } } † Créer la classe EmptyPerspectiveFactory en implémentant l'interface IPerspectiveFactory Aucune vue ni éditeur n'ont été ajoutés dans cette perspective Seule la méthode createInitialLayout doit être implémentée EmptyPerspectiveFactory.java du Projet PerspectiveExample
  16. 16. 16Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction d'une extension Comme prévu la perspective Empty Perspective ne contient aucune vue † Tester la perspective Empty Perspective … Projet PerspectiveExemple
  17. 17. 17Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron IPageLayout † Une perspective définit l'agencement des vues de différentes manières † View : ajoute une vue à la perspective † Place Folder : création d'un emplacement pour empiler de vues † Place Holder : définition d'un emplacement par défaut d'une vue sans l'afficher. A l'ouverture, celle-ci sera positionnée à l'emplacement défini † Fast View : ajoute une vue de manière flottante à la perspective † Standalone View : ajoute une vue qui ne peut être empilée avec d'autres vues (peut ne pas contenir de titre) † L'agencement des vues est obtenu par l'intermédiaire d'un objet de type IPageLayout † Dans la suite, ces différents agencements sont présentées ainsi que leurs mises en œuvre via IPageLayout
  18. 18. 18Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addView † Exemple : agencer trois vues dans une perspective Projet PerspectiveExemple La zone des éditeurs est utilisée comme référent pour l’agencement des vues Bookmarks et Tasks La vue Bookmarks est positionnée à la gauche de la zone des éditeurs La vue Tasks est positionnée au dessous de la zone des éditeurs La vue Navigator est positionnée au dessous de la vue Bookmarks
  19. 19. 19Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addView † Exemple (suite) : agencer trois vues dans une perspective package eclipse.workbench.perspectiveexample.perspectives; public class AddViewPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.addView(IPageLayout.ID_RES_NAV, IPageLayout.BOTTOM, 0.45f, IPageLayout.ID_TASK_LIST); } } AddViewPerspectiveFactory.java du Projet PerspectiveExample Récupération de l’Id de la zone des éditeurs La vue Bookmarks est positionnée à la gauche de la zone des éditeurs Ratio qui définit l’espace occupé par la vue Bookmarks par rapport à son référent Le référent peut également être une vue Le référent est la zone des éditeurs
  20. 20. 20Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron † L’interface IPageLayout fournit des méthodes pour ajouter de simples vues à une perspective † void addView(String viewId, int relationship, float ratio, String refId) : ajoute une vue viewId à une perspective † viewId : identifiant de la vue à ajouter † relationship : position de la vue par rapport au référent (TOP, BOTTOM, LEFT et RIGHT) † ratio : spécifie comment diviser l’espace entre la vue viewId et son référent refId † refId : identifiant de la référence † String getEditorArea() : récupère l’identifiant de la zone des éditeurs de la perspective addView
  21. 21. 21Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addView (ratio) † L’argument ratio spécifie comment doit être occupé l’espace entre une vue et son référent † Selon l’orientation, le ratio porte sur la vue ou sur le référent † Pour une séparation verticale (TOP ou BOTTOM) le ratio s’applique sur l’élément du haut † Si ratio = 0.95, l’élément du haut occupera 95% de l’espace † Pour une séparation horizontale (LEFT ou RIGHT) le ratio s’applique sur l’élément de gauche † Si ratio = 0.95, l’élément de gauche occupera 95% de l’espace † La valeur ratio est comprise entre 0.05 et 0.95 layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); ... layout.addView(IPageLayout.ID_RES_NAV, IPageLayout.BOTTOM, 0.45f, IPageLayout.ID_TASK_LIST); La vue Bookmarks occupera 25% de l’espace défini avec la zone des éditeurs La vue Tasks occupera 45% de l’espace défini avec la vue Navigator
  22. 22. 22Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addView (ratio) 25% 75 % 55% 45% 45% 55% Vue Bookmarks placée à gauche Editeur Vue Tasks placée au dessous de la zone des éditeurs Vue Navigator placée au dessous de la vue Tasks
  23. 23. 23Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addFastView † Exemple : ajouter deux vues FastView à une perspective Projet PerspectiveExemple La vue Bookmarks est FastView Elle est affichée sans être figée à la perspective. A la perte du focus la vue est automatiquement fermée Les deux vues FastView ajoutées à la perspective sont affichable via les raccourcis
  24. 24. 24Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addFastView † Caractéristiques d’une vue de type FastView † N’est pas « accrochée » à la perspective † Est fermée automatiquement quand la vue perd son focus † Toute vue d’une perspective peut devenir FastView † Ne s’applique pas aux éditeurs † Peut perdre son aspect FastView pour être accrochée à la perspective † L’interface IPageLayout fournit une méthode pour ajouter une vue de type FastView à une perspective † void addFastView(String viewId, float ratio) † viewId : identifiant de la vue à transformer en FastView † ratio : pourcentage de la fenêtre Workbench qu’occupera la FastView
  25. 25. 25Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addFastView † Exemple (suite) : ajouter deux vues FastView à une … package eclipse.workbench.perspectiveexample.perspectives; public class AddFastViewPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_RES_NAV, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.addFastView(IPageLayout.ID_BOOKMARKS, 0.50f); layout.addFastView(IPageLayout.ID_TASK_LIST, 0.50f); } } AddFastViewPerspectiveFactory.java du Projet PerspectiveExample La vue Bookmarks et la vue Tasks sont définies comme FastView Une vue FastView ajoutée via addFastView ajoute des raccourcis et ne montre pas la vue Les vues FastView ne sont pas directement visibles dans la perspective
  26. 26. 26Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Caractéristiques d’une vue de type StandaloneView † Ne peut être empilée avec une autre vue † Sa barre de titre peut être masquée. † L’interface IPageLayout fournit une méthode pour ajouter une vue de type StandaloneView à une perspective † void addStandaloneView(String viewId, boolean showTitle, int relationship, float ratio, String refPartId) † boolean showTitle : si TRUE affiche la barre sinon ne l’affiche pas † viewId : identifiant de la vue à ajouter † relationship : position de la vue par rapport au référent (TOP, BOTTOM, LEFT et RIGHT) † ratio : spécifie comment diviser l’espace entre la vue viewId et son référent refPartId † refPartId : identifiant de la référence
  27. 27. 27Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Exemple : agencer une vue StandaloneView avec des vues Projet PerspectiveExemple La vue Bookmarks et Tasks sont de simples vues La vue Navigator est une StandaloneView La vue Bookmarks peut être empilée avec la vue Tasks La vue Bookmarks ne peut être empilée avec la vue Navigator
  28. 28. 28Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Exemple (suite) : agencer une vue StandaloneView … package eclipse.workbench.perspectiveexample.perspectives; public class AddStandaloneViewPerspectiveFactory1 implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.addStandaloneView(IPageLayout.ID_RES_NAV, true, IPageLayout.BOTTOM, 0.45f, IPageLayout.ID_TASK_LIST); } } AddStandaloneViewPerspectiveFactory1.java du Projet PerspectiveExample La vue Navigator est définie comme StandaloneView. La barre de titre est affichée
  29. 29. 29Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Exemple : agencer une vue StandaloneView sans titre Projet PerspectiveExemple La vue Bookmarks et Tasks sont de simples vues La vue Navigator est de type StandaloneView La vue Navigator ne dispose pas de titre
  30. 30. 30Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Exemple (suite) : agencer une vue StandaloneView sans titre La vue Navigator avec sa barre de titre et ses commandes associées La même vue Navigator sans barre de titre Si la vue StandaloneView dispose de commandes, l’ensemble des commandes sera affiché dans la barre d’outils de la WorkbenchWindow Si vous utilisez une vue en mode StandaloneView pensez à désactiver ses commandes
  31. 31. 31Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addStandaloneView † Exemple (suite) : agencer une vue StandaloneView sans titre package eclipse.workbench.perspectiveexample.perspectives; public class AddStandaloneViewPerspectiveFactory1 implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.addStandaloneView(IPageLayout.ID_RES_NAV, false, IPageLayout.BOTTOM, 0.45f, IPageLayout.ID_TASK_LIST); } } AddStandaloneViewPerspectiveFactory2.java du Projet PerspectiveExample La vue Navigator est définie comme StandaloneView. La barre de titre est cachée
  32. 32. 32Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addPlaceholder † Un Place Holder ou emplacement prédéfini permet de définir dans une perspective donnée un emplacement favori d’une vue sans l’afficher directement † Les vues ajoutées à un Place Holder ne sont pas directe- ment visibles, elles le sont à posteriori lorsqu’une demande d’affichage de vue est réalisée † L’intérêt du Place Holder est de pouvoir fixer l’emplacement d’une vue à l’avance
  33. 33. 33Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addPlaceholder † L’interface IPageLayout fournit des méthodes pour ajouter une vue à un Place Holder † void addPlaceholder(String viewId, int relationship, float ratio, String refPartId) † String viewId : identifiant de la vue à ajouter † relationship : position de la vue par rapport au référent (TOP, BOTTOM, LEFT et RIGHT) † ratio : spécifie comment diviser l’espace entre la vue viewId et son référent refPartId † refPartId : identifiant de la référence † void addStandaloneViewPlaceholder(String viewId, int relationship, float ratio, String refPartId, boolean showTitle) † Paramètres identiques à la précédente méthode † showTitle : si TRUE affiche la barre sinon ne l’affiche pas
  34. 34. 34Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addPlaceholder † Exemple : fixer l’emplacement de deux vues AddPlaceholderViewPerspectiveFactory.java du Projet PerspectiveExample A l’ouverture de la perspective, une seule vue est affichée Les emplacements des vues Tasks et Navigator (StandaloneView) ont été fixés. A l’ouverture, les vues sont positionnées à la position prédéfinie
  35. 35. 35Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron addPlaceholder † Exemple (suite) : fixer l’emplacement de deux vues package eclipse.workbench.perspectiveexample.perspectives; public class AddPlaceholderViewPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.50f, editorAreaId); layout.addPlaceholder(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.addStandaloneViewPlaceholder(IPageLayout.ID_RES_NAV, IPageLayout.BOTTOM, 0.45f, IPageLayout.ID_TASK_LIST, false); } } AddPlaceholderViewPerspectiveFactory.java du Projet PerspectiveExample Ajout un vue de type StandaloneView dans un Place Holder Ajout d’une vue dans un Place Holder
  36. 36. 36Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createFolder † Un Place Folder ou emplacement à onglets permet d’empiler dans une perspective donnée des vues à un emplacement favori † Les vues peuvent être ajoutées au Place Folder † Les vues sont accessibles sous la forme d’un onglet et peuvent être détachées du Place Folder La vue Bookmarks, Tasks et Navigator sont ajoutées à un Place Folder
  37. 37. 37Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createFolder † L’interface IPageLayout fournit une méthode pour ajouter un Place Folder à une perspective † IFolderLayout createFolder(String folderId, int relationship, float ratio, String refPartId) † String folderId : identifiant du nouveau Placer Folder † relationship : position de la vue par rapport au référent (TOP, BOTTOM, LEFT et RIGHT) † ratio : spécifie comment diviser l’espace entre le Place Folder folderId et son référent refPartId † refPartId : identifiant de la référence † L’interface IFolderLayout permet d’ajouter des éléments au Place Folder (pas uniquement des vues) † void addView(String viewId) : ajout d’une vue identifiée par viewId † void addPlaceHolder(String phID) : ajout d’un Place Holder identifié par phID
  38. 38. 38Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createFolder † Exemple : création d’un Place Folder et ajout de trois vues La vue Bookmarks, Tasks et Navigator sont ajoutées à un Place Folder AddCreateFolderViewPerspectiveFactory.java du Projet PerspectiveExample
  39. 39. 39Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createFolder † Exemple (suite) : création d’un Place Folder et ajout de trois vues package eclipse.workbench.perspectiveexample.perspectives; public class AddCreateFolderViewPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorArea = layout.getEditorArea(); IFolderLayout createFolder = layout.createFolder("bottomFolder", IPageLayout.BOTTOM, 0.45f, editorArea); createFolder.addView(IPageLayout.ID_BOOKMARKS); createFolder.addView(IPageLayout.ID_TASK_LIST); createFolder.addView(IPageLayout.ID_RES_NAV); } } AddCreateFolderViewPerspectiveFactory.java du Projet PerspectiveExample Création d’un Place Folder identifié bottomFolder Ajout de trois vues dans le Place Folder L’agencement du Place Folder est défini d’une manière semblable à celui d’une vue
  40. 40. 40Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createPlaceholderFolder † Un Place Holder Folder ou emplacement prédéfini à onglets permet de définir un emplacement favori pour empiler des vues sans les afficher directement † L’interface IPageLayout fournit une méthode pour créer un Place Holder Folder à une perspective † IPlaceholderFolderLayout createPlaceholderFolder(String folderId, int relationship, float ratio, String refPartId) : … † L’interface IPlaceholderFolderLayout permet d’ajouter des vues comme emplacement prédéfini † void addPlaceholderFolder(String idView) : ajout de la vue idView
  41. 41. 41Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron createPlaceholderFolder † Exemple : création d’un Place Holder Folder package eclipse.workbench.perspectiveexample.perspectives; public class AddCreatePlaceholderFolderViewPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorArea = layout.getEditorArea(); IPlaceholderFolderLayout createPlaceholderFolder = layout.createPlaceholderFolder("bottomFolder", IPageLayout.BOTTOM, 0.45f, editorArea); createPlaceholderFolder.addPlaceholder(IPageLayout.ID_BOOKMARKS); createPlaceholderFolder.addPlaceholder(IPageLayout.ID_TASK_LIST); createPlaceholderFolder.addPlaceholder(IPageLayout.ID_RES_NAV); } } AddCreatePlaceholderFolderViewPerspectiveFactory.java du Projet PerspectiveExample Création d’un Place Hodler Folder identifié bottomFolder Ajout de trois vues au Place Holder Folder
  42. 42. 42Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Raccourcis † Différents types de raccourcis peuvent être ajoutés à une perspective † Raccourcis sur des actions † Raccourcis pour changer la perspective † Raccourcis pour démarrer un assistant † Raccourcis pour ouvrir une vue † L’interface IPageLayout fournit des méthodes pour ajouter des raccourcis † void addActionSet(String actionId) : ajout d’un raccourci action † void addNewWizardShortcut(String wizardId) : ajout d’un raccourci assistant † void addPerspectiveShortcut(String perspId) : ajout d’un raccourci sur une perspecive † void addShowViewShortcut(String viewId) : ajout d’un raccourci sur une vue Dans le cours Commands, on montrera comment obtenir le même résultat avec les commandes A éviter préférer les commandes
  43. 43. 43Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Raccourcis † Exemple : création de raccourcis Liste les raccourcis sur les assistants Le raccourci sur l'assistant Création de Fichier a été ajouté Barre d'outils où seront ajoutés les raccourcis sur les commandes Le raccourci sur la commande Synchronisation a été ajouté Liste les raccourcis sur les perspectives Le raccourci sur la perspective Resource a été ajouté Liste les raccourcis sur les vues Le raccourci sur la vue Console a été ajouté CustomPerspectiveFactory1.java du Projet PerspectiveExample
  44. 44. 44Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Raccourcis † Exemple (suite) : création de raccourcis package eclipse.workbench.perspectiveexample.perspectives; public class CustomPerspectiveFactory1 implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); layout.addActionSet("org.eclipse.team.ui.actionSet"); layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file"); layout.addPerspectiveShortcut("org.eclipse.ui.resourcePerspective"); layout.addShowViewShortcut(IConsoleConstants.ID_CONSOLE_VIEW); } }} CustomPerspectiveFactory1.java du Projet PerspectiveExample Ajout d’un raccourci Action Ajout d’un raccourci Assistant pour la création de fichiers Ajout d’un raccourci PerspectiveAjout d’un raccourci sur la vue Console
  45. 45. 45Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective † Possibilité de modifier certaines caractéristiques d’une perspective † void setEditorAreaVisible(boolean isVisible) : affiche ou pas la zone des éditeurs † void setFixed(boolean isFixed) : désactive l’agrandissement d’une vue CustomPerspectiveFactory2.java du Projet PerspectiveExample La zone des éditeurs n’est pas affichés † Exemple : pas de zone des éditeurs ni d’agrandissement …
  46. 46. 46Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective † Exemple (suite) : pas de zone des éditeurs ni agrandissement Agrandissement non autorisé Affichages quand l’agrandissement est autorisé
  47. 47. 47Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Paramétrages d’une perspective † Exemple (suite) : pas de zone des éditeurs ni agrandissement package eclipse.workbench.perspectiveexample.perspectives; public class CustomPerspectiveFactory2 implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorAreaId = layout.getEditorArea(); layout.addView(IPageLayout.ID_BOOKMARKS, IPageLayout.LEFT, 0.25f, editorAreaId); layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.45f, editorAreaId); layout.setEditorAreaVisible(false); layout.setFixed(true); } } CustomPerspectiveFactory2.java du Projet PerspectiveExample Désactivation de la zone des éditeurs et de l’agrandissement des vues Même si la zone des éditeurs n’est plus visible, elle est utilisée comme référent pour ajouter les vues à la perspective
  48. 48. 48Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions † Nous avons montré précédemment la construction d’une perspective par l’intermédiaire du point d’extension org.eclipse.ui.perspective † Construction d’une classe de type IPerspectiveFactory † L’agencement des vues se fait de manière programmatique † Ne peut étendre une perspective déjà existante † La plateforme Eclipse fournit un point d’extension org.eclipse.ui.perspectiveExtensions permettant de † Construire déclarativement une perspective (agencer des vues, ajouter des raccourcis, …) via l’outil PDE † Etendre une perspective existante
  49. 49. 49Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions Choisir le point d’extension perspectiveExtensions † Sélectionner le point org.eclipse.ui.perspectiveExtensions
  50. 50. 50Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions Définition de la perspective qui sera étendue L’utilisation du point d’extension PerspectiveExtension nécessite qu’une perspective existe (soit de la plateforme Eclipse soit explicitement)Onglet Extensions
  51. 51. 51Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions package eclipse.workbench.perspectiveexample.perspectives; public class EmptyPerspectiveFactory implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { // Ceci est une perspective vide. } } EmptyPerspectiveFactory.java du Projet PerspectiveExample Aucune modification n’a été apportée à la perspective Nous aurions pu également utiliser une perspective prédéfinie par la plateforme et contenant déjà des vues
  52. 52. 52Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions Possibilité d’ajouter des vues et des raccourcis à la perspective étendue Onglet Extensions showInPart permet d’ajouter des vues dans le menu Navigate -> Show In
  53. 53. 53Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions † Ajout d’une vue dans la perspective étendue Identifiant de la vue à ajouter Emplacement de la vue Par rapport à quelle autre vue Ratio de division La vue est-elle visible ou pas ? La vue peut-elle être fermée ou pas ? La vue peut-elle être déplacée ou pas ? S’agit-il d’une vue de type Standalone ou pas ? Si elle est Standalone le titre est-il affiché ou pas ? Mêmes caractéristiques que pour l’approche par programmation (voir précédemment)
  54. 54. 54Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Perspective Extensions † Exemple : refaire à l’identique AddViewPerspective Trois vues sont ajoutées à la perspective vide
  55. 55. 55Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Construction à l’exécution † Précédemment nous avons montré comment créer une perspective au niveau de la phase de développement † Cette troisième solution permet de créer une perspective en cours d’exécution de l’application † Démarche à entreprendre … † L’utilisateur choisit quelles sont les vues à afficher dans la perspective et les agencent de manière interactive † Il sauvegarde ensuite la perspective en lui donnant un nom qui servira d’identifiant † Menu Window -> Save Perspective As …
  56. 56. 56Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Registre des perspectives † Le registre des perspectives est utilisé par le conteneur Eclipse pour stocker l’intégralité des perspectives créées † Il n’existe qu’un seul registre de perspective géré par le Workbench † A partir de ce registre il est possible de † Chercher une perspective † Supprimer une perspective IPerspectiveRegistry perspRegistry = PlatformUI.getWorkbench().getPerspectiveRegistry(); L’interface IPerspectiveRegistry est détaillée dans la suite Seules les perspectives construites à l’exécution sont supprimables
  57. 57. 57Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Registre des perspectives † L’interface IPerspectiveRegistry fournit un ensemble de méthodes pour identifier et effacer des perspectives † IPerspectiveDescriptor clonePerspective(String id, String label, IPerspectiveDescriptor desc) : création d’un clone de la perspective desc avec un nouvel id et label † void deletePerspective(IPerspectiveDescriptor desc) : suppression d’une perspective (ne fonctionne pas pour les perspectives définies par une extension) † IPerspectiveDescriptor findPerspectiveWithId(String idPersp) : recherche une perspective à partir de son identifiant idPersp † IPerspectiveDescriptor[] getPerspectives() : retourne la liste complète des perspectives † String getDefaultPerspective() : retourne la perspective par défaut † void setDefaultPerspective(String id) : modifie la perspective par défaut
  58. 58. 58Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Registre des perspectives † Une perspective est définie via l’interface de programmation IPerspectiveDescriptor † Cette interface contient tous les accesseurs caractérisant une perspective † String getId() : l’identifiant de la perspective † Sting getLabel() : le nom de la perspective † String getDescription() : la description de la perspective † ImageDescriptor() : l’image de la perspective Identifiant Nom Image La description est définie comme un sous élément d’une extension
  59. 59. 59Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Registre des perspectives † Exemple : manipuler le registre des perspectives PerspectiveRegistryViewPart du Projet PerspectiveExample Affiche les informations de la perspective AddFastViewPerspective Supprime la perspective CustomPerspective Affiche toutes les perspectives du registre La perspective CustomPerspective a été construite à l’exécution
  60. 60. 60Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Registre des perspectives † Exemple (suite) : manipuler le registre des perspectives package eclipse.workbench.perspectiveexample.views; public class PerspectiveRegistryViewPart extends ViewPart { public void createPartControl(Composite parent) { ... Button searchPerspective = new Button(parent, SWT.FLAT); searchPerspective.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IPerspectiveRegistry perspectiveRegistry= PlatformUI.getWorkbench().getPerspectiveRegistry(); IPerspectiveDescriptor findPerspectiveWithId = perspectiveRegistry.findPerspectiveWithId("eclipse.workbench.PerspectiveExample. AddFastViewPerspective"); if (findPerspectiveWithId !=null) { System.out.println(findPerspectiveWithId.getId()); System.out.println(findPerspectiveWithId.getLabel()); System.out.println(findPerspectiveWithId.getDescription()); } } }); searchPerspective.setText("Find : AddFastViewPerspective"); ... } } PerspectiveRegistryViewPart.java du Projet PerspectiveExample Recherche une perspective à partir de son identifiant
  61. 61. 61Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ecouteurs † Tout changement réalisé par la perspective peut être écouté † Activation et désactivation d’une perspective † Ouverture et fermeture d’une perspective † Modification du contenu d’une perspective (nouvelle vue, …) † Enregistrement d’une perspective † L’abonnement se fait à partir du WorkbenchWindow récupérable de deux manières † La méthode addPerspectiveListener(IPerspectiveListener p) est utilisée pour ajouter un écouteur sur la perspective IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IWorkbenchWindow workbenchWindow = getSite().getWorkbenchWindow(); A n’utiliser que s’il n’existe qu’une fenêtre dans l’applicationA utiliser dans une ViewPart ou EditorPart
  62. 62. 62Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ecouteurs † Plusieurs sous interfaces à IPerspectiveListener ont été définies et sont apparues au fil des versions d’Eclipse † Interface IPerspectiveListener † void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) : déclenchée quand perspective devient active † void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) : déclenchée quand perspective est modifiée (changeId décrit le changement) † Les valeurs possibles de changeId sont définit dans l’interface IWorkbenchPage par les constantes CHANGE_*
  63. 63. 63Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ecouteurs † Interface IPerspectiveListener2 † void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, IWorkbenchPartReference part, String changeId) : identique à la méthode précédente à part qu’il est possible de connaître la vue ou l’éditeur impactée † Interface IPerspectiveListener3 † void perspectiveClosed(IWorkbenchPage p, IPerspectiveDescriptor p) : déclenchée si la perspective est fermée † void perspectiveDeactivated(IWorkbenchPage p, IPerspectiveDescriptor pDesc) : déclenchée si pDesc est désactivée † void perspectiveOpened(IWorkbenchPage p, IPerspectiveDescriptor pDesc) : déclenchée si la perspective a été ouverte † void perspectiveSaveAs(IWorkbenchPage p, IPerspectiveDescriptor old, IPerspectiveDescriptor new) : déclenchée quand la perspective est sauvegardée
  64. 64. 64Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ecouteurs † Interface IPerspectiveListener4 † void perspectivePreDeactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) : déclenchée avant que perspective soit désactivée † Principales valeurs de changeId † CHANGE_ACTION_SET_HIDE/SHOW : action est cachée ou montrée † CHANGE_EDITOR_AREA_HIDE/SHOW : éditeur est caché ou montré † CHANGE_EDITOR_CLOSE/OPEN : éditeur fermé ou montré † CHANGE_FAST_VIEW_ADD/REMOVE : fastview ajoutée ou montrée † CHANGE_VIEW_HIDE/SHOW : vue cachée ou montrée †CHANGE_RESET : reset de la perspective ou pas
  65. 65. 65Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Ecouteurs † Exemple : écouter les changements d’une perspective package eclipse.workbench.perspectiveexample; public class Activator extends AbsractUIPlugin { public void start(BundleContext context) throws Exception { super.start(context); plugin = this; IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); activeWorkbenchWindow.addPerspectiveListener(new IPerspectiveListener4() { public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { System.out.println("Activated " + perspective.getId()); } public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) { System.out.println("Changed " + perspective.getId() + " " + changeId); } ... }); } } Activator.java du Projet PerspectiveExample Récupération de la fenêtre active IWorkbenchWindow
  66. 66. 66Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Principales opérations † La plateforme Eclipse fournit un ensemble d’opérations prédéfinies sur des traitements concernant les perspectives † org.eclipse.ui.perspectives.showPerspective : montrer une perspective en particulier † org.eclipse.ui.window.closeAllPerspectives : fermer toutes les perspectives † org.eclipse.ui.window.closePerspective : fermer la perspective urante † org.eclipse.ui.window.customizePerspective : paramétrer la perspective courante † org.eclipse.ui.window.nextPerspective : afficher la perspective suivant la perspective courante
  67. 67. 67Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Principales opérations † org.eclipse.ui.window.previousPerspective : afficher la perspective précédent la perspective courante † org.eclipse.ui.window.resetPerspective : initialiser la perspective courante † org.eclipse.ui.window.savePerspective : sauvegarder la perspective courante † Ces opérations prédéfinies sont gérées par l’API Commands qui sera étudiée dans un prochain support de cours du Workbench
  68. 68. 68Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Principales opérations † Exemple : exécuter une commande programmatiquement package eclipse.workbench.perspectiveexample; public class PerspectiveCommandsViewPart extends ViewPart { public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(2, true)); Button resetButton = new Button(parent, SWT.PUSH); resetButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { try { IHandlerService hs = (IHandlerService) PlatformUI .getWorkbench().getService(IHandlerService.class); hs.executeCommand("org.eclipse.ui.window.resetPerspective", null); } catch (Exception e1) { e1.printStackTrace(); } } }); resetButton.setText("Reset Perspective"); } } PerspectiveCommandsViewPart.java du Projet PerspectiveExample Exécution de la commande « resetPerspective » par l’appui d’un bouton
  69. 69. 69Perspectives - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Principales opérations † Exemple : exécuter une commande dans la barre d’outils d’une vue Une commande dans la barre d’outils de la vue (org.eclipse.ui.window.customizePerspective) Une commande dans le menu localisé de la vue (org.eclipse.ui.perspectives.showPerspective) PerspectiveCommandsViewPart.java du Projet PerspectiveExample A voir dans la partie Commands, comment définir déclarativement de nouveaux éléments à une barre d’outils et à un menu localisé d’une vue

×