如果文件打开两次,关闭Eclipse编辑器

时间:2015-03-13 11:39:43

标签: eclipse plugins duplicates editor

我在这里为Eclipse创建自己的编辑器并发现了一个问题。 如果我打开一个文件并且它已经打开,Eclipse会打开一个新的编辑器。

所以,我需要避免这种情况,或者在编辑器打开后立即关闭它。

我的编辑器类是MultiPageEditorPart的子代,它有2个选项卡:第一个是Java编辑器,第二个是文本编辑器。 Java编辑器打开一个.java文件,文本编辑器打开我自己的文件。 我看到一些帖子说如何解决这个问题,但是我没有在这里的任何地方实现IEditorInput接口。

任何人都可以帮我吗? 非常感谢

这是我的编辑定义:

    <extension point="org.eclipse.ui.editors">
    <editor id="br.com.senior.wb.asas.editor.AsasEditor"
        class="br.com.senior.wb.asas.editor.AsasEditor"
        contributorClass="br.com.senior.wb.asas.editor.AsasEditorContributor"
        extensions="java, afm"
        icon="icons/editor_asas.png" name="Editor ASAS">
    </editor>
</extension>

1 个答案:

答案 0 :(得分:0)

如果您想要在另一个文件已经打开时打开java或afm文件时打开一个编辑器,那么您需要使用编辑器定义的matchingStrategy属性来定义编辑器匹配策略。

类似的东西:

 <extension point="org.eclipse.ui.editors">
    <editor id="br.com.senior.wb.asas.editor.AsasEditor"
        class="br.com.senior.wb.asas.editor.AsasEditor"
        contributorClass="br.com.senior.wb.asas.editor.AsasEditorContributor"
        matchingStrategy="br.com.senior.wb.asas.editor.AsasEditorMatchingStrategy"
        extensions="java, afm"
        icon="icons/editor_asas.png" name="Editor ASAS">
    </editor>
</extension>
public class AsasEditorMatchingStrategy implements IEditorMatchingStrategy
{ 
  public boolean matches(IEditorReference editorRef, IEditorInput input)
  {
    if (!(input instanceof IFileEditorInput))
      return false;

    IFile inputFile = (IFile)input.getAdapter(IFile.class);
    if (inputFile == null)
      return false;

    IFile currInputFile = (IFile)editorRef.getEditorInput().getAdapter(IFile.class);
    if (currInputFile == null)
      return false;

    if (!inputFile.getProject().equals(currInputFile.getProject()))
      return false;

    // TODO add more checks that 'inputFile' and 'currInputFile' are a matching pair of files
  }