代码之家  ›  专栏  ›  技术社区  ›  Fredrik

取消关闭事件

  •  1
  • Fredrik  · 技术社区  · 14 年前

    我有一个Eclipse的编辑。当用户选择关闭它时,将出现一个包含多个选项的对话框。其中之一是“取消”,应该取消关闭事件。我该怎么做?

    到目前为止,我得到的部分代码是:

        ...
        IEditorPart openEditor = page.openEditor(input, CS_STRINGEDITOR_ID);
        openEditor.getEditorSite().getPage()
            .addPartListener(new IPartListener() {
              public void partOpened(IWorkbenchPart part) {}
              public void partDeactivated(IWorkbenchPart part) {}
    
              public void partClosed(IWorkbenchPart part) {
                Shell sh = new Shell(cv.getViewSite().getShell());
                // My MessageDialog with the options, one being "cancel"
                CloseDialog closeDialog = new CloseDialog(sh);
                closeDialog.open();
                int returnCode = closeDialog.getReturnCode();
                switch (returnCode) {
                case CloseDialog.CANCEL_ID:
                  // Abort the close event and keep the editor alive
                  break;
                }
              }
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   VonC    14 年前

    这个 thread points out 本身没有关闭事件。

    Eclipse主要提供活动后事件,即 IPartListener2 , partClosed(*) 是一个 关闭后事件。

    您可以在关闭时提供自己的对话框,但只有当 编辑器在关闭时是脏的。见 ISaveablePart2.promptToSaveOnClose()

    (如 Prevent that a RCP Editor is closed )

    但是,请注意,执行 ISaveablePart2 可能导致关闭多个编辑器时打开许多对话框。