Eclipse Plugin Development, связывающий разные редакторы с одинаковым расширением файла - PullRequest
5 голосов
/ 10 февраля 2011

Я разрабатываю плагин eclipse, который связывает определенный редактор с конкретным расширением файла, скажем, ".abc".

Проблема в том, что я хочу ассоциировать файлы .abc с этим редактором только для моих собственных проектов, в которых есть моя собственная природа. Как и сейчас, он всегда будет открывать файлы .abc в этом редакторе независимо от того, в каком проекте.

Как я могу открыть свой собственный редактор для файлов .abc, только если они находятся в проектах с моей собственной натурой?

1 Ответ

8 голосов
/ 10 февраля 2011

Вам необходимо определить content-type, используя точку расширения org.eclipse.core.contenttype. Затем вам нужно связать ваш редактор с конкретным типом контента (а не расширением файла).

Далее вам нужно связать характер вашего проекта с типом контента, который вы только что определили.

Вам также может понадобиться создать второй тип контента, который должен использоваться для ваших файлов, когда вы находитесь за пределами проекта с определенной природой.

Вот пример, который мы использовали в Groovy-Eclipse, чтобы * .groovy файлы открывались с помощью редактора groovy по умолчанию в проектах groovy, но текстовым редактором вне проектов groovy:

 <extension point="org.eclipse.core.contenttype.contentTypes">
    <content-type
       base-type="org.eclipse.jdt.core.javaSource"
       file-extensions="groovy"
       id="groovySource"
       name="Groovy Source File (for Groovy projects)"
       priority="high"/>

    <content-type
       base-type="org.eclipse.core.runtime.text"
       file-extensions="groovy"
       id="groovyText"
       name="Groovy Text File (for non-Groovy projects)"
       priority="low"/>
</extension>

<extension
     id="groovyNature"
     name="Groovy Nature"
     point="org.eclipse.core.resources.natures">
  <runtime>
     <run class="org.codehaus.jdt.groovy.model.GroovyNature"/>
  </runtime>
  <requires-nature id="org.eclipse.jdt.core.javanature"/>
  <content-type
        id="org.eclipse.jdt.groovy.core.groovySource">
  </content-type>

Здесь мы определяем groovySource для нестандартных проектов и groovyText для нестандартных проектов. Также обратите внимание, что приоритет типов контента различен.

А затем в другом месте мы связываем GroovyEditor с типом содержимого groovySource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...