Kontekster

Et kontekst kan bruges til at påvirke, hvilke kommandoer der er tilgængelige for brugeren på ethvert givet tidspunkt. Kontekster er meget mere dynamiske end aktiviteter. Mens en aktivitet repræsenterer en bred vifte af funktioner, som er tilgængelig for brugeren det meste af tiden, beskriver kontekster et fokus for brugeren på et bestemt tidspunkt. De kommandoer, som er til rådighed for brugeren ved tekstredigering, kan f.eks. være anderledes end dem, der er til rådighed, når der redigeres i Java-tekst eller blades i pakker i Package Explorer.

Angiv et kontekst

Kontekster erklæres i udvidelsespunktet org.eclipse.ui.contexts. Se følgende kontekst, som er defineret til redigering af tekst:

<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>
Kontekster tildeles et navn og en beskrivelse, som bruges ved fremvisning af oplysninger om konteksten for brugeren. Kontekstens id bruges, når der bindes brugergrænsefladebidrag som f.eks. kommandoer til en bestemt kontekst.

Konteksthierarkier

Kontekster er af natur hierarkisk opbygget. Når en kontekst er aktiv, er kommandoer i konteksten samt i dens overordnede kontekster tilgængelige. Det er nyttigt ved definition af kontekstniveauer, som flytter sig fra meget generelle situationer til mere specifikke kontekster. Bemærk i ovenstående kontekstdefinition, at der er tildelt en id for en overordnet til konteksten:

	<context
		name="%context.editingText.name"
		description="%context.editingText.description"
		id="org.eclipse.ui.textEditorScope"
		parentId="org.eclipse.ui.contexts.window">
	</context>
Den overordnede kontekst definerer den mere generelle kontekst af arbejdet i et vindue. Dens overordnede kontekst definerer en endnu mere generel kontekst af arbejdet i et vinduet eller en dialogboks.
<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>

Knyt et bidrag til en kontekst

Der er indtil videre kun defineret en hierarki af kontekster. Konteksten bliver først nyttig, når der refereres til den i beskrivelse af et andet brugergrænsefladebidrag. Den mest almindelige brug af kontekster er i tastbindinger. Når en kontekst er knyttet til en tastbinding, er tastbindingen kun aktiv, når brugeren arbejder i denne kontekst. Følgende kode angiver f.eks. hoveddialogboksen og vindueskonteksten som kontekst for en tastbinding:

<extension
         point="org.eclipse.ui.bindings">
<key
            sequence="M1+X"
	contextId="org.eclipse.ui.contexts.dialogAndWindow"
	commandId="org.eclipse.ui.edit.cut"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
</extension>   

Brug af kontekst-API

Understøttelse af arbejdsbænkkontekst omfatter et API til at arbejde med de definerede kontekster og definere kriterier for, hvornår en bestemt kontekst skal aktiveres. De fleste plugins behøver ikke at bruge dette API, men det er nyttigt ved definition af specialiserede oversigter eller editorer, som definerer nye kontekster.

Startpunktet for at arbejde med kontekster på arbejdsbænken er IContextService. Plugins kan hente forekomsten af den globale kontekstunderstøttelse fra arbejdsbænken.

IContextService contextService = (IContextService)PlatformUI.getWorkbench()
	.getService(IContextService.class);

Serviceprogrammer som IContextService, IHandlerService, and IBindingService kan hentes vha. en IServiceLocator. IWorkbench, IWorkbenchWindow, og IWorkbenchSite er alle IServiceLocator.

IContextService definerer protokollen for hentning af alle definerede eller aktiverede kontekst-id'er og for hentning af den tilknyttede Kontekst for en bestemt id. Objekterne kan bruges til at gennemløbe definitionen af kontekst i API, så som hentning af id, navn eller id for den overordnede kontekst. Der kan registreres lyttere på kontekststyringen eller på selve konteksterne for at finde ændringer i definitionen af en bestemt kontekst eller i selve kontekststyringen. Der er flere oplysninger i pakkenorg.eclipse.core.commands.contexts.

Kontekster kan aktiveres pr. program:

IContextActivation activation = contextService.activateContext("org.eclipse.ui.textEditorScope");

IContextActivation er et token, der kan anvendes til at deaktivere en aktiv kontekst. Sørg for kun at aktivere defineret Konteksts.

Hvis du aktiverer en mere specifik Kontekst i din del (enten Oversigt eller Editor), kan du bruge delens indikator for webstedsserviceprogram til at aktivere konteksten. Delens IContextService vil aktivere og deaktivere Kontekst, når din del er aktiveret eller deaktiveret. Den vil også kassere Kontekst, når delen kasseres.