Interne og eksterne editorer

org.eclipse.ui.editors

Dette udvidelsespunkt bruges til at tilføje nye editorer til arbejdsbænken. En editor er en visuel komponent på en arbejdsbænksside. Den bruges typisk til at redigere eller gennemse et dokument eller inputobjekt. Når brugeren vil åbne en editor, kalder han eller hun typisk "Åbn" på en IFile. Når denne funktion udføres, konsulteres arbejdsbænkens registreringsdatabase for at finde en egnet editor til filtypen, og derefter oprettes en ny forekomst af editortypen. Det faktiske resultat afhænger af editorens type. Arbejdsbænken understøtter oprettelse af interne editorer, som er tæt integreret med arbejdsbænken, og eksterne editorer, som startes i et separat rammevindue. Der er også forskellige niveauer af integration mellem disse yderligheder.

Hvis der er tale om en intern editor, kan der opnås tæt integration mellem arbejdsbænksvinduet og editordelen. Arbejdsbænkens menu og værktøjslinje forudindlæses med en række almindelige funktioner, f.eks. klip, kopiér og sæt ind. Den aktive del, oversigt eller editor, forventes at levere implementeringen til disse funktioner. En intern editor kan også definere nye funktioner, som vises i arbejdsbænksvinduet. Disse funktioner vises kun, når editoren er aktiv.

Integrationen mellem arbejdsbænken og eksterne editorer er svagere. I dette tilfælde kan arbejdsbænken starte en editor, men derefter har den ingen andre metoder til at afgøre tilstanden af den eksterne editor eller til at samarbejde med den end ved at bruge filsystemet.

<!ELEMENT extension (editor*)>

<!ATTLIST-udvidelse

point CDATA #REQUIRED

id    CDATA #IMPLIED

navn  CDATA #IMPLIED>


<!ELEMENT editor (contentTypeBinding*)>

<!ATTLIST editor

id               CDATA #REQUIRED

name             CDATA #REQUIRED

icon             CDATA #IMPLIED

extensions       CDATA #IMPLIED

class            CDATA #IMPLIED

command          CDATA #IMPLIED

launcher         CDATA #IMPLIED

contributorClass CDATA #IMPLIED

default          (true | false) "false"

filenames        CDATA #IMPLIED

symbolicFontName CDATA #IMPLIED

matchingStrategy CDATA #IMPLIED>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

Oplyser, at indholdseditoren forstår den angivne indholdstype og egner sig til redigering af filer af den pågældende type.



Her er et eksempel på en intern editorudvidelsesdefinition:

   

<udvidelsespunkt=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Lækker XYZ XML-editor"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

Hvis kommandoattributten bruges, bliver den behandlet som en ekstern programkommandolinje, der udføres på en platformafhængig måde.

Hvis startprogramattributten bruges, bliver editoren også behandlet som et eksternt program. I så fald skal den angivne klasse implementere org.eclipse.ui.IEditorLauncher. Der oprettes en forekomst af startprogrammet, og så startes open(IFile file) for at starte editoren.

Hvis klasseattributten anvendes, antager arbejdsbænken, at det er en intern editor, og den angivne klasse skal implementere org.eclipse.ui.IEditorPart. Det er almindelig praksis at bruge subclass org.eclipse.ui.EditorPart ved definition af en ny editortype. Det er også nødvendigt at definere en contributorClass-attribut. Den angivne klasse skal implementere org.eclipse.ui.IEditorActionBarContributor og bruges til at tilføje nye funktioner til arbejdsbænkens menu- og værktøjslinje, som afspejler faciliteterne i editortypen.

På arbejdsbænken kan der være mere end én åben editor af en bestemt type. Der kan f.eks. være en eller flere åbne Java-editorer. For at undgå, at der oprettes sammenfaldende funktioner og funktionsbilleder, er editorbegrebet opdelt i to. En IEditorActionBarContributor er ansvarlig for oprettelse af funktioner. Editoren er ansvarlig for implementering af funktioner. Desuden deles bidragyderen mellem alle de åbne editorer. Som et resultat af dette design er der kun ét sæt funktioner for en eller flere åbne editorer.

Bidragyderen vil tilføje nye funktioner til arbejdsbænkens menu- og værktøjslinje, som afspejler faciliteterne i editortypen. Disse funktioner deles, og fungerer på den aktive editor, når de startes. Den aktive editor overføres til bidragyderen ved at starte IEditorActionBarContributor.setActiveEditor. Id'erne til funktioner og større grupper i arbejdsbænksvinduet defineres i org.eclipse.ui.IWorkbenchActionConstants. Disse skal anvendes som referencepunkt ved tilføjelse af nye funktioner. Menuer på øverste niveau oprettes ved hjælp af følgende værdier til stiattributten:

Funktioner og menuer, der tilføjes i disse stier, vises kun, mens den tilknyttede editor er aktiv. Når editoren lukkes, fjernes menuer og funktioner.

Arbejdsbænken indeholder en "standardteksteditor". Slutbrugerproduktet kan indeholde andre editorer som en del af leverancen. I så fald registreres editorerne som udvidelser vha. ovennævnte syntaks.