enablement 및 visibility 요소를 각각 사용하여 조치의 활성 및/또는 표시 여부를 정의할 수 있습니다. 이들 두 요소는 활성 및/또는 표시 여부를 판별하는 데 평가되는 부울 표현식을 포함합니다.
구문은 enablement 및 visibility 요소에 대해 동일합니다. 이들 두 요소는 하나의 부울 표현식 하위 요소를 포함합니다. 가장 간단한 경우에 이것은 objectClass, objectState, pluginState 또는 systemProperty 요소가 됩니다. 복잡한 경우에는 and, or 및 not 요소가 조합되어 부울 표현식을 형성할 수 있습니다. and 요소와 or 요소는 모두 두 개의 하위 요소를 포함해야 합니다. not 요소는 1개의 부속요소만 포함해야 합니다.
<!ELEMENT extension (actionSet+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT actionSet (menu* , action*)>
<!ATTLIST actionSet
id CDATA #REQUIRED
label CDATA #REQUIRED
visible (true | false)
description CDATA #IMPLIED>
이 요소는 조치 또는 메뉴의 그룹을 정의하는 데 사용됩니다.
<!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|pulldown) "push"
state (true | false)
pulldown (true | false)
class CDATA #IMPLIED
retarget (true | false)
allowLabelUpdate (true | false)
enablesFor CDATA #IMPLIED>
이 요소는 UI에서 사용자가 호출할 수 있는 조치를 정의합니다.
push | - 일반 메뉴 항목 또는 도구 항목. | |
radio | - 라디오 스타일 메뉴 항목 또는 도구 항목. 같은 메뉴나 도구 모음 그룹에 있는 라디오 스타일의 조치는 라디오 세트로 동작합니다. 초기값은 state 속성에서 지정됩니다. | |
toggle | - 선택된 스타일 메뉴 항목 또는 토글 도구 항목. 초기값은 state 속성에서 지정됩니다. | |
pulldown | - 계단식 스타일 메뉴 항목 또는 도구 항목 옆의 드롭 다운 메뉴. |
! | - 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.actionSets"
>
<actionSet id=
"com.xyz.actionSet"
label=
"My Actions"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
<separator name=
"option1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
style=
"toggle"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/group1"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
enablesFor=
"1"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
<action id=
"com.xyz.runABC"
label=
"&Run ABC Tool"
style=
"push"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/XYZ"
icon=
"icons/runABC.gif"
tooltip=
"Run ABC Tool"
helpContextId=
"com.xyz.run_abc_action_context"
retarget=
"true"
allowLabelUpdate=
"true"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
<action id=
"com.xyz.runDEF"
label=
"&Run DEF Tool"
style=
"radio"
state=
"true"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runDEF.gif"
tooltip=
"Run DEF Tool"
class=
"com.xyz.actions.RunDEF"
helpContextId=
"com.xyz.run_def_action_context"
>
</action>
<action id=
"com.xyz.runGHI"
label=
"&Run GHI Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runGHI.gif"
tooltip=
"Run GHI Tool"
class=
"com.xyz.actions.RunGHI"
helpContextId=
"com.xyz.run_ghi_action_context"
>
</action>
<action id=
"com.xyz.runJKL"
label=
"&Run JKL Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runJKL.gif"
tooltip=
"Run JKL Tool"
class=
"com.xyz.actions.RunJKL"
helpContextId=
"com.xyz.run_jkl_action_context"
>
</action>
</actionSet>
</extension>
위의 예에서 "My Actions"라는 지정된 조치 세트는 visible 속성이 지정되지 않았으므로 처음에 각 Perspective에 표시되지 않습니다.
XYZ 조치는 처음에는 아무 것도 선택되어 있지 않은 선택란 상자 메뉴 항목으로 나타납니다. 선택항목 계수가 1이고 선택사항에 Java 파일 자원이 들어 있는 경우에만 사용 가능합니다.
ABC 조치는 메뉴와 도구 모음에 나타납니다. 선택사항에 Java 파일 자원이 들어 있지 않은 경우에만 사용 가능합니다. 이것은 레이블 대상 재지정 조치이므로 class 속성을 제공하지 않습니다.
DEF, GHI 및 JKL 조치는 단일 선택 단추 메뉴 항목으로 나타납니다. 현재 선택사항 상태와 관계없이 항상 사용 가능합니다.
조치 확장에 대한 활성 기준은 초기에 enablesFor와 selection 또는 enablement로 정의합니다. 그러나 조치 위임이 인스턴스화되면 조치 활성 상태를 selectionChanged 메소드에서 직접 제어할 수 있습니다.
Workbench가 플러그인을 위해서 메뉴를 생성하지는 않는다는 점에 유의해야 합니다. 메뉴 경로는 이미 존재하는 메뉴를 참조해야 합니다.
조치 및 메뉴 레이블에는 다음 규칙을 사용하여 니모닉을 인코딩하는 특수 문자가 포함될 수 있습니다.
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>
path 속성에 대한 다음 값을 사용하여 상위 레벨 메뉴를 작성합니다.
Workbench 창의 기본 그룹은 IWorkbenchActionConstants 인터페이스에 정의됩니다. 동적인 컨트리뷰션의 코드에 이 상수를 사용할 수 있습니다. 기존 Workbench 메뉴 및 도구 모음과 완벽하게 통합하기 위해 값을 XML 파일에 복사할 수도 있습니다.
Workbench 창의 다양한 메뉴 및 도구 모음 항목이 알고리즘적으로 정의됩니다. 이 경우 별도의 메커니즘을 사용하여 창을 확장해야 합니다. 예를 들어 새 Workbench 보기를 추가하면 새 메뉴 항목이 Perspective 메뉴에 나타납니다. 가져오기, 내보내기 및 새로 작성 마법사 확장도 자동으로 창에 추가됩니다.
Copyright (c) 2000, 2005 IBM Corporation and others.
All rights reserved. 본 프로그램 및 본 프로그램에 동봉되는 자료는 본 배포물에 동봉되는 Eclipse Public License v1.0의 조항에 따라 사용해야 하며
웹 사이트(http://www.eclipse.org/legal/epl-v10.html)에서도 관련 사항을 참조할 수 있습니다.