Il est possible d'utiliser un contexte pour influencer les commandes qui sont disponibles pour l'utilisateur à un moment donné. Les contextes sont bien plus dynamiques que les activités. Tandis qu'une activité représente un vaste ensemble de fonctions disponible pour l'utilisateur la plupart du temps, les contextes décrivent un point intéressant pour l'utilisateur à un moment précis. Par exemple, les commandes disponibles pour un utilisateur pour modifier du texte peuvent être différentes de celles disponibles pour un utilisateur pour modifier du texte Java ou parcourir des packages dans l'explorateur de packages.
Les contextes sont déclarés dans le point d'extension org.eclipse.ui.contexts. Observez le contexte ci-dessous, défini our modifier du texte :
<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>Les contextes reçoivent un nom et une description, qui sont utilisés pour afficher, à l'attention de l'utilisateur, les informations relatives au contexte. L'ID du contexte est utilisé pour lier des contributions à l'interface utilisateur comme les commandes dans un contexte particulier.
Les contextes sont hiérarchiques par nature. Lorsqu'un contexte est actif, les commandes disponibles dans le contexte et dans ses contextes parents sont également disponibles. Cela s'avère utile pour définir des niveaux de contextes qui vont des situations les plus générales aux contextes les plus spécifiques. Dans la définition de contexte ci-dessous, notez que l'ID d'un parent est affecté au contexte :
<context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>Le contexte parent définit le contexte le plus général d'utilisation dans une fenêtre. Son parent définit un contexte encore plus général d'utilisation dans une fenêtre ou dans une boîte de dialogue.
<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>
Pour le moment, nous avons défini une hiérarchie des contextes. Le contexte devient utile lorsqu'il est référencé dans la description d'une autre contribution à l'interface utilisateur. L'utilisation la plus courante des contextes est la liaison entre des touches. Lorsqu'un contexte est associé à une liaison entre touches, la liaison entre des touches devient active lorsque l'utilisateur se trouve dans ce contexte. Par exemple, le marquage ci-dessous spécifie le contexte principal de boîte de dialogue et de fenêtre comme contexte pour une liaison entre des touches :
<keyBinding commandId="org.eclipse.ui.edit.cut" contextId="org.eclipse.ui.contexts.dialogAndWindow" keySequence="M1+X" keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration"> </keyBinding>
La prise en charge du contexte de plan de travail inclut une API permettant d'utiliser les contextes définis et de définir des critères selon lesquels un contexte déterminé doivent être activé. Cette API ne concerne pas la plupart des plug-ins, mais elle est utile pour définir des vues ou des éditeurs spécialisés qui définissent de nouveaux contextes.
Le point de départ pour utiliser des contextes dans le plan de travail est IWorkbenchContextSupport. Les plug-ins peuvent obtenir l'instance de prise en charge de contexte dans le plan de travail.
IWorkbenchContextSupport workbenchContextSupport = PlatformUI.getWorkbench().getContextSupport();Il est possible d'utiliser l'API de prise en charge de contexte pour ajouter ou supprimer EnabledSubmission, pour décrire les critères servant à activer un contexte déterminé. Ces critères incluent des informations comme la partie active ou le shell actif. La prise en charge du plan de travail permet également d'accéder à IContextManager.
IContextManager contextManager = workbenchContextSupport.getContextManager();
IContextManager définit un protocole pour extraire tous les ID contexte définis ou activés et pour extraire IContext en association avec un ID particulier. Ces objets peuvent être utilisés pour balayer la définition d'un contexte dans l'API, comme pour l'extraction de l'ID, du nom ou de l'ID du contexte parent. Les modules d'écoute peuvent être enregistrés dans le gestionnaire de contextes ou dans les contextes proprement dits afin de détecter les modifications apportées à la définition d'un contexte en particulier ou dans le gestionnaire de contextes proprement dit. Pour plus d'informations, reportez-vous au package org.eclipse.ui.contexts.