부울 표현식 및 조치 필터

플러그인이 메뉴 확장점 중 하나를 사용하여 Workbench UI에 조치를 제공할 경우, 메뉴에서 사용할 수 있거나 가시적인 메뉴 항목의 조건을 지정할 수 있습니다. 플러그인은 선택사항 계수 및 선택사항 클래스 등의 간단한 사용 조건을 제공할 수 있을 뿐 아니라 부울 표현식을 사용하여 조치가 표시 또는 사용해야 하는 시기를 판별하는 데 더 큰 유연성을 가질 수 있습니다.

부울 인에이블먼트 표현식

부울 표현식은 특정 조건을 평가하기 위한 사전 정의된 구문과 결합된 부울 연산자(NOT, AND, OR)를 포함할 수 있습니다. 이러한 조건의 상당수가 특정 오브젝트를 테스트합니다. "대상 오브젝트"(테스트되는 오브젝트)의 ID는 인에이블먼트 표현식의 특정 컨텍스트에 의존합니다.

이들 표현식 중 하나에 대해 테스트될 값을 지정할 때 다음 변환이 성공할 때를 제외하고 값이 문자열이라고 가정합니다.

인에이블먼트 XML 구문에 대한 전체 정의는 org.eclipse.ui.popupMenus와 같은 enablement 요소를 정의하는 확장에 대한 확장점 참조 문서에서 찾을 수 있습니다.

R3.0 이전에는 이러한 일반화된 부울 표현식을 사용할 수 없습니다. 다음의 사전 정의된 표현식이 일반 표현식을 빌드하지 않고 특정 조건을 평가하는 데 사용됩니다. 이러한 표현식은 모두 보다 일반화된 구문으로 표현할 수 있음을 참고하십시오. 사전 정의된 표현식은 다음과 같이 여전히 사용할 수 있습니다.

예를 들어 다음 스니펫은 조치 세트의 가상 조치에 사용될 수 있는 인에이블먼트 표현식을 나타냅니다.

<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 마크업 속성 및 부울 표현식을 사용하여 사용 가능성에 영향을 주는 방법을 요약합니다.

확장점 이름

사용 가능성에 영향을 주는 속성

부울 표현식

viewActions,

editorActions,

actionSets

enablesFor - 조치을 사용하기 위해 충족되어야 하는 선택사항 계수를 지정합니다.

selection class - 선택한 오브젝트가 조치를 사용 가능하도록 구현하거나 서브클래스로 분류해야 하는 클래스

selection name - 선택사항의 오브젝트에 적용될 수 있는 와일드 카드 필터

visibility - 부울 표현식 메뉴 항목이 메뉴에서 표시 여부를 제어합니다.

enablement - 부울 표현식 메뉴 항목이 메뉴에서 사용 가능 여부를 제어합니다. 사용 가능성 표현식을 적용하기 전에 enablesFor 속성과 selection classname이 충족되어야 합니다.

popupMenus

(오브젝트 지시문 전용)

objectClass - 선택사항의 오브젝트가 구현하거나 서브클래스로 분류해야 하는 클래스를 지정합니다.

(오브젝트 및 표시기 지시문)

enablesFor - 조치을 사용하기 위해 충족되어야 하는 선택사항 계수를 지정합니다.

selection class - 조치를 사용하기 위해 선택된 오브젝트가 구현하거나 서브클래스로 분류해야 하는 클래스

selection name - 선택사항의 오브젝트에 적용될 수 있는 와일드 카드 필터

 

(오브젝트 및 표시기 지시문)

visibility - 부울 표현식 메뉴 항목이 메뉴에서 표시 여부를 제어합니다.

enablement - 부울 표현식 메뉴 항목이 메뉴에서 사용 가능 여부를 제어합니다. 사용 가능성 표현식을 적용하기 전에 enablesFor 속성과 selection classname이 충족되어야 합니다.

컨텐츠 유형으로 objectState 사용

컨텐츠 유형을 정의하는 기능(컨텐츠 유형 참조)을 부울 표현식과 결합하여 자원의 컨텐츠 유형을 기준으로 특정 활성이나 가시성 조건을 정의할 수 있습니다. 예를 들어, 다음 스니펫은 선택된 파일의 컨텐츠가 플러그인 특수 컨텐츠 유형과 일치하는 경우에만 팝업 메뉴 항목을 볼 수 있게 합니다.

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