플러그인이 메뉴 확장점 중 하나를 사용하여 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 파일의 컨텐츠 유형을 검사할 수 있습니다. 이로써 플러그인이 특정 파일 유형과 관련된 메뉴 조치를 사용 가능하게 하거나 표시하기 전에 특정 컨텐츠 검사를 적용할 수 있습니다. 컨텐츠 유형 확장자에 대한 자세한 내용은 컨텐츠 유형을 참조하십시오.