Kontexty

Kontext ovlivňuje výběr příkazů, které jsou uživateli k dispozici ve kterýkoli daný moment. Kontexty jsou dynamičtější než aktivity. Zatímco aktivita je širší skupinou funkcí, která je uživateli k dispozici většinu času, kontexty definují zaměření uživatele po určitou dobu. Například příkazy dostupné uživateli během editace textu se mohou odlišovat od příkazů dostupných uživateli při editaci textu Java nebo při prohlížení balíčků v Průzkumníku balíčků.

Definování kontextu

Kontexty se deklarují v bodě rozšíření org.eclipse.ui.contexts. Prohlédněte si následující kontext definovaný pro editaci textu:

   <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>
Kontextům se přiřazuje název a popis pro účely informování uživatele o kontextu. ID kontextu se používá k navazování vložených prvků uživatelského rozhraní, např. příkazů, na určitý kontext.

Kontextová hierarchie

Kontexty mají hierarchickou povahu. Je-li aktivní určitý kontext, jsou k dispozici příkazy dostupné v kontextu a dále nadřazené kontexty. Tuto vlastnost lze použít k definování úrovní kontextů, které tak lze odstupňovat od velmi obecných situací ke speciálním kontextům. Povšimněte si v definici kontextu uvedené výše, že je kontextu přiřazen jednoznačný identifikátor nadřazeného prvku:

	<context
		name="%context.editingText.name"
		description="%context.editingText.description"
		id="org.eclipse.ui.textEditorScope"
		parentId="org.eclipse.ui.contexts.window">
	</context>
Nadřazený kontext definuje obecnější kontext práce v okně. Jemu nadřazený prvek definuje ještě více obecný kontext práce v okně, resp. v dialogovém okně.
<context
	name="%context.window.name"
	description="%context.window.description"
	id="org.eclipse.ui.contexts.window"
	parentId="org.eclipse.ui.contexts.dialogAndWindow">
</context>
<context
	name="%context.dialogAndWindow.name"
	description="%context.dialogAndWindow.description"
	id="org.eclipse.ui.contexts.dialogAndWindow">
</context>

Přiřazení příspěvku ke kontextu

Dosud se nám podařilo definovat hierarchii kontextů. Kontext je užitečný, když je na něj odkazováno v popisu jiného příspěvku uživatelského rozhraní. Nejběžnějším použitím kontextů jsou vazby kláves. Je-li určité vazbě kláves přiřazen kontext, bude tato vazba kláves aktivní pouze pokud bude uživatel v tomto kontextu. Například následující markup definuje kořenové dialogové okno a kontext okna jako kontext vazby kláves:

<keyBinding
	commandId="org.eclipse.ui.edit.cut"
	contextId="org.eclipse.ui.contexts.dialogAndWindow"
	keySequence="M1+X"
	keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration">
</keyBinding>

Použití rozhraní API kontextu

Podpora kontextů pracovní plochy obsahuje rozhraní API, jež je určeno k práci s definovanými kontexty a definujícími kritérii zpřístupnění konkrétních kontextů. Většina modulů plug-in nevyžaduje zapojení tohoto rozhraní API. Lze je však použít při definování specializovaných pohledů či editorů, které definují nové kontexty.

Výchozím bodem práce s kontexty v pracovní ploše je IWorkbenchContextSupport. Moduly plug-in mohou od pracovní plochy (modulu workbench) získávat instanci podpory kontextu (context support).

IWorkbenchContextSupport workbenchContextSupport = PlatformUI.getWorkbench().getContextSupport();
Rozhraní API podpory kontextů pracovní plochy lze použít k přidávání či odebírání prvku EnabledSubmission, jež popisují kritéria zpřístupnění konkrétního kontextu. Kritéria obsahují informaci o aktivní části či aktivní nadstavbě. Podpora pracovní plochy poskytuje rovněž přístup k IContextManager.
IContextManager contextManager = workbenchContextSupport.getContextManager();

IContextManager definuje protokol získávání jednoznačných identifikátorů všech definovaných či aktivních kontextů a získávání IContext přiřazených určitému ID. Tyto objekty lze použít k procházení definicí kontextu v rozhraní API, tj. k získávání ID, názvu nebo ID nadřazeného kontextu. Příjemci mohou být registrováni u správce kontextu nebo u samotných kontextů za účelem rozpoznání změn v definici určitého kontextu nebo v samotném správci kontextu. Další informace viz balíček org.eclipse.ui.contexts.