플러그인이 메뉴 확장점 중 하나를 사용하여 Workbench UI에 조치를 제공할 경우, 메뉴에서 사용할 수 있거나 가시적인 메뉴 항목의 조건을 지정할 수 있습니다. 플러그인은 선택사항 계수 및 선택사항 클래스 등의 간단한 사용 조건을 제공할 수 있을 뿐 아니라 부울 표현식을 사용하여 조치가 표시 또는 사용해야 하는 시기를 판별하는 데 더 큰 유연성을 가질 수 있습니다.
부울 표현식은 특정 조건을 평가하기 위한 사전 정의된 구문과 결합된 부울 연산자(NOT, AND, OR)를 포함할 수 있습니다. 이러한 조건의 상당수가 특정 오브젝트를 테스트합니다. "대상 오브젝트"(테스트되는 오브젝트)의 ID는 인에이블먼트 표현식의 특정 컨텍스트에 의존합니다.
이들 표현식 중 하나에 대해 테스트될 값을 지정할 때 다음 변환이 성공할 때를 제외하고 값이 문자열이라고 가정합니다.
인에이블먼트 XML 구문에 대한 전체 정의는 org.eclipse.ui.popupMenus와 같은 enablement 요소를 정의하는 확장에 대한 확장점 참조 문서에서 찾을 수 있습니다.
R3.0 이전에는 이러한 일반화된 부울 표현식을 사용할 수 없습니다. 다음의 사전 정의된 표현식이 일반 표현식을 빌드하지 않고 특정 조건을 평가하는 데 사용됩니다. 이러한 표현식은 모두 보다 일반화된 구문으로 표현할 수 있음을 참고하십시오. 사전 정의된 표현식은 다음과 같이 여전히 사용할 수 있습니다.
objectClass - 선택사항의 각 오브젝트가 클래스를 구현하거나 서브클래스로 분류하는 경우 true입니다.
objectState - 이름 지정 속성이 지정된 값과 같을 경우 true입니다. IActionFilter가 표현식을 평가하는 데 도움이 됩니다. 조치 필터는 대상 선택사항 및 이름 지정 속성 값을 기준으로 조치의 활성화 기준을 동적으로 연산합니다.
systemProperty - 이름 지정 시스템 특성이 지정된 값과 같을 경우 true입니다.
pluginState - 지정된 플러그인(ID순)이 설치됨 또는 활성화됨 여부를 지정합니다.
예를 들어 다음 스니펫은 조치 세트의 가상 조치에 사용될 수 있는 인에이블먼트 표현식을 나타냅니다.
<action id="org.eclipse.examples.actionEnablement.class"
label="Red Element"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.ObjectTestAction">
<enablement>
<and>
<objectClass name="org.eclipse.examples.actionEnablement.TestElement"/>
<objectState name="name" value="red"/>
</and>
</enablement>
</action>
<action id="org.eclipse.examples.actionEnablement.property"
label="Property"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.PropertyTestAction">
<enablement>
<systemProperty name="MyTestProperty" value="puppy"/>
</enablement>
</action>
<action id="org.eclipse.examples.actionEnablement.pluginState"
label="Installed"
menubarPath="additions"
class="org.eclipse.examples.actionEnablement.PluginTestAction">
<enablement>
<pluginState id="x.y.z.anotherPlugin" value="installed"/>
</enablement>
</action>
이 표현식의 자세한 샘플 및 XML에 대한 전체 설명은 확장점의 참조 문서를 참조하십시오.
다음 테이블에서는 조치를 제공하는 확장점을 나열하고 XML 마크업 속성 및 부울 표현식을 사용하여 사용 가능성에 영향을 주는 방법을 요약합니다.
|
확장점 이름 |
사용 가능성에 영향을 주는 속성 |
부울 표현식 |
|---|---|---|
|
enablesFor - 조치을 사용하기 위해 충족되어야 하는 선택사항 계수를 지정합니다. selection class - 선택한 오브젝트가 조치를 사용 가능하도록 구현하거나 서브클래스로 분류해야 하는 클래스 selection name - 선택사항의 오브젝트에 적용될 수 있는 와일드 카드 필터 |
visibility - 부울 표현식 메뉴 항목이 메뉴에서 표시 여부를 제어합니다. enablement - 부울 표현식 메뉴 항목이 메뉴에서 사용 가능 여부를 제어합니다. 사용 가능성 표현식을 적용하기 전에 enablesFor 속성과 selection class 및 name이 충족되어야 합니다. |
|
|
(오브젝트 지시문 전용) objectClass - 선택사항의 오브젝트가 구현하거나 서브클래스로 분류해야 하는 클래스를 지정합니다. (오브젝트 및 표시기 지시문) enablesFor - 조치을 사용하기 위해 충족되어야 하는 선택사항 계수를 지정합니다. selection class - 조치를 사용하기 위해 선택된 오브젝트가 구현하거나 서브클래스로 분류해야 하는 클래스 selection name - 선택사항의 오브젝트에 적용될 수 있는 와일드 카드 필터
|
(오브젝트 및 표시기 지시문) visibility - 부울 표현식 메뉴 항목이 메뉴에서 표시 여부를 제어합니다. enablement - 부울 표현식 메뉴 항목이 메뉴에서 사용 가능 여부를 제어합니다. 사용 가능성 표현식을 적용하기 전에 enablesFor 속성과 selection class 및 name이 충족되어야 합니다. |
컨텐츠 유형을 정의하는 기능(컨텐츠 유형 참조)을 부울 표현식과 결합하여 자원의 컨텐츠 유형을 기준으로 특정 활성이나 가시성 조건을 정의할 수 있습니다. 예를 들어, 다음 스니펫은 선택된 파일의 컨텐츠가 플러그인 특수 컨텐츠 유형과 일치하는 경우에만 팝업 메뉴 항목을 볼 수 있게 합니다.
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.example.objectContributions"
objectClass="org.eclipse.core.resources.IFile"
nameFilter="*.xml">
<visibility>
<or>
<objectState
name="contentTypeId"
value="com.example.employeeRecordContentType"/>
<objectState
name="contentTypeId"
value="com.example.customerRecordContentType"/>
</or>
</visibility>
<action id="com.example.action1"
...
contentTypeId 속성을 objectState 표현식에서 사용하여 선택된 xml 파일의 컨텐츠 유형을 검사할 수 있습니다. 이로써 플러그인이 특정 파일 유형과 관련된 메뉴 조치를 사용 가능하게 하거나 표시하기 전에 특정 컨텐츠 검사를 적용할 수 있습니다. 컨텐츠 유형 확장자에 대한 자세한 내용은 컨텐츠 유형을 참조하십시오.