2016-04-04 2 views
0

Я хочу внести свой вклад в контекстное меню только тогда, когда выполняются следующие 2 условия:Участие в Eclipse, контекстное меню, когда родительский файл проекта и отвечать условиям

1.- Если выбранный файл имеет расширение .txt 2.- Если родительский проект выбранного файла имеет определенную огранку

Я могу сделать это отдельным, используя следующие условия, используя точку org.eclipse.ui.menus расширения, а именно: для проекта фаски:

<with variable="activeMenuSelection"> 
    <iterate operator="and" ifEmpty="false"> 
     <adapt type="org.eclipse.core.resources.IProject"> 
      <test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.code.quality" forcePluginActivation="true" /> 
     </adapt> 
    </iterate> 
</with> 

И для файла расширение:

<with variable="activeMenuSelection"> 
    <iterate operator="and" ifEmpty="false"> 
     <adapt type="org.eclipse.core.resources.IFile"> 
      <test property="org.eclipse.core.resources.extension" value="txt" forcePluginActivation="true" /> 
     </adapt> 
    </iterate> 
</with> 

Но у меня есть проблемы, чтобы объединить эти два условия, так как переменная activeMenuSelection будет содержать только файл, и я не могу использовать его, чтобы проверить огранку проекта, есть переменная можно использовать для доступа к активный проект в том же состоянии?

+0

Использование элементов 'adapt' под одним и тем же элементом' iterate' не работает по желанию? – nitind

+0

Нет, потому что переменная 'activeMenuSelection' получает только файл, который я щелкнул правой кнопкой мыши, а не родительский проект – CJ1

ответ

1

Тест org.eclipse.wst.common.project.facet.core.projectFacet будет работать на любом IResource, поэтому он будет работать на IFile, а также IProject. Таким образом, вы можете комбинировать тесты.

+0

Он работает, спасибо. В будущем мне придется создать пару тестовых тестеров свойств, в которых классы не будут совместимы друг с другом, поэтому я не смогу их комбинировать таким образом, есть ли способ достичь этого? – CJ1

+0

Вы можете использовать '' операторы, но это действительно другой вопрос. –

Смежные вопросы