조치 세트

org.eclipse.ui.actionSets

이 확장점은 메뉴, 메뉴 항목 및 도구 모음 단추를 Workbench 창의 공통 영역에 추가하는 데 사용됩니다. 이 컨트리뷰션을 조치 세트라고 하고 Perspective를 사용자 정의하는 사용자에 따라 Workbench 창에 나타납니다.

enablementvisibility 요소를 각각 사용하여 조치의 활성 및/또는 표시 여부를 정의할 수 있습니다. 이들 두 요소는 활성 및/또는 표시 여부를 판별하는 데 평가되는 부울 표현식을 포함합니다.

구문은 enablementvisibility 요소에 대해 동일합니다. 이들 두 요소는 하나의 부울 표현식 하위 요소를 포함합니다. 가장 간단한 경우에 이것은 objectClass, objectState, pluginState 또는 systemProperty 요소가 됩니다. 복잡한 경우에는 and, ornot 요소가 조합되어 부울 표현식을 형성할 수 있습니다. 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에서 사용자가 호출할 수 있는 조치를 정의합니다.



<!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=

"&amp;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=

"&amp;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=

"&amp;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=

"&amp;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=

"&amp;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 조치는 단일 선택 단추 메뉴 항목으로 나타납니다. 현재 선택사항 상태와 관계없이 항상 사용 가능합니다.

class 속성 값은 org.eclipse.ui.IWorkbenchWindowActionDelegate 또는 org.eclipse.ui.IWorkbenchWindowPulldownDelegate를 구현하는 클래스의 완전한 이름이어야 합니다. style 속성에 pulldown 값이 있는 경우에 문자를 구현해야 합니다. 이 클래스는 조치 수행을 담당하는 핸들러입니다. retarget 속성이 true인 경우 이 속성이 제공되어서는 안됩니다. 실질적으로 필요하기 전에 전체 플러그인이 로드되는 것을 방지하기 위해 가능한 늦게 이 클래스를 로드합니다.

조치 확장에 대한 활성 기준은 초기에 enablesForselection 또는 enablement로 정의합니다. 그러나 조치 위임이 인스턴스화되면 조치 활성 상태를 selectionChanged 메소드에서 직접 제어할 수 있습니다.

Workbench가 플러그인을 위해서 메뉴를 생성하지는 않는다는 점에 유의해야 합니다. 메뉴 경로는 이미 존재하는 메뉴를 참조해야 합니다.

조치 및 메뉴 레이블에는 다음 규칙을 사용하여 니모닉을 인코딩하는 특수 문자가 포함될 수 있습니다.

  1. 변환된 텍스트의 선택 문자 앞에 앰퍼샌드('&') 문자를 사용하여 니모닉을 지정합니다. XML 문자열에는 앰퍼샌드를 사용할 수 없으므로 &amp; 문자 엔티티를 사용하십시오.
둘 이상의 조치가 하나의 단일 확장에 의해 메뉴 또는 도구 모음에 제공된 경우 조치는 plugin.xml 파일에 나열되는 순서와 반대로 나타납니다. 이것은 확실하게 직관적이지 않습니다. 그러나 이것을 Eclipse 플랫폼 API가 확정된 후 발견했습니다. 이 작동을 지금 변경하면 기존 작동에 의존하는 모든 플러그인이 중단됩니다.

selectionenablement 요소는 서로 같이 사용할 수 없습니다. enablement 요소는 objectClassobjectState 하위 요소를 사용하여 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 속성에 대한 다음 값을 사용하여 상위 레벨 메뉴를 작성합니다.

path 속성을 생략하면 추가 메뉴 표시줄 그룹에 새 메뉴가 추가됩니다.

Workbench 창의 기본 그룹은 IWorkbenchActionConstants 인터페이스에 정의됩니다. 동적인 컨트리뷰션의 코드에 이 상수를 사용할 수 있습니다. 기존 Workbench 메뉴 및 도구 모음과 완벽하게 통합하기 위해 값을 XML 파일에 복사할 수도 있습니다.

Workbench 창의 다양한 메뉴 및 도구 모음 항목이 알고리즘적으로 정의됩니다. 이 경우 별도의 메커니즘을 사용하여 창을 확장해야 합니다. 예를 들어 새 Workbench 보기를 추가하면 새 메뉴 항목이 Perspective 메뉴에 나타납니다. 가져오기, 내보내기 및 새로 작성 마법사 확장도 자동으로 창에 추가됩니다.