TL; DR:在关闭EMF比较定义的CompareEditor
之前,我不知道如何向用户显示确认对话框。
更多详情:
我有一个相对简单的用例:我要求用户确认他们希望在按下工作台窗口上的关闭(x)按钮后关闭编辑器。
我已经从Eclipse forum确定将IPartListener
附加到窗口不会有帮助,因为只有在窗口关闭后才会调用partClosed()
方法。
建议的解决方案是在用户关闭的部分中实现ISaveablePart2
接口。但是,我不能这样做,因为该部分来自插件。特别是,它是由EMF Compare定义的CompareEditor
。所以我不能添加任何额外的接口。或者,如果我以某种方式可以,我不知道如何(扩展类看起来不像一个选项,因为它是由另一个EMF比较类实例化而不是直接由我的代码实例化)。
我看到的另一个suggestion是使用IPerspectiveListener2
而不是IPartListener
,因为在该部分实际关闭之前会通知此侦听器。但是,我仍然不知道如何从这个监听器中止关闭该部分。这甚至可能吗?
答案 0 :(得分:0)
您可以使用自定义ISaveHandler
来处理保存。这是一个仅限Eclipse 4的界面,您在主IEclipseContext
的{{1}}中注册:
MWindow
在3.x兼容模式RCP中,您可以通过许多接口提供的MWindow window = ... get main window
IEclipseContext windowContext = window.getContext();
windowContext.set(ISaveHandler.class, ... your save handler);
接口获取MWindow
。例如,在视图或编辑器中:
IServiceLocator
MWindow window = (MWindow)getSite().getService(MWindow.class);
也实现了IWorkbenchWindow
。
自定义保存处理程序处理告知编辑器部分保存并提示用户执行保存操作。
默认实现是IServiceLocator
,您可以将其用作所需内容的示例。