如何处理 RCP 中的视图部件关闭选项卡



目前我正在与view part一起研究RCP application。在应用程序中,用户可以打开同一view part的多个实例。能够用menu selection处理视图部分关闭操作。但我不知道如何处理"X",即选项卡关闭操作。

我尝试将IPartListener对象添加到视图部分对象,(我参考了此链接),但是在其partClosed()方法中,我面临2个问题,

  1. 我无法获得view part object的当前实例。
  2. 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;
}

最新更新