3

如何以编程方式将文件类型与编辑器关联?

这就是 Eclipse-RCP Java 代码可以做的事情,通过以下 UI 交互归档:

Window -> Preferences
General -> Editors -> File Associations
Add... > File type: *.json
Select *.json file type 
Add... (Associated editors) > JavaScript Editor
Make it default

与 Q有关
https://stackoverflow.com/questions/12429221/eclipse-file-associations-determine-which-editor-in-list-of-associated-editors
Eclipse:将编辑器与内容类型
关联 获取关联的文件扩展名一个 Eclipse 编辑器
打开一个默认编辑器,在 treeviewer 选择 eclipse rcp 上(例如:因为 eclipse 知道 j.java 文件必须在文本编辑器中打开)

xml配置文件的eclipse rcp更改图标

4

2 回答 2

4

我知道您的问题是“以编程方式”说的,但我会完整介绍这些方法。

如果您正在编写提供编辑器的插件,那么您应该简单地在您的 plugin.xml 中声明扩展。

   <扩展名
         point="org.eclipse.ui.editors">
      <编辑器
            ...
            扩展="json"
            ...

如果您正在分发一个完整的 RPC 应用程序,您可以编辑提供编辑器的插件的 plugin.xml 或添加一个仅引用该编辑器的插件。

但是,如果您必须以编程方式执行此操作,那么您就是在操纵 RPC 实例的内部。Eclipse 没有为此提供公共 API,但这段代码可以做到:

            // error handling is omitted for brevity
    String extension = "json";
    String editorId = "theplugin.editors.TheEditor";

    EditorRegistry editorReg = (EditorRegistry)PlatformUI.getWorkbench().getEditorRegistry();
    EditorDescriptor editor = (EditorDescriptor) editorReg.findEditor(editorId);
    FileEditorMapping mapping = new FileEditorMapping(extension);
    mapping.addEditor(editor);
    mapping.setDefaultEditor(editor);

    IFileEditorMapping[] mappings = editorReg.getFileEditorMappings();
    FileEditorMapping[] newMappings = new FileEditorMapping[mappings.length+1];
    for (int i = 0; i < mappings.length; i++) {
        newMappings[i] = (FileEditorMapping) mappings[i];
    }
    newMappings[mappings.length] = mapping;
    editorReg.setFileEditorMappings(newMappings);
于 2013-04-09T13:33:12.893 回答
1

关联文件类型意味着将您的编辑器的内容与预定义的内容关联。这可以通过 plugin.xml 轻松实现。只需点击以下链接:-

Eclipse 帮助文档

http://help.eclipse.org/indigo/index.jsp

并搜索 org.eclipse.core.contenttype.contentTypes。

于 2013-05-08T05:39:27.660 回答