繁体   English   中英

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

[英]Eclipse plugin - Editor associated to file extension and perspective

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

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

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

可能吗? 从现在开始,我使用了启动器,但是现在我需要更多的区别。

谢谢。

(对不起,这是“不要这样做!”的非回答之一。:))

如评论中所述,我建议不要根据当前角度打开其他编辑器。 我认为这违背了用户的期望,并且会带来一些不直观的后果,例如,当我创建自己的观点时。

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

Eclipse插件清单编辑器

虽然我同意,基于打开的角度对同一文件使用默认编辑器有所不同,这似乎有些奇怪,但是您可以按照以下方法进行操作。

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

更新#1添加了一些示例

有一些在线 教程 但是这里有一些示例代码,使您可以更轻松地了解所需的工作。 这是您声明内容类型的方式(您将需要两个)

<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>

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

其他选项可能是通过编程方式更改文件类型与Java代码的关联,如

Eclipse RCP:以编程方式将文件类型与编辑器关联?

然后只有一个问题,如何在透视图更改事件上执行该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM