以编程方式选择编辑器

时间:2014-08-25 06:49:39

标签: eclipse eclipse-plugin jface

我编写了一个包含多种编辑器类型的Eclpse插件。对于每个编辑器,内容类型是相关联的。在某些情况下,我有两个可能的编辑器用于相同的内容类型。我知道我可以通过“打开方式”选择编辑器。但我想自动决定应该打开哪个编辑器。

这是一个例子 在一个插件中,我有以下扩展点定义:

   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="de.dstg.adsplus.editors.program.MacroEditor"
         contributorClass="de.dstg.adsplus.editors.core.ADSTextEditorActionContributor"
            default="true"
            icon="icons/macro.png"
            id="de.dstg.adsplus.editors.editors.macroEditor"
            name="ADS Macro Editor">
         <contentTypeBinding
               contentTypeId="de.dstg.adsplus.macro">
         </contentTypeBinding>
      </editor>
  </extension

在另一个插件中,我有这个定义:

  <extension
         point="org.eclipse.ui.editors">
      <editor
            class="de.dstg.adsplus.focusededitor.FocusedEditor"
            contributorClass="de.dstg.adsplus.focusededitor.FocusedEditorContributor"
            icon="icons/dveditor.png"
            id="de.dstg.adsplus.focusededitor"
            name="ADS Focused Editor">
         <contentTypeBinding
               contentTypeId="de.dstg.adsplus.macro">
         </contentTypeBinding>

当我双击具有此内容类型的文件时,我想以编程方式决定打开哪个编辑器,具体取决于文件的内容或存储位置。 我试图找到一种方法,我可以实现,但没有成功。

1 个答案:

答案 0 :(得分:0)

您可以使用两种不同的内容类型,使用相同的文件扩展名,并使用“内容类型”描述符&#39;区分文件。

内容类型描述符在内容类型扩展点中定义:

<extension point="org.eclipse.core.contenttype.contentTypes"> 
   <content-type id="ABC"
      base-type="org.eclipse.core.runtime.xml"      
      file-extensions="a,b,c">
    <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber2">
    </describer>
  </content-type> 

内容描述符类实现IContentDescriberITextContentDescriber。 Eclipse调用describe方法来查明文件是否对内容类型有效(并获取有关文件其他属性的信息)。