명령은 ID별 사용자 조치의 선언입니다. 조치 세트 및 편집기에서 정의된 조치 구현이 특정 시맨틱 명령과 연관될 수 있도록 명령이 의미상의 조치를 선언하는 데 사용됩니다. 조치 구현에서 명령의 분리를 사용하여 복수 플러그인은 동일한 시맨틱 명령을 구현하는 조치를 정의할 수 있습니다. 명령은 특정 키 바인딩과 연관되는 것입니다.
Workbench는 plugin.xml 파일에 많은 공통 명령을 정의하며 적절한 경우 플러그인이 자체 조치를 이 명령에 연관시키도록 권장됩니다. 이런 방식으로 다른 플러그인에서 구현된 의미가 비슷한 조치는 같은 키 바인딩을 공유할 수 있습니다.
명령은 org.eclipse.ui.commands 확장점을 사용하여 정의합니다. 다음은 Workbench 마크업에서 다룹니다.
<extension point="org.eclipse.ui.commands"> ... <command name="%command.save.name" description="%command.save.description" categoryId="org.eclipse.ui.category.file" id="org.eclipse.ui.file.save"> </command> ...
명령 정의는 조치의 이름, 설명 및 ID를 지정합니다. 또한 명령 정의는 명령에 대한 카테고리의 ID를 지정하여, 환경 설정 대화 상자에서 명령을 그룹화하는 데 사용됩니다. 카테고리도 org.eclipse.ui.commands 확장점에서 정의됩니다.
... <category name="%category.file.name" description="%category.file.description" id="org.eclipse.ui.category.file"> </category> ...
명령에 지정된 구현이 없음을 주의하십시오. 명령은 플러그인이 해당 조치와 명령 ID를 연관할 때만 구체화됩니다.
조치는 조치 세트의 plugin.xml 또는 코드에서 명령에 연관될 수 있습니다. 조치가 정의된 위치에 따라 선택이 달라집니다.
또한 코드에서 인스턴스화된 조치는 IAction 프로토콜을 사용하여 조치 정의에 연관될 수 있습니다. 일반적으로 이 작업은 조치가 작성될 때 수행됩니다. SaveAction에서는 이 기법을 사용하여 자체를 초기화합니다.
public SaveAction(IWorkbenchWindow window) { ... setText... setToolTipText... setImageDescriptor... setActionDefinitionId("org.eclipse.ui.file.save"); }
참고: 메소드 이름 setActionDefinitionID는 setCommandID라는 더욱 적절한 이름으로 지정될 수 있습니다. 메소드 이름은 키 바인딩의 원래 키 구현을 반영하고 이전의 용어를 사용합니다.
setActionDefinitionID를 호출하여 구현 조치(SaveAction)가 명령 정의 마크업에서 사용된 명령 ID와 연관됩니다. 코드에서 조치 정의를 쉽게 참조하려면 조치 정의에 대해 상수를 정의하는 것이 좋습니다.
조치 세트에 조치를 정의하는 경우 일반적으로 조치를 직접 인스턴스화할 필요가 없습니다. 메뉴 또는 키보드에서 조치를 호출하면 Workbench가 자동으로 인스턴스화를 수행합니다. 이런 경우, XML 마크업에서 조치를 명령 ID와 연관시킬 수 있습니다. 다음은 조치 세트에 대한 이론상의 마크업을 보여줍니다.
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="com.example.actions.actionSet" label="Example Actions" visible="true"> <action id="com.example.actions.action1" menubarPath="additions" label="Example Save Action" class="org.example.actions.ExampleActionDelegate" definitionID="org.eclipse.ui.file.save"> </action> ... </actionSet> </extension>
definitionID 속성을 사용하여 조치에 대한 명령 ID를 선언합니다.
두 방법 중 하나를 사용하여 조치를 명령 ID에 연결하면 org.eclipse.ui.file.save 명령에 대해 정의된 키 바인딩이 적절한 때에 조치를 호출합니다.
이제 이러한 키 바인딩을 정의하는 방법을 살펴봅니다.