看到寒江独钓客闲聊中说到:[color=red]最近头痛一个问题:一种编辑器如何只打开一个? 即:可以从多处打开同一编辑器,而不会产生多个实例 [/color] 我也遇到过,后来解决了。所以想还是共享出来吧,希望能给插件开发的同行帮点下忙!
在org.eclipse.ui.editors扩展点中有个matchingStrategy的元素,可以实现IEditorMatchingStrategy接口,覆写
public boolean matches(IEditorReference editorRef, IEditorInput input)方法,就可以做到判断编辑器输入是否匹配打开的编辑器。
说的简单点:每次我们打开一个文件,转化为input会去回调matches方法,判断是否文件已经打开,从而达到不会打开多次目的,即单例。一般应用于一个编辑器编辑多个文件。