Andre oppgaver for tekstredigeringsprogrammer

Java-eksempelredigeringsprogrammet arver en rekke nyttig standardfunksjonalitet fra AbstractTextEditor.  Rammeverket for tekstredigering håndterer flere andre oppgaver som du kan tilpasse ved å overstyre metoder i AbstractTextEditor.  Bla gjennom implementeringen av denne klassen og subklassene for å se hvordan funksjonaliteten er tilpasset i rammeverket.

Nedenfor ser du noen nyttige rammeverkfunksjoner som kan konfigureres.

Preferansehåndtering

Tekstredigeringsprogrammer bidrar vanligvis med brukerpreferanser som styrer presentasjonen og funksjonaliteten i redigeringsprogrammet. I tekstrammeverket har hver forekomst av tekstredigeringsprogrammet et tilknyttet preferanselager som brukes for å få tilgang til brukerpreferanser. Preferanselageret kan konfigureres av redigeringsprogrammet eller arves fra preferanselagre som allerede brukes i rammeverket.

Java-eksempelredigeringsprogrammet arver preferanselageret som initialiseres av TextEditor.  Dette preferanselageret defineres av plugin-modulen for redigeringsprogrammer i arbeidsbenken.  

protected void initializeEditor() {
	...
	setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore());
}
Preferanser for plugin-modulen for redigeringsprogrammer kan manipuleres via preferansesidene Generelt > Redigeringsprogrammer og Generelt > Redigeringsprogrammer > Tekstredigeringsprogrammer.

Hvis du ikke vil at redigeringsprogrammet skal bruke standard tekstpreferanser for arbeidsbenken, kan du definere et annet preferanselager. Dette gjøres vanligvis ved å overstyre initializeEditor og definere et eget preferanselager.  Hvis du bruker ditt eget preferanselager, må du også overstyre metoden handlePreferenceStoreChanged(), som utløses hver gang en preferanse oppdateres.

Tastbindinger

Kontekst for tastbinding er nyttig når oppslagsrekkefølgen for tastbinding skal fastsettes. Ved kontekstavhengige tastbindinger reduseres risikoen for at de ulike plugin-modulene bidrar til motstridende tastsekvenser. Som standard opererer arbeidsbenken i en generisk arbeidskontekst med vinduer eller dialogbokser. Når et tekstredigeringsprogram aktiveres, tilbakestilles konteksten til tekstredigeringskonteksten slik at spesifikke tastbindinger for redigeringsprogrammet, aktiveres.

I plattformens tekstrammeverk har hver forekomst av tekstredigeringsprogrammet en tilknyttet matrise med tastbindingsomfang. Redigeringsprogrammet definerer gyldige omfang når det aktiveres. AbstractDecoratedTextEditor definerer og aktiverer dette omfanget. Omfanget tilordnes ved hjelp av en metode som kalles fra konstruktøren:

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

Argumentet for metoden er en matrise med IDer som er definert for kontekster. Hvis du vil at redigeringsprogrammet skal definere sin egen tastbindingskontekst, kan du overstyre denne metoden i redigeringsprogramklassen eller definere omfanget dynamisk ved hjelp av setKeybindingScopes.

Selve konteksten må defineres med en tilhørende ID i utvidelsespunktet org.eclipse.ui.contexts. Nedenfor ser du hvordan tekstredigeringskonteksten defineres.

<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>
	...

(Merk:  Vi bruker begrepene omfang og kontekst om hverandre her. Metodenavnene i tekstklassene refererer fortsatt til tastbindingskontekstene som omfang. Disse metodenavnene gjenspeiler den opprinnelige implementeringen av kontekster som omfang og bruker foreldet terminologi.)