Eclipse:将编辑器与natureId相关联

时间:2014-07-07 17:04:50

标签: java eclipse eclipse-plugin editor

是否可以将编辑器与项目natureId相关联?我有一个项目,其中包含具有不同文件扩展名的文件,但它们可以使用相同的编辑器进行编辑。

我尝试将内容类型与natureId和编辑器匹配,只需将Extension类型留空即可。不幸的是它不起作用或者我没有正确执行:(

如果可能的话,覆盖项目的默认编辑器也会有效!?

到目前为止我已尝试过:

  <extension
    point="org.eclipse.core.contenttype.contentTypes">
 <content-type
       describer="test.FOPContentDescriber"
       id="test.content.type"
       name="FO Files"
       priority="high">
 </content-type>
</extension>
<extension
     point="org.eclipse.ui.editors">
  <editor
        class="test.editors.FOEditor"
        contributorClass="test.editors.FOEditorContributor"
        default="false"
        icon="icons/fo_editor_16.png"
        id="test.editors.FOEditor"
        name="%editor.name">
     <contentTypeBinding
           contentTypeId="test.content.type">
     </contentTypeBinding>
  </editor>

内容描述类:

package test.fop;
import java.io.IOException;
import java.io.InputStream;

import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.content.IContentDescriber;
import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.core.runtime.content.ITextContentDescriber;


public class FOPContentDescriber implements IContentDescriber {

    public FOPContentDescriber() {
        System.out.println("init content describer");
    }

    @Override
    public int describe(InputStream contents, IContentDescription description) throws IOException {
        System.out.println("Call describer");
        return ITextContentDescriber.VALID;
    }

    @Override
    public QualifiedName[] getSupportedOptions() {
        return IContentDescription.ALL;
    }

}

1 个答案:

答案 0 :(得分:0)

您可以使用org.eclipse.core.contenttype.contentTypes扩展点定义文件内容类型。

您可以使用内容类型定义的describer元素来指定实现IContentDescriber的类。将调用此类以检查文件是否对内容类型有效。描述者还可以从文件中提取信息并将其存储在内容描述中。

注意:内容描述符仅在输入流上给出,无法找到文件路径。

使用org.eclipse.ui.editors扩展点定义编辑器时,可以使用contentTypeBinding元素将编辑器绑定到内容类型。