Liste de liens :
Liste de liens :
Aider l'utilisateur à éditer des fichiers texte brut TXT (puis XML) dans TXM.
Cela fait partie de l’environnement d'assistance à la préparation des sources SW (Source Workbench).
Utiliser l'éditeur de texte d'Eclipse et ajouter des commandes spécifiques à TXM.
Il est disponible depuis le plugin “org.eclipse.ui.editors” : L'éditeur de TXM peut étendre l'éditeur de texte d'eclipse d'id “org.eclipse.ui.DefaultTextEditor” et de classe “org.eclipse.ui.editors.text.TextEditor” (implémentation de org.eclipse.ui.texteditor.AbstractTextEditor).
Les différents types d'éditeurs de la plate-forme sont gérées par l'IEditorRegistry.
L'architecture est décrite ICI et LÀ (avec des exemples de code source de manipulation d'éditeurs).
Il y a de bonnes synthèses :
La variable globale 'editor' de TXM pointe vers l'éditeur actif, qui est un objet répondant à l'API ITextEditor (implémentée notamment par la classe org.eclipse.ui.editors.text.TextEditor).
Un objet de type TextEditor :
Le contrôleur permet de manipuler le curseur :
L'editor permet de connaître la position du curseur :
La vue permet de savoir quelles lignes sont affichées :
Le modèle permet :
Le package org.eclipse.jface.text contient des dizaines d'interfaces (API) pour manipuler les éditeurs de texte.
Exemple de manipulation d'un éditeur depuis Groovy (chercher la chaine 'fait' dans l'éditeur actif et insérer la chaine '<insertedString>' devant) :
import org.eclipse.jface.text.FindReplaceDocumentAdapter dprov = editor.getDocumentProvider() doc = dprov.getDocument(editor.getEditorInput()) redoc = new FindReplaceDocumentAdapter(doc) searchString = "fait" region = redoc.find(0, searchString, true, false, false, false) if (region == null) { println "** '"+searchString+"' not found, aborting"; return } redoc.replace("<insertedString>"+searchString, false) // find(start, findString, forwardSearch, caseSensitive, wholeWord, regExSearch) // start - document offset at which search starts // findString - the string to find // forwardSearch - the search direction // caseSensitive - indicates whether lower and upper case should be distinguished // wholeWord - indicates whether the findString should be limited by white spaces as defined by Character.isWhiteSpace. Must not be used in combination with regExSearch. // regExSearch - if true findString represents a regular expression Must not be used in combination with wholeWord. // replace(text, regExReplace) // text - the substitution text // regExReplace - if true text represents a regular expression
Voir aussi :
Exemple d'AbstractEditor :
Un certain nombre de commandes sont déclarées dans le plugin “org.eclipse.ui.workbench.texteditor”, d'autres dans “org.eclipse.ui.editors” et celles de base (copier, coller, supprimer) dans “org.eclipse.ui” :
cat : org.eclipse.ui.category.edit
cat : org.eclipse.ui.category.file
Il est déclaré dans la méthode TextEditor.initializeEditor() :
setEditorContextMenuId("#TextEditorContext"); //$NON-NLS-1$ setRulerContextMenuId("#TextRulerContext"); //$NON-NLS-1$ setHelpContextId(ITextEditorHelpContextIds.TEXT_EDITOR);
TODO: trouver comment le menu est rempli (actions, entrée de menus d'un fichier plugin.xml
L'éditeur déclare utiliser le contexte “org.eclipse.ui.textEditorScope” dans sa méthode abstractDecoratedTextEditor.initializeKeyBindingScopes().
L'éditeur texte de TXM hérite de toutes les fonctionnalités de celui d'Eclipse.
Sont rajoutées des commandes liées au scriptage de la plateforme.
Qui Quand Quoi