Eclipse 工作台的标准行为是在调用之间保留打开的文件集,并在重新启动时尝试重新打开这些相同的文件。如果任何文件丢失,则会出现一个占位符编辑器,显示有关丢失文件的错误消息。我们想改变 Eclipse RCP 应用程序的行为,改为静默地跳过任何丢失的文件。
我们已经在编写自己的IApplication
,WorkbenchAdvisor
等;这些类可以将各种行为注入平台,但我还没有找到通过这些类完成这些的方法。我们如何实现期望的行为?
Eclipse 工作台的标准行为是在调用之间保留打开的文件集,并在重新启动时尝试重新打开这些相同的文件。如果任何文件丢失,则会出现一个占位符编辑器,显示有关丢失文件的错误消息。我们想改变 Eclipse RCP 应用程序的行为,改为静默地跳过任何丢失的文件。
我们已经在编写自己的IApplication
,WorkbenchAdvisor
等;这些类可以将各种行为注入平台,但我还没有找到通过这些类完成这些的方法。我们如何实现期望的行为?
我处理这个问题的方式实际上是在正在创建的编辑器中:重写setInput
以通过调用检查传入的 IEditorInput 的有效性editorInput.exists()
(在 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