删除资源后关闭Eclipse编辑器

时间:2013-07-02 14:13:11

标签: java eclipse rcp

我正在开发一个eclipse插件并面临一个问题:

假设您打开了几个编辑器,并右键单击“项目资源管理器”中的项目,然后将其删除。通知所有相关的开放编辑器的干净方式是什么,以便它们应该被关闭并从视图中删除?实际上,当删除项目时,所有编辑都保持打开状态,因此状态不一致。

任何想法都将受到赞赏:)

1 个答案:

答案 0 :(得分:1)

这是我的Indigo解决方案,MyEditor监听项目结束事件,如果文件属于正在关闭的项目,则关闭自己。

public class MyEditor extends EditorPart {
    private final Display display = Display.getCurrent();

    private IResourceChangeListener editorCloser = new IResourceChangeListener() {
        public void resourceChanged(IResourceChangeEvent event) {
            final IResource closingProject = event.getResource();
            Display.getDefault().asyncExec(new Runnable(){
                public void run() {
                    for (IWorkbenchPage page : getSite().getWorkbenchWindow().getPages()) {
                        FileEditorInput editorInput = (FileEditorInput) MyEditor.this.getEditorInput();
                        if (editorInput.getFile().getProject().equals(closingProject))
                            page.closeEditor(page.findEditor(editorInput), true);
                    }
                }
            });
        }   
    };

    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
        [...]
        ResourcesPlugin.getWorkspace().addResourceChangeListener(editorCloser,
            IResourceChangeEvent.PRE_CLOSE | IResourceChangeEvent.PRE_DELETE);
    }

    public void dispose() {
        super.dispose();
        ResourcesPlugin.getWorkspace().removeResourceChangeListener(editorCloser);
    }
}

让我感到困惑Eclipse的默认行为是在项目结束时关闭编辑器。