的关闭操作特指标题栏最右方的关闭按钮操作。一般来说编辑器的关闭事件都是自己默认的实现,比如继承了ISavePart2 的编辑器在Dirty 属性为true 时点击这个按钮会出现确定信息框,这个是由ISavePart2 .promptToSaveOnClose()实现的,一般情况下重写这个函数即可。这种情况下编辑器标题上会出现一个“*”号代表当前编辑器有未保存的修改。
多讲一下编辑器默认的保存机制,在工具栏和菜单中有个菜单“Save”,这个菜单可以自动根据当前编辑器是否需要保存来切换状态。若不需要保存,则不可用,反之则可以使用。这个菜单的状态与编辑器的Ditry 属性密切相关联。同时ISaveablePart 和 ISaveablePart2 中的一些Save 方法都与它相关。
假如用户点击关闭按钮时需要始终出现退出提示,这种情况下promptToSaveOnClose()就不能用了,因为它也与Dirty属性相关。
这里提供一个可选方案,还是与PresentationFactory 有关。
关闭按钮位于TabFolder上,可以考虑给它添加一个监听器——TabFolderListener,它负责对TabFolderEvent.EVENT_CLOSE时间进行监听。
private static void hookTabFolder(final IStackPresentationSite site,
TabbedStackPresentation result) {
AbstractTabFolder tabFolder = result.getTabFolder();
Object