enablement 및 visibility 요소를 각각 사용하여 조치의 활성 및/또는 표시 여부를 정의할 수 있습니다. 이들 두 요소는 활성 및/또는 표시 여부를 판별하는 데 평가되는 부울 표현식을 포함합니다.
구문은 enablement 및 visibility 요소에 대해 동일합니다. 이들 두 요소는 하나의 부울 표현식 하위 요소를 포함합니다. 가장 간단한 경우에 이것은 objectClass, objectState, pluginState 또는 systemProperty 요소가 됩니다. 복잡한 경우에는 and, or 및 not 요소가 조합되어 부울 표현식을 형성할 수 있습니다. and 요소와 or 요소는 모두 두 개의 하위 요소를 포함해야 합니다. not 요소는 1개의 부속요소만 포함해야 합니다.
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
이 요소는 보기 조치 또는 메뉴의 그룹을 정의하는 데 사용됩니다.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
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>
이 요소는 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.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"com.xyz.xyzMenu/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>
</viewContribution>
</extension>
위의 예에서 지정된 조치는 단일 선택사항(enablesFor 속성)에 대해서만 활성화됩니다. 또한 선택사항의 오브젝트는 Java 파일 자원이어야 합니다.
다음은 보기 조치 확장의 기타 예제입니다.
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"&Run XYZ2 Tool"
menubarPath=
"com.xyz.xyzMenu/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>
</viewContribution>
</extension>
위의 예제에서 지정된 조치는 메뉴 항목으로 나타납니다. 선택사항에 Java 파일 자원이 없는 경우에 조치를 사용할 수 있습니다.
org.eclipse.ui.IViewActionDelegate 인터페이스는 org.eclipse.ui.IActionDelegate를 확장하며, 위임이 지시하고 있는 보기 인스턴스로 초기화할 수 있도록 하는 추가 메소드를 추가합니다.
이 확장점을 사용하여 대상 보기에서 이전에 만든 메뉴로 조치를 제공할 수 있습니다. menu 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) 2002, 2005 IBM Corporation and others.
All rights reserved. 본 프로그램 및 본 프로그램에 동봉되는 자료는 본 배포물에 동봉되는 Eclipse Public License v1.0의 조항에 따라 사용해야 하며
웹 사이트(http://www.eclipse.org/legal/epl-v10.html)에서도 관련 사항을 참조할 수 있습니다.