目前我正在与view part
一起研究RCP application
。在应用程序中,用户可以打开同一view part
的多个实例。能够用menu selection
处理视图部分关闭操作。但我不知道如何处理"X",即选项卡关闭操作。
我尝试将IPartListener
对象添加到视图部分对象,(我参考了此链接),但是在其partClosed()
方法中,我面临2个问题,
- 我无法获得
view part object
的当前实例。 partClosed()
方法仅在关闭选项卡后被调用,因此我无法显示关闭选项卡的确认。
我应该用什么方法来解决上述两个问题。
任何帮助,不胜感激。
此致敬意
曼达尔
您可以考虑实现ISaveablePart2
ViewPart
的接口。此接口负责提示用户是否应关闭部件。此外,它还决定如何处理未保存的数据。
如果应该在方法 promptToSaveOnClose()
中使用自定义对话框关闭视图,您可以让用户知道
@Override
public boolean isDirty() {
return true;
}
@Override
public int promptToSaveOnClose() {
boolean close = MessageDialog.openConfirm(
Display.getCurrent().getActiveShell(), "Close?", "Really?");
if(close)
return YES;
return CANCEL;
}
Eclispe API: ISaveablePart2
如果您只想在关闭编辑器时显示确认,为什么不实现 ISaveablePart2
及其方法promptToSaveOnClose();
例:
@Override
public int promptToSaveOnClose() {
boolean canClose = // Show dialog here and return a boolean based on the users input
if (canClose) {
return ISaveablePart2.NO;
} else {
return ISaveablePart2.CANCEL;
}
return 0;
}