부울 표현식 및 조치 필터

플러그인이 메뉴 확장점 중 하나를 사용하여 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 class 및 name이 충족되어야 합니다.

popupMenus

(오브젝트 지시문 전용)

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

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

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

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

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

 

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

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

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

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