Andre ansvarsområder for teksteditorer

Editoren til Java-eksemplet overtager en del praktisk standardfunktionsmåde fra AbstractTextEditor.  Strukturen for tekstredigering håndterer forskellige andre ansvarsområder, som du kan tilpasse ved at tilsidesætte metoder i AbstractTextEditor.  Gennemse implementeringen af denne klasse og dens underklasser for at se, hvordan funktionsmåden tilpasses i strukturen.

Her følger nogle af de nyttige strukturfunktioner, der kan konfigureres.

Håndtering af indstillinger

Teksteditorer bidrager typisk med brugerindstillinger, der styrer editorens præsentation og funktionsmåde. I tekststrukturen har hver forekomst af teksteditoren en tilknyttet pulje af indstillinger, som bruges til at oprette adgang til brugerindstillingerne. Indstillingspuljen kan klargøres af din editor, eller du kan overtage den fra indstillingspuljer, som allerede anvendes i strukturen.

I tilfælde af editoren til Java-eksemplet overtager den indstillingspulje, der er initialiseret af TextEditor. Det er den indstillingspulje, som er defineret af plugin-funktionen til arbejdsbænk-editorerne.  

protected void initializeEditor() {
	...
	setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore());
}
Editorens plugin-indstillinger kan rettes på indstillingssiderne under Generelt > Editorer og Generelt > Editorer > Teksteditorer.

Hvis du ikke vil bruges standardtekstindstillingerne for arbejdsbænken til din editor, kan du angive en anden indstillingspulje. Det gøres typisk ved at tilsidesætte initializeEditor og angive din egen indstillingspulje. Hvis du vælger at bruge din egen indstillingspulje, tilsidesætter du desuden metoden handlePreferenceStoreChanged(), som udløses, hver gang en indstilling opdateres.

Tastbindinger

Tastbindingskontekster er praktiske til etablering af en opslagsrækkefølge for tastbindinger. Med kontekstafhængige tastbindinger nedsættes risikoen for, at forskellige plugins bidrager med modstridende tastsekvenser. Arbejdsbænken fungerer som standard i en generisk kontekst, når der arbejdes med vinduer eller dialogbokse. Når en teksteditor bliver aktiv, er den ansvarlig for at nulstille konteksten til tekstredigeringskonteksten, så de editorspecifikke tastbindinger bliver aktive.

I platformens tekststruktur har hver forekomst af teksteditoren et tilknyttet array af tastbindingsomfang. Det er ansvarligt for at angive de rigtige omfang, når det bliver aktivt. AbstractDecoratedTextEditor definerer dette omfang og sørger for at gøre det aktivt. Omfanget tildeles i en metode, som kaldes fra konstruktøren:

protected void initializeKeyBindingScopes() {
	setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" });  
}

Argumentet til metoden er et array af id'er, som er defineret til kontekster. Hvis du vil have, at din editor definerer sin egen tastbindingskontekst, kan du tilsidesætte denne metode i editorklassen eller angive omfanget dynamisk vha. setKeybindingScopes.

Selve konteksten skal defineres sammen med den tilsvarende id i udvidelsespunktet org.eclipse.ui.contexts. Her følger definitionen på tekstredigeringskonteksten.

<extension
	point="org.eclipse.ui.contexts">
	<context
		name="%context.editingText.name"
		description="%context.editingText.description"
		id="org.eclipse.ui.textEditorScope"
		parentId="org.eclipse.ui.contexts.window">
	</context>
	...

Bemærk: Vi bruger udtrykkene omfang og kontekst med samme betydning her. Metodenavnene i tekstklasserne refererer stadig til tastbindingskontekster som omfang. Disse metodenavne afspejler den oprindelige implementering af kontekster som omfang og anvender forældet terminologi.