편집기에 대한 최초 컨트리뷰션 세트는 다른 확장점(org.eclipse.ui.editors)에서 정의합니다. 하나의 조치 세트는 같은 편집기 유형의 모든 인스턴스에서 작성되고 공유됩니다. 호출하면 이들 조치는 활성화 편집기에 따라 실행합니다. 이 확장점은 같은 패턴을 따릅니다. 각 조치 확장은 같은 편집기 유형의 모든 인스턴스에서 작성되고 공유됩니다. 조치 클래스는 org.eclipse.ui.IEditorActionDelegate를 구현하는 데 필요합니다. 활성화 편집기는 IEditorActionDelegate.setActiveEditor를 호출하여 위임에 전달됩니다.
enablement 및 visibility 요소를 각각 사용하여 조치의 활성 및/또는 표시 여부를 정의할 수 있습니다. 이들 두 요소는 활성 및/또는 표시 여부를 판별하는 데 평가되는 부울 표현식을 포함합니다.
구문은 enablement 및 visibility 요소에 대해 동일합니다. 이들 두 요소는 하나의 부울 표현식 하위 요소를 포함합니다. 가장 간단한 경우에 이것은 objectClass, objectState, pluginState 또는 systemProperty 요소가 됩니다. 복잡한 경우에는 and, or 및 not 요소가 조합되어 부울 표현식을 형성할 수 있습니다. and 요소와 or 요소는 모두 두 개의 하위 요소를 포함해야 합니다. not 요소는 1개의 부속요소만 포함해야 합니다.
<!ELEMENT extension (editorContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editorContribution (menu* , action*)>
<!ATTLIST editorContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
이 요소는 편집기 조치 또는 메뉴의 그룹을 정의하는 데 사용됩니다.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
accelerator CDATA #IMPLIED
definitionId CDATA #IMPLIED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED
actionID CDATA #IMPLIED>
이 요소는 UI에서 사용자가 호출할 수 있는 조치를 정의합니다.
push | - 일반 메뉴 항목 또는 도구 항목. | |
radio | - 라디오 스타일 메뉴 항목 또는 도구 항목. 같은 메뉴나 도구 모음 그룹에 있는 라디오 스타일의 조치는 라디오 세트로 동작합니다. 초기값은 state 속성에서 지정됩니다. | |
toggle | - 선택된 스타일 메뉴 항목 또는 토글 도구 항목. 초기값은 state 속성에서 지정됩니다. |
! | - 0개 항목 선택 | |
? | - 0개 또는 1개 항목 선택 | |
+ | - 1개 이상의 항목 선택 | |
multiple, 2+ | - 두 개 이상의 항목 선택 | |
n | - 선택한 항목의 정확한 개수. 예를 들어, enablesFor=" 4"이면 항목 네 개가 선택된 경우에만 조치를 사용할 수 있습니다. | |
* | - 선택한 항목 개수 |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
이 요소는 새 메뉴를 정의하는 데 사용됩니다.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
이 요소는 새 메뉴에 메뉴 분리자를 작성하는 데 사용됩니다.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
이 요소는 새 메뉴에 이름 지정된 그룹을 작성하는 데 사용됩니다. separator 요소와는 달리 새 메뉴에 시각적으로 표시되지 않습니다.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
이 요소는 현재 선택사항에 기초한 조치 활성 판별을 돕는 데 사용됩니다. enablement 요소가 지정되는 경우 무시됩니다.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
이 요소는 확장의 활성을 정의하는 데 사용됩니다.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
이 요소는 확장의 가시성을 정의하는 데 사용됩니다.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
이 요소는 두 개의 하위 요소 표현식 평가 결과에서 부울 AND 연산을 나타냅니다.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
이 요소는 두 개의 하위 요소 표현식 평가 결과에서 부울 OR 연산을 나타냅니다.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
이 요소는 하위 요소 표현식 평가 결과에서 부울 NOT 연산을 나타냅니다.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
이 요소는 현재 선택사항에 있는 각 오브젝트의 클래스 또는 인터페이스를 평가하는 데 사용됩니다. 선택사항의 각 오브젝트에서 지정된 클래스 또는 인터페이스를 구현하면 표현식은 true로 평가됩니다.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
이 요소는 현재 선택사항의 각 오브젝트 속성 상태를 평가하는 데 사용됩니다. 선택사항의 각 오브젝트에 지정된 속성 상태가 있으면 표현식은 true로 평가됩니다. 표현식의 이 유형을 평가하려면 선택사항의 각 오브젝트를 구현하거나 org.eclipse.ui.IActionFilter 인터페이스에 적용시켜야 합니다.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
이 요소는 플러그인의 상태를 평가하는 데 사용됩니다. 플러그인의 상태는 installed(OSGi의 "resolved" 개념에 해당) 또는 activated(OSGi의 "active" 개념에 해당) 중 하나일 수 있습니다.
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
이 요소는 일부 시스템 특성의 상태를 평가하는 데 사용됩니다. 특성 값은 java.lang.System에서 검색됩니다.
<extension point=
"org.eclipse.ui.editorActions"
>
<editorContribution id=
"com.xyz.xyzContribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ"
label=
"&XYZ Menu"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"XYZ/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</editorContribution>
</extension>
위의 예제에서 지정한 조치는 "XYZ 메뉴"라는 새로운 최상위 레벨 메뉴에서 선택란 항목으로 나타나며 도구 모음에서는 전환 단추로 나타납니다. 선택사항에 Java 파일 자원만 있는 경우에 조치를 사용할 수 있습니다.
다음은 편집기 조치 확장의 기타 예제입니다.
<extension point=
"org.eclipse.ui.editorActions"
>
<editorContribution id=
"com.xyz.xyz2Contribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ2"
label=
"&XYZ2 Menu"
path=
"edit/additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"&Run XYZ2 Tool"
menubarPath=
"edit/XYZ2/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"Run XYZ2 Tool"
helpContextId=
"com.xyz.run_action_context2"
class=
"com.xyz.actions.RunXYZ2"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
</editorContribution>
</extension>
위의 예제에서 지정한 조치는 최상위 레벨의 "편집" 메뉴에 있는 "XYZ2 메뉴"라는 이름의 서브메뉴에서 메뉴 항목으로 나타납니다. 선택사항에 Java 파일 자원이 없는 경우에 조치를 사용할 수 있습니다.
이 확장점을 사용하여 대상 편집기에서 이전에 만든 메뉴로 조치를 제공할 수 있습니다. 또한, 메뉴와 조치가 Workbench 창에 제공될 수 있습니다. Workbench 창에 있는 주 그룹과 조치의 ID는 org.eclipse.ui.IWorkbenchActionConstants에서 정의됩니다. 주 그룹과 조치의 ID는 새로운 조치를 추가할 때 참조 지점으로 사용되어야 합니다. path 속성에 대한 다음 값을 사용하여 상위 레벨 메뉴를 작성합니다.
이 경로에 추가된 조치와 메뉴는 관련된 편집기가 활성화된 경우에만 표시됩니다. 편집기가 닫히면 메뉴와 조치가 제거됩니다.
조치 확장에 대한 활성 기준은 초기에 enablesFor와 selection 또는 enablement로 정의합니다. 그러나 조치 위임이 인스턴스화되면 조치 활성 상태를 selectionChanged 메소드에서 직접 제어할 수 있습니다.
조치 및 메뉴 레이블에는 다음 규칙을 사용하여 니모닉을 인코딩하는 특수 문자가 포함될 수 있습니다.
selection 및 enablement 요소는 서로 같이 사용할 수 없습니다. enablement 요소는 objectClass 및 objectState 하위 요소를 사용하여 selection 요소를 바꿀 수 있습니다. 예를 들어, 다음과 같습니다.
다음을 사용하여 표현될 수 있습니다.<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
Copyright (c) 2000, 2005 IBM Corporation and others.
All rights reserved. 본 프로그램 및 본 프로그램에 동봉되는 자료는 본 배포물에 동봉되는 Eclipse Public License v1.0의 조항에 따라 사용해야 하며
웹 사이트(http://www.eclipse.org/legal/epl-v10.html)에서도 관련 사항을 참조할 수 있습니다.