활동

활동은 특정 타스크 종류의 중심이 되는 논리적 기능 그룹입니다. 예를 들어, Java 소프트웨어 개발은 주로 플랫폼의 사용자에 의해 수행되는 활동이고 JDT는 이 활동을 수행하는 경우에만 유용한 여러 UI 지시문(보기 , 편집기 , Perspective, 환경 설정 등)을 정의합니다. 활동을 정의하는 메커니즘을 보기 전에 UI를 "정리"하는 데 사용되는 방법을 살펴봅니다.

활동의 개념은 사용자에게 공개되는데 새로운 사용자에게는 표시되지 않을 수 있습니다. 플랫폼에서 활동을 사용하는 경우, 해당 활동과 연관된 UI 지시문이 표시됩니다. 플랫폼에서 활동을 사용할 수 없는 경우, UI 지시문이 표시되지 않습니다. 사용자는 Workbench>기능 환경 설정 페이지를 사용하여 필요에 따라 활동을 사용/사용 안함으로 설정할 수 있습니다. (활동 용어를 API에서 사용하지만 사용자 인터페이스에서는 "기능"이라고 합니다).

특정 사용자 조작은 활동을 사용하기 위한 트리거 확장점의 역할을 합니다. 예를 들어, 새 Java 프로젝트를 작성하면 Java 개발 활동의 사용을 트리거할 수 있습니다. 이런 방법으로 사용자는 필요할 때 새 기능을 알게 되고 기능에 사용할 수 있는 활동 및 UI에 영향을 미치는 방법에 대해 배우게 됩니다. 사용자가 먼저 플랫폼을 시작할 때 가능한 많은 활동을 사용 안함으로 설정하여 응용프로그램을 최대한 단순화하는 것이 좋습니다. 환영 페이지에서 작성한 선택사항은 사용해야 할 활동을 판별하는 데 도움이 됩니다.

활동 대 Perspective

서로 다른 보기 레이아웃 및 조치 세트를 타스크로 조직하는 데 Perspective가 사용되는 방법을 살펴보았습니다(Perspective에서). 활동은 왜 필요합니까? Perspective와 활동은 유사한 종류의 타스크를 정의하는 데 플러그인의 UI 지시문이 연관되는 방법에 주된 차이가 있습니다. UI 지시문은 지시문의 확장 정의에서 Perspective와 연관됩니다. 즉, 플러그인은 보기 및 조치 세트가 속하는 Perspective를 판별하는 역할을 합니다. 플러그인이 자체 Perspective를 정의할 수도 있습니다. Perspective가 활성화되지 않은 경우에도 사용자는 보기 표시 등의 명령을 통해 Perspective와 연관된 보기 및 조치에 액세스할 수 있습니다.

활동은 조직의 상위 레벨입니다. 개별 UI 지시문은 활동을 인식하지 못하며 확장 정의에서 활동을 참조하지 않습니다. 오히려 활동은 플랫폼 통합/구성 또는 제품 설치와 같은 상위 레벨에서 구성되는 것으로 예상됩니다. 플러그인이 시스템 통합자가 정의한 시스템 레벨 플러그인이 아니라면 개별 플러그인은 새 활동을 정의하지 않습니다. 일반 시나리오에서 시스템 통합자는 기능이 활동으로 그룹화되는 방법 및 기본적으로 사용 가능한 기능을 판별합니다. 활동은 플러그인에서 작성한 UI 지시문의 ID에 대해 일치하는 패턴인 활동 패턴 바인딩을 사용하는 UI 지시문과 연관됩니다. 예제가 이러한 개념을 설명하는 데 도움이 됩니다.

활동 정의

활동은 org.eclipse.ui.activities 확장점을 사용하여 정의합니다. Eclipse SDK 플러그인이 두 개의 활동(Java 소프트웨어 개발 활동 및 플러그인 개발 활동)을 정의하는 방법에 대한 간단한 버전을 살펴봅니다.

<extension
	point="org.eclipse.ui.activities">
	<activity
		name="Java Activity"
		description="Developing Java Software"
		id="org.eclipse.javaDevelopment">
	</activity>
	
	<activity
		name="Plug-in Activity"
		description="Developing Eclipse Plug-ins"
		id="org.eclipse.plugInDevelopment">
	</activity>
	...

사용자가 활동을 사용/사용 안함으로 설정할 때마다 사용자에게 표시될 수 있는 이름 및 설명이 활동에 할당되거나 그렇지 않으면 활동에 대한 정보가 표시됩니다. 패턴 바인딩이나 활동 간의 기타 관계를 정의할 때 활동 ID가 사용됩니다. 예를 들어, 한 활동에 다른 활동이 필요하다고 판별할 수 있습니다.

<activityRequirementBinding
	activityId="org.eclipse.plugInDevelopment"
	requiredActivityId="org.eclipse.javaDevelopment">
</activityRequirementBinding>

요구사항 바인딩은 Java 개발 활동을 사용하는 경우에만 플러그인 개발 활동을 사용할 수 있음을 설명합니다. 관련 활동은 카테고리로 바인드될 수도 있으며 이는 사용자가 활동에 대해 작업할 때 사용자에게 표시됩니다.

         <category
	name="Development"
	description="Software Development"
	id="org.eclipse.categories.developmentCategory">
</category>

<categoryActivityBinding
	activityId="org.eclipse.javaDevelopment"
	categoryId="org.eclipse.categories.developmentCategory">
</categoryActivityBinding>
      
<categoryActivityBinding
	activityId="org.eclipse.plugInDevelopment"
	categoryId="org.eclipse.categories.developmentCategory">
</categoryActivityBinding>

카테고리는 관련 개발 활동을 함께 그룹화합니다. 사용자가 활동을 직접 구성할 때 이 카테고리가 사용자에게 표시됩니다.

UI 지시문으로 활동 바인딩

활동은 패턴 일치를 사용하는 UI 지시문과 연관됩니다. 활동 패턴 바인딩에 사용된 패턴 일치는 정규 표현식의 java.util.regex 패키지에서 설명한 규칙을 준수합니다. Workbench에서 사용하는 패턴은 두 부분으로 구성됩니다. 첫 번째 부분에서는 UI 확장을 제공하는 플러그인의 ID를 사용합니다. 두 번째 부분은 지시문(ID의 일부로 플러그인 ID를 포함하거나 포함하지 않을 수 있음)을 정의할 때 플러그인 자체에서 사용하는 ID입니다. 다음 형식이 사용됩니다.

plug-in-identifier + "/" + local-identifier
예를 들어, 다음 활동 패턴 바인딩은 로컬 ID(.*)와 상관 없이 JDT 플러그인 ID(org.eclipse.jdt.*)의 UI 지시문이 Java 개발 활동과 연관됨을 설명합니다.
<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\..*/.*">
</activityPatternBinding>
다음 바인딩은 보다 특수합니다. JDT 코어(org.eclipse.jdt.core)에서 정의된 javanature 지시문이 Java 개발 활동과 연관됨을 설명합니다.
<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\.core/javanature">
</activityPatternBinding>
활동 패턴 바인딩을 사용하여 지시문의 큰 그룹을 특정 활동과 연관시키거나 특정 지시문을 활동과 연관시킬 수 있습니다. 다음 항목은 활동에 의해 영향을 받습니다.

Workbench에서 사용한 규칙(플러그인 ID + 로컬 ID)을 사용하여 UI 지시문 ID 앞에 플러그인 ID를 붙이는 이름 지정 관행을 따를 필요가 없는 플러그인에 대한 쉬운 바인딩을 수행할 수 있습니다. 활동 API와 직접 상호작용하는 플러그인은 지시문을 식별하고 해당 이름에 대해 패턴을 일치시키는 자체 형식을 사용할 수 있습니다.

도움말 지시문으로 활동 바인딩

활동은 UI 지시문에 사용된 동일한 패턴 일치 설계를 사용하는 도움말 지시문과 연관됩니다. ID(로컬 ID)의 두 번째 부분은 목차(TOC) 파일의 이름을 표시합니다. 예를 들어, 다음 활동 패턴 바인딩은 JDT 플러그인에서 제공한 모든 TOC 파일(org.eclipse.jdt.*)을 Java 개발 활동과 연관시킵니다.

<activityPatternBinding
	activityId="org.eclipse.javaDevelopment"
	pattern="org\.eclipse\.jdt\..*/.*">
</activityPatternBinding>
Java 개발 활동을 사용할 수 없는 경우, 다른 플러그인에서 제공하는 경우에도 JDT 플러그인이나 부속 서적(JDT 서적에 링크된 TOC)에서 제공하는 도움말 서적이 도움말 UI에 표시되지 않습니다. 이 서적에 정의된 주제는 검색 결과에도 표시되지 않습니다. JDT TOC가 기본 TOC로 표시되지 않지만 다른 TOC에서 링크되어 서적에서 서브 트리로 표시되는 경우, JDT 활동을 사용 안함으로 설정하면, 서브 트리를 숨기는 효과가 있습니다. 포함되는 서적은 UI에서 많지 않은 주제를 정의하는 것으로 나타납니다.

보다 구체적인 바인딩을 사용하면 여러 TOC를 도움말 시스템에 제공하는 플러그인에서 선택된 TOC와 활동을 연관시킬 수 있습니다. 예를 들어, 다음 활동 패턴 바인딩은 "예제" TOC를 Java 개발 예제 활동과 연관시킵니다.

<activityPatternBinding
	activityId="org.eclipse.javaDevelopmentExamples"
	pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml">
</activityPatternBinding>
해당 패턴 바인딩에서 Java 개발 예제 활동을 사용 안함으로 설정하면 "JDT 플러그인 개발자 안내서" 서적에서 "예제" 섹션이 숨겨집니다.

활동 API 사용

Workbench 활동 지원에는 정의된 활동에 대해 작업하고 사용 상태를 변경하는 API가 포함됩니다. 대부분의 플러그인이 API와 관련될 필요가 없지만 사용자가 활동에 대해 작업할 수 있도록 하는 기능을 구현하거나 특정 활동을 사용하도록 설정하는 트리거 확장점을 구현하는 경우 유용합니다. API를 통해 활동을 조작하는 플러그인이 특정 제품에 대해 활동이 구성되는 방법을 인식하는 것으로 가정합니다. 예를 들어, Workbench 자체는 API를 사용하여 Java 개발과 같은 활동의 사용을 트리거합니다. Workbench가 일반 활동 API를 사용하여 트리거를 구현하는 방법을 살펴봅니다.

Workbench에서 모든 활동의 허브는 IWorkbenchActivitySupport입니다. 활동 지원은 IActivityManager와 함께 작동합니다. 플러그인은 Workbench에서 활동 지원 인스턴스 및 활동 관리자를 확보할 수 있습니다.

IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
다음 스니펫은 Java 개발 활동을 사용할 수 있게 합니다(이미 사용 안함으로 설정되어 있는 경우). 간단한 트리거 버전을 표시합니다.
...
//the user did something Java related.  Enable the Java activity.
Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds());
if (enabledIds.add("org.eclipse.javaDevelopment"))
	workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);

IActivityManager는 정의된 모든 활동 및 카테고리 ID를 가져오고 특정 ID에 대해 연관된 IActivity 또는 ICategory를 가져오는 프로토콜도 정의합니다. 이 오브젝트를 사용하여 패턴 바인딩 또는 요구사항 바인딩을 가져오는 등 API에서 활동 또는 카테고리에 대한 정의를 이동할 수 있습니다. 리스너를 활동 관리자나 활동 및 카테고리 자체에 등록하여 특정 활동의 정의나 활동 관리자 자체에서 변경사항을 발견할 수 있습니다. 자세한 정보는 org.eclipse.ui.activities 패키지를 참조하십시오.