我编写了一个包含多种编辑器类型的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>
当我双击具有此内容类型的文件时,我想以编程方式决定打开哪个编辑器,具体取决于文件的内容或存储位置。 我试图找到一种方法,我可以实现,但没有成功。
答案 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>
内容描述符类实现IContentDescriber
或ITextContentDescriber
。 Eclipse调用describe
方法来查明文件是否对内容类型有效(并获取有关文件其他属性的信息)。