Un contesto può essere utilizzato per influenzare i comandi disponibili all'utente in un determinato momento. I contesti sono molto più dinamici delle attività. Mentre un'attività rappresenta un grande insieme di funzioni spesso disponibili all'utente, i contesti descrivono un punto di interesse dell'utente in un determinato momento. Ad esempio, i comandi disponibili per un utente durante la modifica del testo possono essere diversi da quelli disponibili per un utente durante la modifica del testo Java o l'esplorazione dei pacchetti in Esplora pacchetti.
I contesti sono definiti nel punto di estensione org.eclipse.ui.contexts. Si consideri il seguente contesto definito per la modifica del testo:
<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>Ai contesti vengono assegnati un nome e una descrizione utilizzati quando le informazioni sul contesto vengono visualizzate dall'utente. L'id del contesto viene utilizzato quando si collegano i contributi UI, ad esempio i comandi, ad un determinato contesto.
I contesti sono gerarchici per natura. Quando un contesto è attivo, sono disponibili anche i comandi disponibili nel contesto e nei contesti principali. Ciò è utile per definire i livelli dei contesti che passano da situazioni molto generali a contesti più specifici. Nella definizione di contesto in alto, un id di un elemento principale è stato assegnato al contesto:
<context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>Il contesto principale definisce il contesto più generale di funzionamento all'interno di una finestra. Il relativo elemento principale definisce un contesto ancora più generale di funzionamento all'interno di una finestra o di una finestra di dialogo.
<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>
È stato illustrato come definire una gerarchia di contesti. Il contesto diventa utile quando si fa riferimento a tale contesto nella descrizione di un altro contributo UI. L'utilizzo più comune dei contesti è nelle associazioni tasti. Quando un contesto è collegato ad un'associazione tasti, tale associazione diventa attiva quando l'utente si trova in quel contesto. Ad esempio, il tag di seguito riportato specifica la finestra di dialogo principale ed il contesto della finestra come contesto per un'associazione tasti:
<keyBinding commandId="org.eclipse.ui.edit.cut" contextId="org.eclipse.ui.contexts.dialogAndWindow" keySequence="M1+X" keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration"> </keyBinding>
Il supporto contesti del workbench include un'API per la gestione dei contesti definiti e la definizione dei criteri con cui un determinato contesto diventa abilitato. Molti plugin non sono associati a questa API, ma questa API è utile quando si definiscono viste o editor specifici che definiscono nuovi contesti.
Il punto di partenza per la gestione dei contesti nel workbench è IWorkbenchContextSupport. I plugin possono richiamare l'istanza di supporto del contesto dal workbench.
IWorkbenchContextSupport workbenchContextSupport = PlatformUI.getWorkbench().getContextSupport();L'API di supporto contesti del workbench può essere utilizzata per aggiungere o rimuovere un EnabledSubmission, che descrive i criteri per cui un determinato contesto risulta abilitato. I criteri includono informazioni quali la parte attiva o la shell attiva. Il supporto del workbench fornisce anche l'accesso a IContextManager.
IContextManager contextManager = workbenchContextSupport.getContextManager();
IContextManager definisce il protocollo per la visualizzazione di tutti gli id di contesto definiti o abilitati e per la visualizzazione dell'IContext associato per un determinato id. Questi oggetti possono essere utilizzati per trasferire la definizione di un contesto nell'API, ad esempio la visualizzazione dell'id, del nome o dell'id del contesto principale. I listener possono essere registrati nel gestore contesto o nei contesti stessi, per individuare le modifiche nella definizione di un determinato contesto o nel gestore contesti. Per ulteriori informazioni, fare riferimento al pacchetto org.eclipse.ui.contexts.