컨텍스트를 사용하여 해당 시점에 사용자가 사용할 수 있는 명령에 영향을 줄 수 있습니다. 컨텍스트는 활동보다 동적입니다. 활동이 대부분의 시간에 사용자가 사용할 수 있는 기능의 광범위한 세트를 표시하는 반면, 컨텍스트는 특정 시점에서 사용자의 초점을 설명합니다. 예를 들어, 텍스트를 편집하는 중 사용자가 사용할 수 있는 명령은 Java 텍스트를 편집하거나 패키지 탐색기에서 패키지를 찾아보는 동안 사용자가 사용할 수 있는 것과 다를 수 있습니다.
컨텍스트는 org.eclipse.ui.contexts 확장점에서 선언됩니다. 텍스트 편집에 정의된 다음 컨텍스트를 고려하십시오.
<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>사용자에게 컨텍스트에 대한 정보를 표시할 때 사용되는 이름 및 설명을 컨텍스트에 지정합니다. 특정 컨텍스트에 대한 명령 등 UI 지시문을 바인드할 때 컨텍스트 ID가 사용됩니다.
컨텍스트는 원래 계층 구조입니다. 컨텍스트가 활성화되면 컨텍스트 및 상위 컨텍스트에서 사용 가능한 명령도 사용할 수 있습니다. 이것은 일반적 상황에서 보다 구체적인 컨텍스트로 이동하는 컨텍스트의 레벨을 정의하는 데 유용합니다. 위 컨텍스트 정의에서 컨텍스트에 지정된 상위의 ID가 있습니다.
<context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context>상위 컨텍스트는 창에서 작업의 추가 일반 컨텍스트를 정의합니다. 상위는 창이나 대화 상자에서 작업의 추가 일반 컨텍스트를 정의합니다.
<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>
지금까지 컨텍스트의 계층 구조 정의에 대해 살펴보았습니다. 컨텍스트는 다른 UI 지시문에 대한 설명에서 참조될 때 유용합니다. 컨텍스트는 키 바인딩에서 가장 일반적으로 사용됩니다. 컨텍스트가 키 바인딩과 연관되면 키 바인딩은 사용자가 해당 컨텍스트에 있을 때에만 활성화됩니다. 예를 들어, 다음 마크업은 루트 대화 상자 및 창 컨텍스트를 키 바인딩의 컨텍스트로 지정합니다.
<keyBinding commandId="org.eclipse.ui.edit.cut" contextId="org.eclipse.ui.contexts.dialogAndWindow" keySequence="M1+X" keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration"> </keyBinding>
Workbench 컨텍스트 지원에는 정의된 컨텍스트에 대해 작업하고 특정 컨텍스트가 사용 가능한 기준을 정의하는 API가 포함됩니다. 대부분의 플러그인이 API와 관련될 필요가 없지만 새 컨텍스트를 정의하는 특수화된 보기나 편집기를 정의할 때 유용합니다.
Workbench에서 컨텍스트에 대한 작업의 시작점은 IWorkbenchContextSupport입니다. 플러그인은 Workbench에서 컨텍스트 지원 인스턴스를 포함할 수 있습니다.
IWorkbenchContextSupport workbenchContextSupport = PlatformUI.getWorkbench().getContextSupport();Workbench 컨텍스트 지원 API를 사용하여 특정 컨텍스트를 사용 가능하도록 해야 하는 기준을 설명하는 EnabledSubmission을 추가하거나 제거할 수 있습니다. 기준에는 활성 부분이나 활성 쉘 등의 정보가 포함됩니다. Workbench 지원은 IContextManager에 대한 액세스도 제공합니다.
IContextManager contextManager = workbenchContextSupport.getContextManager();
IContextManager는 정의되거나 사용 가능한 모든 컨텍스트 ID를 가져오고 특정 ID의 연관된 IContext를 가져오는 프로토콜을 정의합니다. 이 오브젝트를 사용하여 ID, 이름 또는 상위 컨텍스트의 ID를 가져오는 등 API에서 컨텍스트의 정의를 이동할 수 있습니다. 리스너를 컨텍스트 관리자나 컨텍스트 자체에 등록하여 특정 컨텍스트의 정의나 컨텍스트 관리자에서 변경사항을 발견할 수있습니다. 자세한 정보는 org.eclipse.ui.contexts 패키지를 참조하십시오.