org.eclipse.ui.editors

Un éditeur est une partie du plan de travail qui permet à un utilisateur d'éditer un objet (souvent un fichier). Les éditeurs fonctionnent de la même façon que les outils d'édition du système de fichiers, sauf qu'ils sont étroitement intégrés à l'interface utilisateur du plan de travail de la plateforme. Un éditeur est toujours associé à un objet d'entrée (IEditorInput). Vous pouvez considérer l'objet d'entrée comme un document ou un fichier qui est édité. Les modifications effectuées dans un éditeur ne sont pas validées tant que l'utilisateur ne les a pas sauvegardées.

Un seul éditeur peut être ouvert pour toute entrée d'éditeur spécifique dans une page du plan de travail. Par exemple, si l'utilisateur édite le fichier readme.txt dans le plan de travail, la réouverture de ce fichier dans la même perspective activera le même éditeur. (Vous pouvez ouvrir un autre éditeur sur le même fichier à partir d'une fenêtre ou d'une perspective différente du plan de travail.) Contrairement aux vues cependant, le même type d'éditeur (un éditeur de texte par exemple) peut être ouvert plusieurs fois dans une page du plan de travail pour des entrées différentes.

Le point d'extension du plan de travail org.eclipse.ui.editors est utilisé par les plug-ins pour ajouter des éditeurs au plan de travail. Les plug-ins qui ajoutent un éditeur doivent enregistrer l'extension de l'éditeur dans leur fichier plugin.xml, avec les informations de configuration propres à l'éditeur. Certaines de ces informations, la classe d'implémentation et le nom et l'icône utilisés dans les menus et les libellés du plan de travail par exemple, sont similaires aux informations de la vue. De plus, les extensions d'éditeur spécifient les extensions de fichier ou les modèles de nom de fichier des types de fichiers que l'éditeur comprend. Les éditeurs peuvent également définir contributorClass, une classe qui ajoute des actions aux menus et aux barres d'outils du plan de travail lorsque l'éditeur est actif.

L'interface pour les éditeurs est définie dans IEditorPart, mais les plug-ins peuvent choisir d'étendre la classe EditorPart plutôt que d'implémenter IEditorPart à partir de rien.

Remarque : Les extensions d'éditeur peuvent être également configurées pour lancer un programme externe afin d'éditer un fichier ou de fournir une classe de lanceur utilisée pour appeler un code Java existant comme éditeur. Dans cette présentation, nous allons mettre l'accent sur les éditeurs qui sont réellement étroitement intégrés au plan de travail et implémentés à l'aide de IEditorPart.

L'outil readme fournit un éditeur personnalisé principalement dans le but de faire contribuer sa propre page de décomposeur de contenu à la vue de l'aperçu du plan de travail.   

La configuration de l'extension de l'éditeur est définie comme suit :

<extension
    point = "org.eclipse.ui.editors">
        <editor
            id = "org.eclipse.ui.examples.readmetool.ReadmeEditor"
            name="Readme File Editor"
            icon="icons/basic/obj16/editor.gif"
            class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
            extensions="readme"
            contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
        </editor>
</extension>

Nous voyons les marques de configuration habituelles pour l'id, le nom, l'icône et la classe. Il y a également quelque chose de nouveau : la classe contributorClass.

Programmes de contribution d'actions de l'éditeur

La classe du programme de contribution ajoute des actions liées à l'éditeur aux menus et à la barre d'outils du plan de travail. Elle doit implémenter l'interface IEditorActionBarContributor. Le programme de contribution est isolé de l'éditeur lui-même du fait que toute page d'un plan de travail donné peut avoir plusieurs éditeurs du même type. Au lieu que chaque instance d'un type d'éditeur crée des actions et des images, un seul programme de contribution est partagé par tous les éditeurs d'un type spécifique. 

Dans ReadmeEditorActionBarContributor, nous faisons contribuer trois actions, "Editor Action1," "Editor Action2," et "Editor Action3". Ces actions sont définies dans le constructeur.

public ReadmeEditorActionBarContributor() {
    ...
    action1 = new EditorAction("&Editor Action1");
    action1.setToolTipText("Readme Editor Action1");
    action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE);
    ...
    action2 = new EditorAction("&Editor Action2");
    action2.setToolTipText("Readme Editor Action2");
    action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE);
    ...
    action3 = new EditorAction("&Editor Action3");
    action3.setToolTipText("Readme Editor Action3");
    action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE);
    ...
}

Les noms et les icônes des actions sont définis dans le code plutôt que dans le fichier plugin.xml. Notez la similitude de ces informations avec celles de viewActions que nous avons vues dans les marques de l'action d'affichage. Les actions sont définies dans le code du fait que nous devons gérer leur partage entre différentes instances du même éditeur.

Comme elles sont crées dans le constructeur, les actions sont indépendantes de toute instance particulière de l'éditeur. Lorsqu'un éditeur est actif et que les actions doivent être installées dans les menus et la barre d'outils du plan de travail, le message setActiveEditor est envoyé au programme de contribution. Ce dernier connecte les actions d'éditeur à un éditeur spécifique.  

public void setActiveEditor(IEditorPart editor) {
    ...
    action1.setActiveEditor(editor);
    action2.setActiveEditor(editor);
    action3.setActiveEditor(editor);
    ...
}

Comme vous pouvez le voir, les actions s'affichent dans le menu et la barre d'outils du plan de travail lorsqu'un éditeur de readme est actif.

Contributions de l'éditeur Readme à la barre de menus du plan de travail
Contributions de l'éditeur Readme à la barre d'outils du plan de travail

Ces options de menu et de barre d'outils s'affichent uniquement lorsque l'éditeur est actif. L'emplacement des options de menu et de barre d'outils peut être spécifié comme indiqué à la section Chemins d'accès aux menus et à la barre d'outils.

Editeurs et décomposeurs de contenu

L'éditeur de readme, ReadmeEditor, n'est pas très compliqué. Il étend la classe TextEditor afin de pouvoir ajouter une page de décomposeur de contenu personnalisée à la vue de l'aperçu lorsqu'un fichier readme est en cours d'édition. Il ne modifie pas le comportement au sein de l'éditeur de texte.

Les éditeurs comportent souvent des gestionnaires de contenu correspondants qui fournissent une vue structurée du contenu de l'éditeur et aident l'utilisateur à naviguer dans le contenu de l'éditeur. Pour plus de détails, reportez-vous à la section Décomposeurs de contenu.

Nous aborderons l'implémentation des éditeurs de texte à la section Editeurs de texte et texte JFace.