Eksempel - Java-editor
Introduktion
Java-editoreksemplet demonstrerer de standardfunktioner, der er tilgængelige for tilpassede teksteditorer. Det viser også, hvordan du registrerer en editor
til en filtype (i dette tilfælde .jav), og hvordan du definerer en tilpasset dokumentudbyder, som kan bruges af den pågældende editor.
Eksemplet er kun illustrativt. Funktioner til Java-redigering stilles til rådighed af Eclipse Java Tooling.
Koden til eksemplet findes i plugin-funktionen org.eclipse.ui.examples.javaeditor
.
Det anbefales, at du importerer denne plugin til dit arbejdsområde, hvis du vil se nærmere på koden.
Funktioner, som demonstreres i eksempeleditoren.
-
syntaksfremhævning
-
Indholdsassistance baseret på indholdstype (Javadoc og Java-kode)
-
kommunikation mellem indholdsstruktur og editor, dvs. valget af indholdsstruktur giver input til editorens fremhævningsgrad
-
to forskellige præsentationstilstande
-
markering af fremhævningsgraden vha. en indikator for visuelt interval
-
begrænsning af editoren, så den kun viser tekst i fremhævningsintervallet (f.eks. en enkelt metode for en Java-klasse)
-
markeringshåndtering
-
dokumentdeling
Funktioner, som ikke demonstreres
-
indholdsformatering
-
dynamisk afstemning af side med indholdsstruktur
Udfør eksemplet med Java-editoren
-
Opret et projekt
-
Opret en fil med filtypen ".jav" i det netop oprettede projekt.
Java-eksempeleditoren åbnes automatisk.
-
Indsæt Java-kode. Java-koden farves dynamisk. Editoreksemplet præsenterer følgende sprogelementer i forskellige farver: kommentarer på flere linjer, kommentarer på én linje, ord reserveret til Java-sprog, streng- og tegnkonstanter, almindelig Java-kode samt kommentarer på flere linjer ifølge Javadoc-retningslinjerne.
I disse Javadoc-kommentarer har Javadoc-nøgleord (grønne) og HTML-koder (grå) forskellig farve.
-
Åbn en ny Java-kommentar på flere linjer ved at indsætte "/*" uden for en Java-kommentar.
Al tekst mellem de indsatte "/*" og den første forekomst af "*/"
eller slutningen af teksten ændrer farve til rød. Tilføj endnu en "*". De røde intervaller ændrer farve til sort, da den almindelige kommentar på flere linjer nu anses for at indeholde Javadoc.
Start Kodeassistance vha. Ctrl-mellemrumstast.
Hensigten med Kodeassistance er at hjælpe brugeren med at skrive kode.
Det betyder, at når Kodeassistance startes, skal funktionen vise alle gyldige muligheder for færdiggørelse på det sted, den blev startet.
I Javadoc foreslår editoreksemplet altid alle Javadoc-nøgleord.
-
Uden for en Java-kommentar skal du starte indholdstip vha. Ctrl-Skift-mellemrumstast. Du får vist fem forslag.
Vælg et, og tryk på Enter. Et lille flydende rødt vindue med det valgte forslag vises over den aktuelle linje.
Indholdstip bruges til at lade brugeren udtrykke sin hensigt (f.eks. angivelse af metodestart) og herefter vise kontekstoplysninger, som vejleder brugeren.
I editoreksemplet anses forslaget for at være gyldigt inden for fem tegn fra det oprindelige sted, hvor funktionen blev startet.
Start Indholdsassistance ved at trykke på Ctrl-mellemrumstast, mens indholdstippet er synligt.
Når Indholdsassistance startes i denne situation, hjælper det brugeren med at fuldføre sin erklærede hensigt, som stadig er synlig i indholdstippet.
I almindelig Java-kode foreslår editoreksemplet altid alle Javadoc-nøgleord.
-
Gem Java-koden. Når du gemmer, opdateres indholdsstrukturen. Indholdsstrukturen indeholder ti indgange, som hver især repræsenterer et af ti lige store segmenter Java-kode i editoren.
Denne form for indholdsstruktur er valgt for at vise, at semantikken i fremhævede intervaller kan defineres vilkårligt.
(Se de følgende trin.)
-
Vælg en af indgangene i indholdsstrukturen. De tilsvarende linjer markeres med en blå søjle i venstre lodrette lineal i editoren.
-
Skift nu til segmenteret præsentationstilstand i Java-editoren. Kontrollér, at editoren er fremhævet, og tryk på den knap på desktoppens værktøjslinje, som har den tilknyttede hjælpetekst "Aktivér/Deaktivér segmenteret kildefremviser". Denne funktionalitet bruges til oversigter over enkelte metoder og lignende.
-
Vælg en anden indgang i indholdsstrukturen. Nu viser editoren kun det valgte segment.
Når du fravælger indgangen i indholdsstrukturen, vises hele Java-koden igen.
-
Vælg en indgang i indholdsstrukturen, vælg et udsnit af den synlige tekst, og tilføj en opgave valget.
Opgaven vises i opgavelisten.
Revidér den synlige kode. Vælg den tidligere oprettede opgave i opgaveliste, og tryk på knappen "Gå til fil".
Opgaven vælges i det synlige område og inkluderer de tidligere rettelser.
-
Vælg en anden indgang i indholdsstrukturen. Gør den opgave synlig, som tidligere er tilføjet opgavelisten.
Editorens fremhævede interval udvides automatisk, så det inkluderer den nu synlige opgave.
-
Åbn et nyt arbejdsområde. Åbn en Java-editor til den samme fil som i det oprindelige arbejdsområde.
Revidér editorindholdet. Skift tilbage til det oprindelige arbejdsområde.
Editoren viser de ændringer, der er foretaget i det andet arbejdsområde.
De to editorer, som viser den samme fil, er sammenkædet.
Principper for oprettelse af tilpassede teksteditorer
Følgende trin er som regel nødvendige for at udvikle en tilpasset teksteditor.
-
Opret en dokumentudbyder. En dokumentudbyder (se IDocumentProvider)
fremstiller og administrerer dokumenter (se IDocument), som indeholder en tekstrepræsentation af editorinputelementer.
Det er vigtigt at beslutte, hvordan konverteringen mellem element og tekstrepræsentation skal foregå, og om dokumentudbyderen skal være fælles for flere editorer eller ej.
Se klassen FileDocumentProvider i Java-eksempeleditoren.
-
Opret en dokumentinddeler. En dokumentinddeler (se IDocumentPartitioner)
deler dokumentet i ikke-sammenhængende områder. Inddeleren tildeler hvert område en indholdstype ud af et sæt foruddefinerede indholdstyper.
Dokumentinddelingen skal opdateres efter hver ændring af dokumentet.
Se klassen JavaPartitioner i Java-eksempeleditoren. JavaPartitioner fastlægger områder af typen "kommentarer på flere linjer", "Javadoc-kommentarer" og "alt andet". Du skal sørge for, at dokumentudbyderen er angivet for hvert dokument, som fremstilles af dokumentudbyderen.
-
Afgør, hvilken af kildefremviserens plugins skal stilles til rådighed. Andre understøttede plugins er strategier for automatisk indrykning, dobbeltklik-strategier, indholdsformatering og afstemning af tekstpræsentation. Følgende beskrivelse er begrænset til afstemningsfunktionen for tekstpræsentation (se IPresentationReconciler).
I Java-eksempeleditoren bruges afstemning af tekstpræsentation til at implementere syntaksfremhævning.
-
Opret de relevante udvidelser for alle kildefremviser-plugins og for hver understøttet indholdstype.
Som nævnt ovenfor definerer dokumentinddeleren de understøttede indholdstyper.
Standardimplementeringen af IPresentationReconciler
understøtter IPresentationDamagers og IPresentationRepairers som udvidelser.
Disse udvidelser anses for at være specifikke for en bestemt indholdstype.
Det betyder i forbindelse med en tilpasset editor, at brugeren først skal vælge en delmængde af de understøttede indholdstyper.
Områder af en bestemt type i den valgte delmængde bliver f.eks. syntaksfremhævede.
Udvidelserne skal implementeres for hver af disse typer.
Se JavaDamagerRepairer and JavaDocDamagerRepairer
i eksempeleditoren.
-
Byg en kildefremviserkonfiguration vha. de tidligere oprettede plugins og udvidelser.
Se JavaSourceViewerConfiguration i eksempeleditoren.
-
Tilpas klassen TextEditor eller AbstractTextEditor med den udviklede dokumentinddeler og kildefremviserkonfiguration.
Tilføj eller erstat funktioner, og tilføj den konstruerede editorkontekstmenu.
I den egentlige version skal denne tilpasning foretages i en underklasse.
Se JavaEditor
i eksempeleditoren.
-
Klargør en relevant funktionslinjebidragyder, som bidrager til desktoppens værktøjslinje og menuer med editorrelaterede funktioner.
Se JavaActionContributor i eksempeleditoren.
-
Udvid XML-konfigurationsfilen i editorens plugin, så editoren registrerer et bestemt sæt filtyper ved det foruddefinerede udvidelsespunkt.
Klargør desuden funktionslinjebidragyderen i XML-filen. Se plugin.xml i dette eksempel.
Kodeorganisering af eksemplet
Java-editorens kodeeksempel organiseres i fire pakker:
-
org.eclipse.ui.examples.javaeditor
indeholder alle editorspecifikke klasser.
-
org.eclipse.ui.examples.javaeditor.java
indeholder alle Java-specifikke kildefremviser-plugins, f.eks. JavaDamagerRepairer og den Java-specifikke dokumentinddeler.
-
org.eclipse.ui.examples.javaeditor.javadoc
indeholder alle Javadoc-specifikke kildefremviser-plugins som f.eks. JavaDocDamagerRepairer.
org.eclipse.ui.examples.javaeditor.util
indeholder klasser, som deles af de tre andre pakker.