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

时间:2012-11-26 06:36:46

标签: eclipse eclipse-plugin eclipse-rcp rcp

目前,我正在RCP applicationview part合作。 在应用程序中,用户可以打开相同view part的多个实例。 我能够使用menu selection处理查看部件关闭操作。 但我不知道处理'X'即关闭操作。

我尝试将IPartListener对象添加到视图部件对象(I refereed this link ),但在其partClosed()方法中我遇到了2个问题,

  1. 我无法获取view part object
  2. 的当前实例
  3. 仅在关闭标签后调用partClosed()方法,因此我无法显示关闭标签的确认。
  4. 我应该采用什么方法来解决上述两个问题。

    感谢任何帮助。

    致以最诚挚的问候,

    Mandar

2 个答案:

答案 0 :(得分:1)

如果您只想在关闭编辑器时显示确认信息,为什么不实施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;
}

答案 1 :(得分:1)

您可以考虑将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