Beispiel - Java-Editor
Einführung
Das Beispiel des Java-Editors demonstriert die Standardfunktionen,
die für angepasste Texteditoren zur Verfügung stellen. Es
veranschaulicht außerdem, wie Sie einen Editor für eine
Dateierweiterung (in diesem Fall ".jav") registrieren und einen
angepassten Dokument-Provider definieren, der durch diesen Editor
verwendet werden soll. Das Beispiel ist lediglich zur Veranschaulichung gedacht. Die Unterstützung für die Bearbeitung von Java-Dateien wird durch die
Java-Tools von Eclipse zur Verfügung gestellt.
Im Beispieleditor demonstrierte Funktionen
-
Syntaxhervorhebung
-
Inhaltstypspezifische Unterstützung für Inhalt (JavaDoc und Java-Code)
-
Bereich zwischen Inhaltsgliederung und Editor (d. h. Auswahl in der
Inhaltsgliederung füllt den Hervorhebungsbereich des Editors)
-
Zwei unterschiedliche Darstellungsmodi
-
Markierung des Hervorhebungsbereichs mit einem optischen
Bereichsanzeiger
-
Anpassung des Editors für das ausschließliche Anzeigen von Text im
Hervorhebungsbereich (z. B. Anzeigen einer einzigen Methode in einer
Java-Klasse)
-
Markierungsverarbeitung
-
Gemeinsame Benutzung von Dokumenten
Nicht demonstrierte Funktionen
-
Inhaltsformatierung
-
Dynamische Anpassung der Seite mit der Inhaltsgliederung
Beispieleditor ausführen
-
Erstellen Sie ein Projekt.
-
Erstellen Sie im neu erstellten Projekt eine Datei mit der
Dateierweiterung ".jav".
Der Java-Beispieleditor wird automatisch geöffnet.
-
Fügen Sie Java-Code ein. Der Java-Code wird dynamisch mit Farben
versehen. Der Beispieleditor verwendet unterschiedliche Farben zum
Anzeigen der folgenden Sprachenelement:
mehrzeilige Kommentare, einzeilige Kommentare, reservierte Wörter,
Zeichenfolgen und Zeichenkonstanten der Java-Sprache, normaler
Java-Code sowie mehrzeilige Kommentare gemäß der JavaDoc-Richtlinien. Innerhalb solcher JavaDoc-Kommentare werden JavaDoc-Schlüsselwörter
und Tags in unterschiedlichen Farben angezeigt.
-
Öffnen Sie einen neuen mehrzeiligen Java-Kommentar, indem Sie
außerhalb eines Java-Kommentars die Zeichen "/*" eingeben.
Die Farbe des gesamten Textes zwischen den eingefügten Zeichen "/*" und
dem ersten
Vorkommen der Zeichen "*/" bzw. dem Textende ändert sich in Rot. Hängen Sie ein weiteres Zeichen "*" an. Die Farbe ändert sich von Rot
in Grün, da der normale mehrzeilige Kommentar nun als Kommentar
betrachtet wird, der JavaDoc-Angaben enthält. Rufen Sie die Unterstützung für den Inhalt auf, indem Sie
gleichzeitig die Taste Strg und die Leertaste drücken.
Die Unterstützung für den Inhalt soll dem Benutzer beim Schreiben von
Code helfen.
Bei ihrem Aufruf sollte die Unterstützung für den Inhalt eine Liste
mit allen möglichen Fertigstellungen für die Position anzeigen, an
der sie aufgerufen wurde. Innerhalb von JavaDoc schlägt der Beispieleditor immer alle
JavaDoc-Schlüsselwörter vor.
-
Rufen Sie außerhalb eines Java-Kommentars den Tipp für Inhalt auf,
indem Sie gleichzeitig die Taste Strg, die Umschalttaste und die
Leertaste drücken. Es werden fünf Vorschläge aufgelistet. Wählen Sie einen der Vorschläge aus, und drücken Sie die
Eingabetaste. Über der aktuellen Zeile wird in Rot ein kleines
variables Fenster angezeigt, das den ausgewählten Vorschlag enthält.
Der beabsichtigte Zweck eines Tipps für den Inhalt ist, dass der
Benutzer seine Absicht ausdrückt (z. B. Eingabe eines
Methodenaufrufs) und dann kontextbezogene Informationen aufgerufen
werden, die ihn hierbei anleiten können. Im Beispieleditor ist der Vorschlag für fünf Zeichen um die Position
herum gültig, für die er ursprünglich aufgerufen wurde. Während der Tipp für den Inhalt angezeigt wird, rufen Sie die
Unterstützung für den Inhalt auf, indem Sie die Taste Str und die
Leertaste drücken. Die in einer solchen Situation aufgerufene Unterstützung für den
Inhalt soll dem Benutzer dabei helfen, die im Tipp für den Inhalt
angegebene Absicht umzusetzen. Innerhalb des normalen Java-Codes schlägt der Beispieleditor immer
alle Java-Schlüsselwörter vor.
-
Speichern Sie den Java-Code. Durch die Speicherung wird die
Inhaltsgliederung aktualisiert. Die Inhaltsgliederung enthält zehn
Einträge. Jeder dieser Einträge stellt eines der zehn gleich großen
Segmente des Java-Codes im Editor dar. Diese Darstellung der Inhaltsgliederung wurde gewählt, um deutlich zu
machen, dass die Semantik von hervorgehobenen Bereichen willkürlich
definiert werden kann. (Siehe nächste Schritte.)
-
Wählen Sie einen der Einträge in der Inhaltsgliederung aus. Die
entsprechenden Zeilen werden in der linken vertikalen Skala des
Editors durch einen blauen Balken gekennzeichnet.
-
Schalten Sie nun im Java-Editor auf den Modus für die segmentierte
Darstellung um. Hierzu stellen Sie sicher, dass der Editor fokussiert
ist, und drücken Sie die Schaltfläche in der Desktop-Symbolleiste,
deren Kurzinfo angibt, dass die Anzeigefunktion für die segmentierte
Quelle aktiviert/inaktiviert wird.
Diese Funktion ist beispielsweise für die Verwendung in Sichten mit
einfachen Methoden gedacht.
-
Wählen Sie in der Inhaltsgliederung einen anderen Eintrag aus. Jetzt
zeigt der Editor lediglich das ausgewählte Segment an. Wenn Sie den Eintrag in der Inhaltsgliederung abwählen, wird wieder
der gesamte Java-Code angezeigt.
-
Wählen Sie in der Inhaltsgliederung einen Eintrag aus, wählen Sie
einen Teil des sichtbaren Textes aus, und fügen Sie eine Task für die
Auswahl hinzu. Die Task wird daraufhin in der Taskliste angezeigt.
Ändern Sie den sichtbaren Code. Wählen Sie in der Taskliste die zuvor
erstellte Task aus, und drücken Sie die Schaltfläche "Gehe zu Datei". Die Task wird im sichtbaren Bereich ausgewählt, wobei die zuvor
angelegten Änderungen korrekt berücksichtigt werden.
-
Wählen Sie in der Inhaltsgliederung einen anderen Eintrag aus. Zeigen
Sie die zuvor hinzugefügte Task in der Taskliste an. Die Hervorhebungsbereich des Editors wird automatisch vergrößert und
schließt den Bereich der angezeigten Task ein.
-
Öffnen Sie einen neuen Arbeitsbereich. Öffnen Sie im neuen
Arbeitsbereich einen Java-Editor für dieselbe Datei wie im ersten
Arbeitsbereich. Ändern Sie den Inhalt des Editors. Wechseln Sie zurück in den ersten
Arbeitsbereich. Der Editor zeigt die Änderungen an, die im anderen Arbeitsbereich
vorgenommen wurden. Die beiden Editoren, die dieselbe Datei anzeigen, sind direkt
miteinander verbunden.
Grundregeln für die Erstellung von angepassten Texteditoren
Die folgenden Schritte müssen normalerweise ausgeführt werden, wenn
ein angepasster Texteditor entwickelt wird.
-
Erstellen Sie einen Dokument-Provider. Ein Dokument-Provider (siehe
IDocumentProvider) erstellt und verwaltet
Dokumente (siehe IDocument), die eine Textdarstellung von
Eingabeelementen eines Editors enthalten. Es muss unbedingt festgelegt werden, wie die Umsetzung zwischen
Element- und Textdarstellung aussehen soll und ob der
Dokument-Provider von mehreren Editoren gemeinsam benutzt werden soll
oder nicht. Weitere Informationen finden Sie in der Klasse
"FileDocumentProvider" des Java-Beispieleditors.
-
Erstellen Sie eine Funktion für die Dokumentpartitionierung. Eine
solche Funktion (siehe IDocumentPartitioner) unterteilt ein Dokument in unverknüpfte
Bestandteile. Die Partitionierungsfunktion ordnet jedem Bestandteil 1 Inhaltstyp
aus einer
Gruppe von Inhaltstypen zu, die in der Partitionierungsfunktion
vordefiniert sind. Die Partitionierung des Dokuments muss bei jeder Dokumentänderung
aktualisiert werden. Weitere Informationen finden Sie in der Klasse
"JavaPartitioner" des Java-Beispieleditors. Die Klasse
"JavaPartitioner" bestimmt Bereiche der Typen "Mehrzeiliger
Kommentar", "JavaDoc-Kommentar" und "Anderes". Es muss sichergestellt sein, dass der Dokument-Provider für jedes
Dokument definiert ist, das durch den Dokument-Provider erzeugt wird.
-
Legen Sie fest, welche Plug-ins für Quellenanzeigefunktionen
bereitgestellt werden sollen. Unterstützte Plug-ins sind unter
anderem Strategien für die automatische Einrückung, Strategien für
Doppelklicken, Formatierungsprogramme für Inhalt und
Anpassungsfunktionen für die Textdarstellung. Die anschließende Beschreibung beschränkt sich auf die
Anpassungsfunktion für die Textdarstellung (siehe IPresentationReconciler).
Im Java-Beispieleditor, wird die Anpassungsfunktion für die
Textdarstellung verwendet, um die Syntaxhervorhebung zu
implementieren.
-
Erstellen Sie für alle Plug-ins für Quellenanzeigefunktionen die
entsprechenden Erweiterungen für jeden unterstützten Inhaltstyp. Wie bereits erläutert definiert die Funktion für die
Dokumentpartitionierung die unterstützten Inhaltstypen. Die Standardimplementierung von IPresentationReconciler
unterstützt die Erweiterungen IPresentationDamagers und
IPresentationRepairers.
Diese Erweiterungen werden als spezifische Erweiterungen für einen
bestimmten Inhaltstyp betrachtet. Daher muss der Benutzer für einen angepassten Editor zunächst eine
Untergruppe der unterstützten Inhaltstypen auswählen. In Bereichen eines Typs, der zur ausgewählten Untergruppe gehört,
wird beispielsweise die Syntax hervorgehoben. Die Erweiterungen für
jeden dieser Typen müssen implementiert werden. Siehe JavaDamagerRepairer und JavaDocDamagerRepairer
im Beispieleditor.
-
Erstellen Sie eine Konfiguration für die Quellenanzeigefunktion,
indem Sie die zuvor erstellten Plug-ins und Erweiterungen verwenden. Siehe JavaSourceViewerConfiguration im Beispieleditor.
-
Passen Sie die Klasse "TextEditor" oder "AbstractTextEditor" an die
entwickelte Funktion für die Dokumentpartitionierung und die
Konfiguration der Quellenanzeigefunktion an. Fügen Sie Aktionen hinzu, oder ersetzen Sie Aktionen, und übernehmen
Sie den Aufbau des Kontextmenüs im Editor. In der tatsächlichen Version muss diese Anpassung in einer
Unterklasse erfolgen. Siehe JavaEditor
im Beispieleditor.
-
Definieren Sie eine geeignete Ergänzung für die Aktionsleistes, die
die Symbolleiste und die Menüs des Desktops durch editorbezogene
Aktionen ergänzt. Siehe JavaActionContributor im Beispieleditor.
-
Erweitern Sie die XML-Konfigurationsdatei des Editor-Plug-ins, damit
der Editor am vordefinierten Editorerweiterungspunkt für eine
spezifische Gruppe von Dateierweiterungen registriert wird. Definieren Sie außerdem die Ergänzung für die Aktionsleiste in der
XML-Datei.
Siehe Datei "plugin.xml" dieses Beispiels.
Codeaufbau im Beispiel
Der Beispielcode ist in vier Pakete aufgeteilt:
-
Das Paket org.eclipse.ui.examples.javaeditor
enthält alle editorspezifischen Klassen.
-
Das Paket org.eclipse.ui.examples.javaeditor.java enthält
alle Plug-ins für Java-spezifische Quellenanzeigefunktionen
(z. B. JavaDamagerRepairer) wie auch die Java-spezifische
Funktion für die Dokumentpartitionierung.
-
Das Paket org.eclipse.ui.examples.javaeditor.javadoc enthält
alle Plug-ins für JavaDoc-spezifische Quellenanzeigefunktionen (z. B.
JavaDocDamagerRepairer).
Das Paket org.eclipse.ui.examples.javaeditor.util
enthält Vereinfachungsklassen, die von den drei anderen Paketen
gemeinsam benutzt werden.