일반적으로 플러그인의 보기 및 편집기에서 클립보드 잘라내기/복사/붙여넣기, 보기 새로 고치기 또는 특성 등 기존 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 조치를 정의하는 방법을 살펴보았습니다. 다음은 보기 또는 편집기가 새로 대상 지정 가능한 조치를 구현하는 방법을 살펴볼 차례입니다. 이는 글로벌 조치 핸들러 설정에서 수행됩니다.