Inne zadania edytora tekstu

Przykładowy edytor Java dziedziczy wiele użytecznych zachowań domyślnych z klasy AbstractTextEditor. Środowisko edycji tekstu obsługuje kilka innych zadań, które można dostosować, przesłaniając metody w klasie AbstractTextEditor. Aby zobaczyć, w jaki sposób dostosowuje się zachowania w środowisku, należy przyjrzeć się implementacji tej klasy i jej podklas.

Poniżej wymieniono kilka użytecznych funkcji środowiska, które można skonfigurować.

Obsługa preferencji

Edytory tekstu zazwyczaj udostępniają preferencje użytkownika, które kontrolują prezentację i zachowanie edytora. W środowisku tekstowym z każdą instancją edytora tekstu jest powiązana składnica preferencji, używana do uzyskiwania dostępu do preferencji użytkownika. Składnica preferencji może zostać zainstalowana przez edytor lub może być dziedziczona ze składnic preferencji używanych już w środowisku.

W przypadku przykładowego edytora Java dziedziczona jest składnica preferencji zainicjowana przez klasę TextEditor. Jest to składnica preferencji zdefiniowana przez moduł dodatkowy edytorów środowiska roboczego.  

protected void initializeEditor() {
	...
	setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore());
}
Preferencje modułu dodatkowego edytora można zmieniać na stronach preferencji Ogólne > Edytory i Ogólne > Edytory > Edytory tekstu.

Zamiast używać standardowych preferencji tekstu środowiska roboczego, można dla danego edytora ustawić inną składnicę preferencji. W tym celu zazwyczaj przesłania się metodę initializeEditor i ustawia własną składnicę preferencji. Jeśli będzie używana własna składnica preferencji, konieczne będzie również nadpisanie metody handlePreferenceStoreChanged(), która jest wyzwalana przy każdej aktualizacji preferencji.

Przypisania klawiszy

Przypisanie klawiszy do kontekstów pomaga w ustanawianiu porządku wyszukiwania dla przypisanych klawiszy. Ponadto zmniejsza liczbę konfliktów sekwencji klawiszy udostępnianych przez różne moduły dodatkowe. Domyślnie środowisko robocze działa w kontekście ogólnym na potrzeby pracy z oknami i oknami dialogowymi. Po aktywacji edytor musi zresetować kontekst i ustawić kontekst edycji tekstu, tak aby zostały aktywowane przypisania klawiszy specyficzne dla danego edytora.

W środowisku tekstowym platformy każda instancja edytora tekstu ma przypisaną tablicę z zasięgiem przypisań klawiszy. Jest ona odpowiedzialna za ustawienie odpowiednich zasięgów w momencie aktywowania. Klasa AbstractDecoratedTextEditor definiuje zasięg i zajmuje się jego aktywowaniem. Zasięg jest przypisywany w metodzie wywoływanej z poziomu konstruktora:

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

Argumentem metody jest tablica identyfikatorów zdefiniowanych dla kontekstów. Aby zdefiniować własny kontekst przypisania klawiszy dla edytora, można przesłonić tę metodę w klasie edytora lub ustawić zasięg dynamicznie, używając metody setKeybindingScopes.

Kontekst musi zostać zdefiniowany z odpowiednim identyfikatorem w punkcie rozszerzenia org.eclipse.ui.contexts. Poniższy fragment kodu jest definicją kontekstu edycji tekstu.

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

Uwaga: W tym omówieniu terminy zasięg i kontekst są używane zamiennie. Nazwy metod w klasach tekstu odnoszą się do przypisań klawiszy do kontekstów i zasięgów. Nazwy te odpowiadają oryginalnym implementacjom kontekstów jako zasięgów i jest w nich używana przestarzała terminologia.