보기 메뉴, 도구 모음 및 조치

org.eclipse.ui.viewActions

이 확장점은 다른 플러그인에서 등록한 보기의 풀다운 메뉴 및 도구 모음에 조치를 추가하는 데 사용됩니다. 각 보기에는 대개 맨 위 오른쪽 삼각형 단추를 클릭하면 활성화되는 로컬 풀다운 메뉴가 있습니다. 다른 플러그인에서 이 메뉴에 서브메뉴 및 조치를 제공할 수 있습니다. 플러그인에서는 보기 도구 모음에도 조치를 제공할 수 있습니다. 이러한 영역은 보기 소유자가 먼저 채울 수 있습니다. 그런 다음 다른 플러그인에 의해 선택적으로 추가하는 항목이 추가됩니다.

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

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



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

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

"&amp;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 파일 자원이 없는 경우에 조치를 사용할 수 있습니다.

class 속성 값은 org.eclipse.ui.IViewActionDelegate를 구현하는 Java 클래스의 완전한 이름이어야 합니다. 실질적으로 필요하기 전에 전체 플러그인이 로드되는 것을 방지하기 위해 가능한 늦게 이 클래스를 로드합니다.

org.eclipse.ui.IViewActionDelegate 인터페이스는 org.eclipse.ui.IActionDelegate를 확장하며, 위임이 지시하고 있는 보기 인스턴스로 초기화할 수 있도록 하는 추가 메소드를 추가합니다.

이 확장점을 사용하여 대상 보기에서 이전에 만든 메뉴로 조치를 제공할 수 있습니다. menu path 속성을 생략하면 풀다운 메뉴의 끝에 새 메뉴 또는 조치가 추가됩니다.

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

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

  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>

각 보기는 일반적으로 풀다운 메뉴 및 로컬 도구 모음의 여러 개의 표준 항목과 함께 제공됩니다. 다른 플러그인에서 추가된 것들은 표준 보완에 추가됩니다.