我正在开发一个eclipse插件并面临一个问题:
假设您打开了几个编辑器,并右键单击“项目资源管理器”中的项目,然后将其删除。通知所有相关的开放编辑器的干净方式是什么,以便它们应该被关闭并从视图中删除?实际上,当删除项目时,所有编辑都保持打开状态,因此状态不一致。
任何想法都将受到赞赏:)
答案 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的默认行为是在项目结束时关闭编辑器。