CARMA 자원에서 조치를 실행할 수 있도록 CARMA 저장소 보기 컨텍스트 메뉴에 조치를 추가할 수 있습니다.
네비게이터 보기에 메뉴 항목을 추가하기 위한 마크업 예제
네비게이터 보기에 CARMA가 관리하는 파일에 대한 메뉴 항목이 나타나도록 정의한 경우 plugin.xml 파일에 다음과 같은 마크업을 포함시킬 수 있습니다.
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.ibm.carma.action.disconnected.iFile"
objectClass="org.eclipse.core.resources.IFile"
adaptable="true">
<filter
name="projectPersistentProperty"
value="org.eclipse.team.core.repository=com.ibm.carma">
</filter>
<action
label="ABC Action"
class="com.xyz.ABCDelegate"
id="com.xyz.abc">
</action>
</objectContribution>
</extension>
objectContribution 태그의
objectClass 속성이 org.eclipse.core.resources.IFile로 지정되었음을 유념하십시오.
이는 네비게이터 보기의 컨텍스트 메뉴에 메뉴 항목이 표시됨을 의미합니다.
objectContribution 태그의 id 속성은
단순히 조치의 고유 ID입니다. 지정된 filter 태그는
CARMA가 관리하는 파일에 대해서만 네비게이터 보기에 메뉴 항목을 표시하도록 제한합니다.
필요한 경우, 추가로 filter 태그를 추가할 수도 있습니다. 마지막으로 action 태그는 해당 class 속성에
오브젝트 위임 클래스를 지정합니다. CARMA 저장소 보기에 메뉴 항목을 추가하기 위한 마크업 예제
CARAM 저장소 보기에 자원에 대한 메뉴 항목이 나타나도록 정의한 경우 plugin.xml 파일에 다음과 같은 마크업을 포함시킬 수 있습니다.
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.ibm.carma.action.disconnected.carmaContent"
objectClass="com.ibm.carma.model.CARMAContent
adaptable="true">
<filter
name="repositoryManager"
value="My RAM">
</filter>
<action
label="ABC Action"
class="com.xyz.ABCDelegate"
id="com.xyz.abc">
</action>
</objectContribution>
</extension>
여기서, objectContribution 태그의
objectClass 속성이 com.ibm.carma.model.CARMAContent로 대신 지정되었습니다.
이는 CARMA 저장소 보기의 컨텍스트 메뉴에 해당 메뉴 항목이
나타남을 의미합니다.
이 예제에서는 다른 필터도 사용되었습니다.
이 필터는 "내 RAM"이라는 RAM 아래에 있는 자원에 대해서만 메뉴 항목을 표시하도록 제한합니다.
filter 태그의 name 속성은
적용된 필터 유형을 지정하는 데 사용됩니다.
name 속성에 관련된 기타 값에 대해서는
CarmaActionFilter를
참조하십시오. 마지막으로 action 태그는 해당 class 속성에
오브젝트 위임 클래스를 지정합니다. ABCDelegate에 대한 코딩 예제:
다음 코드를 자체 오브젝트 위임을 개발하기 위한 시작점으로 사용하십시오.public class ABCDelegate extends CarmaObjectActionDelegate {
public void run(IAction action) {
CARMAContent[] members = (CARMAContent[]) getSelectedCarmaResources().toArray(new CARMAContent[0]);
//perform task, schedule job, etc.
}
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
//this is the ID assigned by the installation of the action
action.setEnabled(!isUnsupported("101"));
}
}
위의 run 메소드의 첫 번째 행은 선택된 CARMA 자원 배열을 확보하므로 조치를 수행할 때 사용할 수 있습니다. 예를 들어, 모든 선택된 자원을 반복(loop)하여 특정 메타데이터 특성을 설정할 수 있습니다. 실제로 run 메소드를 겹쳐써야 할 경우라도 위의 예제에 표시된 대로 조치의 사용가능성을 갱신하려면 selectionChanged 메소드를 겹쳐쓰는 것이 유용함을 알 수 있습니다.
예제에 정의된 대로 새 오브젝트 선택사항이 조치를 지원할 경우, selectionChanged는 CarmaObjectActionDelegate의 isUnsupported 헬퍼 기능을 사용하여 조치 ID가 101인 조치를 사용할 수 있게 합니다. 예제 코드에 101이라는 값이 하드 코드되어 있으나 조치 이름을 알 경우 조치 ID를 동적으로 분석할 수 있습니다. 해당 RAM에 사용 가능한 조치 목록을 검색하고 조치 이름을 기본으로 목록에서 검색하여 해당 조치를 찾은 다음 getActionId 메소드를 사용하여 해당 action 오브젝트에서 조치 ID를 검색하려면 간단히 해당 RepositoryManager 오브젝트의 getActions 메소드를 사용하십시오. 조치의 조치 ID를 모를 경우 여러 동적 메소드를 사용하여 ID를 분석할 수 있습니다.