Eclipse工作台的标准行为是在调用之间保留打开文件集,并尝试在重新启动时重新打开这些文件。如果缺少任何文件,则会出现占位符编辑器,显示有关丢失文件的错误消息。我们想改变Eclipse RCP应用程序的行为,而不是默默地跳过任何丢失的文件。
我们已经在编写自己的IApplication
,WorkbenchAdvisor
等;这些类可以在平台中注入各种行为,但我还没有找到通过这些类完成这些操作的方法。我们怎样才能实现所期望的行为?
答案 0 :(得分:2)
我处理这个的方式实际上是在创建的编辑器中:覆盖setInput
以通过调用editorInput.exists()
检查传入的IEditorInput是否有效(在FileEditorInput的情况下,检查文件是否存在)或者您是否使用自定义编辑器输入,以及您需要的任何其他验证。
如果editorInput验证失败,则异步关闭编辑器(当编辑器在完成打开之前关闭时,Eclipse不喜欢它):
public void close () {
Display.getDefault().asyncExec(new Runnable () {
public void run () {
getSite().getPage().closeEditor(YourEditorClass.this, false);
}
});
}
处理此问题的另一种方法是在启动时禁用重新打开编辑器 - 请参阅In Eclipse, how to close the open files(editors) when exiting without auto-load in next startup