Wenn Ihr Plug-in zum Lesen von Textdateien dient, sollte es die Benutzervorgaben für die Codierung von Textdateien berücksichtigen, die in der Workbench definiert sind.
Textdateien werden abhängig von der Plattform und den verwendeten Ländereinstellungen unterschiedlich codiert. In den meisten Fällen können Sie die Standardcodierung für Textdateien verwenden, die für die benutzten Ländereinstellungen des Host-Betriebssystems definiert sind. Allerdings möchten Benutzer möglicherweise mit Textdateien aus anderen Quellen arbeiten. Wenn Sie die Plattform in einer Teamumgebung mit Netzwerkunterstützung einsetzen können, dann besteht durchaus die Möglichkeit, dass die Benutzer mit Textdateien arbeiten wollen, die ein anderes als das native Codierungsschema benutzen, um den einfachen Austausch von Dateien mit einem anderen Team zu gewährleisten.
Aus diesem Grund definiert die Workbench ein eigenes Codierungsprofil, das vom Benutzer im Dialog Benutzervorgaben angegeben wird. Benutzer können eine der verfügbaren Codierungsoptionen auf der Benutzervorgabenseite Workbench > Editoren auswählen oder eine eigene Codierung eingeben Plug-ins für das Interpretieren von Textdateien (z. B. Editoren und Erstellungsprogramme) sollten sich daher nach den Benutzervorgaben der Workbench für die Codierung richten, anstatt davon auszugehen, dass immer das Codierungsschema des installierten Betriebssystems verwendet wird.
Die Codierungsbenutzervorgaben rufen Sie unter Verwendung vonResourcesPlugin.getEncoding() ab. Diese Codierung sollte an Eingabeprogramme für java.io übergeben werden, statt die Standardcodierung des Systems zu verwenden. Wenn Sie Änderungen an dieser Benutzervorgabe protokollieren wollen, können Sie für die Benutzervorgaben von ResourcesPlugin eine Listener-Funktion integrieren und die Änderungen in ResourcesPlugin.PREF_ENCODING aufzeichnen. Das folgende Beispiel stammt aus dem Standardtexteditor:
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(); }
Im Menü Bearbeiten > Codierung kann ein Benutzer auch die Codierung für eine bestimmte Datei ändern. Wenn Sie Text in einem geöffneten Editor bearbeiten, sollten Sie stattdessenIEncodingSupport.getEncoding() verwenden, um die Codierung für den speziellen Editor abzurufen. Das folgende Beispiel veranschaulicht, wie diese Informationen aus einem Editor abgerufen werden:
IEncodingSupport encodingSupport = (IEncodingSupport) editor.getAdapter(IEncodingSupport.class); String encoding = encodingSupport.getEncoding();