Si votre plug-in lit les fichiers texte, il doit respecter la préférence encodage du fichier texte dans le plan de travail.
Les fichiers texte sont encodés en fonction de la plateforme et de l'environnement local. Le plus souvent, il suffit d'utiliser l'encodage du fichier texte pour l'environnement local du système d'exploitation hôte. Toutefois, un utilisateur peut souhaiter travailler avec des fichiers texte provenant d'une autre source. Sachant qu'il est possible d'utiliser Eclipse dans un environnement d'équipe en réseau, il est fort probable que les utilisateurs souhaitent travailler avec des fichiers texte employant un schéma d'encodage différent que leur schéma natif afin de faciliter l'échange de fichiers avec une autre équipe.
C'est pourquoi le plan de travail définit son propre profil d'encodage spécifié par l'utilisateur dans la boîte de dialogue Préférences. les plug-in interprétant des fichiers texte, tels que des éditeurs et des générateurs, doivent consulter la préférence d'encodage du plan de travail au lieu de supposer que l'encodage du système d'exploitation installé est employé.
La préférence d'encodage actuelle peut être obtenue à partir du plug-in de ressources à l'aide de ResourcesPlugin.getEncoding(). Cet encodage doit être transmis aux lecteurs java.io au lieu d'employer l'encodage système par défaut.
Pour vérifier les modifications apportées à cette préférence, vous pouvez relier un écouteur aux préférences ResourcesPlugin et réagir aux changements dans ResourcesPlugin.PREF_ENCODING. L'exemple suivant provient de l'éditeur de texte par défaut :
public void initialize(StatusTextEditor textEditor) { fTextEditor= textEditor; fPropertyChangeListener= new Preferences.IPropertyChangeListener() { public void propertyChange(Preferences.PropertyChangeEvent e) { if (ResourcesPlugin.PREF_ENCODING.equals(e.getProperty())) setEncoding(null, false); } }; Preferences p= ResourcesPlugin.getPlugin().getPluginPreferences(); p.addPropertyChangeListener(fPropertyChangeListener); fEncodingActionGroup= new EncodingActionGroup(fTextEditor); fEncodingActionGroup.update(); }