Eclipse插件 - 与文件扩展名和透视图相关联的编辑器

时间:2011-07-28 09:51:26

标签: eclipse editor perspective eclipse-plugin

我正在开发两个eclipse插件,我有下一个问题:

我有两个管理相同文件的视角。我想在文件扩展名 - 编辑器 - 透视图之间建立关联。

我的意思是如果我在透视图1中打开文件扩展名.XXX它使用编辑器A,但是如果我在透视图2中打开相同的文件扩展名.XXX,它将使用编辑器B.

有可能吗?从现在开始,我使用了发射器,但现在我需要更多的区分。

感谢。

4 个答案:

答案 0 :(得分:4)

(对不起,这是其中一个“不要那样做!”非答案。:))

正如评论中所提到的,我建议不要根据当前的观点打开不同的编辑器。我认为这违背了用户的期望,并且有一些不直观的后果,例如:当我创建自己的观点时。

例如,我建议使用Eclipse的XML / Plug-in清单编辑器的路径。底部的选项卡允许用户在不同视图之间进行选择,与任何透视选择或配置无关。

Eclipse plugin-in manifest editor

答案 1 :(得分:2)

虽然我同意基于开放视角对同一文件的默认编辑器有所不同似乎有点奇怪,但这是你可以做到的。

  1. 创建两个新的内容类型扩展
  2. 将第一个编辑器注册为第一个新内容类型的默认编辑器
  3. 将第二个编辑器注册为第二个新内容类型的默认编辑器
  4. 对于每种内容类型,您都有一个“内容类型描述符”。在这些描述类中,让它检查当前透视ID的活动工作台页面,如果它与期望值匹配,则VALID,如果透视ID不匹配,则返回INVALID。
  5. 对于这两个编辑器,您需要将这些编辑器与内容类型而不是文件扩展名或文件名相关联
  6. 现在,根据打开的视角,一次只能匹配一种内容类型。确保其中一个内容类型为“默认”,以便在用户打开其他视角时始终匹配。
  7. 更新#1添加了一些示例

    这有一些online tutorials。但是这里有一些示例代码,可以更容易地查看所需的工作。以下是您声明内容类型的方式(您需要其中两种)

    <plugin>
       <extension
             point="org.eclipse.core.contenttype.contentTypes">
          <content-type
                base-type="org.eclipse.core.runtime.xml"
                describer="com.liferay.ide.core.FirstContentTypeDescriber"
                id="com.liferay.ide.core.contentType1"
                name="First Content Type"
                priority="normal">
          </content-type>
       </extension>
    </plugin>
    

    然后在Describer类中,您将执行匹配逻辑。然后在编辑器扩展点中引用内容类型而不是文件名或扩展名,如下所示:

       <extension
             point="org.eclipse.ui.editors">
          <editor
                class="com.liferay.ide.ui.FirstEditor"
                default="false"
                id="com.liferay.ide.ui.editor1"
                name="My First Editor">
             <contentTypeBinding
                   contentTypeId="com.liferay.ide.core.firstContentType">
             </contentTypeBinding>
          </editor>
       </extension>
    

答案 2 :(得分:1)

我建议重新考虑你的方法,并从WindowBuilder中获取一些提示:让一个编辑器与文件类型相关联,打开一个选项卡式编辑器;如果添加了第二个插件,请在同一个编辑器上创建一个单独的选项卡。

答案 3 :(得分:0)

其他选项可以通过编程方式更改与

中显示的Java代码的文件类型关联

Eclipse RCP: programmatically associate file type with Editor?

然后,只有一个问题是如何在透视变化事件上执行该代码。