새로 대상 지정 가능한 조치

일반적으로 플러그인의 보기 및 편집기에서 클립보드 잘라내기/복사/붙여넣기, 보기 새로 고치기 또는 특성 등 기존 Workbench 조치와 의미상으로 유사한 조치를 구현합니다. 모든 보기 또는 편집기가 이러한 조작에 대한 고유한 조치를 정의하고 메뉴에 이 조치를 포함해야 하는 경우 보기 및 편집기의 팝업 메뉴가 상당히 산만해질 것입니다. 

이런 문제점을 해결하려면 Workbench가 보기나 편집기에서 처리될 수 있는 새로 대상 지정 가능한(글로벌이라고도 함) 조치를 정의합니다. 보기나 편집기가 활성화된 경우 사용자가 Workbench 메뉴나 도구 모음에서 조치를 선택하면 해당 핸들러가 실행됩니다. 이렇게 하면 보기 및 편집기가 의미상 유사한 조치에 대해 Workbench 메뉴 공간을 공유할 수 있습니다.

IWorkbenchActionConstants는 모든 Workbench 조치 문서 및 새로 대상 지정 가능한 조치를 글로벌로 표시합니다. 예를 들어 다음은 특성 조치의 정의입니다.

public static final String PROPERTIES = "properties"; // Global action. 

다음 테이블에서는 보기 및 편집기에서 구현되는 더 일반적인 일부 새로 대상 지정 가능한 조치를 요약합니다.

  파일 메뉴 편집 메뉴 탐색 메뉴 프로젝트 메뉴
보기 move
이름 바꾸기
refresh
특성
  이동
자원으로 이동
편집기와 동기화
뒤로
앞으로
up
next
previous
열기
닫기
빌드
다시 빌드
편집기 되돌리기
인쇄
찾기    
보기 및 편집기   잘라내기
copy
붙여넣기
delete
모두 선택
실행 취소
다시 실행
   

새로 대상 지정 가능한 조치는 RetargetAction을 사용하여 작성됩니다. 다음 스니펫은 WorkbenchActionBuilder의 일부입니다.

 propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false); 

createGlobalAction 메소드는 RetargetAction을 작성하는 방법을 정확하게 표시합니다.

private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) {
	RetargetAction action;
	if (labelRetarget) {
		action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	else {
		action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	...
	return action;
}

새로 대상 지정 가능한 조치를 작성할 때 Workbench는 조치의 ID 및 기본 레이블을 지정합니다. 두 가지 유형의 retarget 조치가 있어야 합니다. RetargetAction은 보기 또는 편집기가 조치를 다시 구현하도록 허용합니다. LabelRetargetAction도 보기 및 편집기가 조치 레이블을 재설정하도록 허용합니다. 이 조치는 실행 취소 조치를 입력 실행 취소로 다시 레이블하는 경우와 같이 메뉴 레이블을 더 구체적으로 작성할 때 유용합니다.  

지금까지 Workbench에서 retarget 조치를 정의하는 방법을 살펴보았습니다. 다음은 보기 또는 편집기가 새로 대상 지정 가능한 조치를 구현하는 방법을 살펴볼 차례입니다. 이는 글로벌 조치 핸들러 설정에서 수행됩니다.