Отменить закрытое событие - PullRequest
1 голос
/ 11 августа 2010

У меня есть редактор в 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 Ответ

2 голосов
/ 11 августа 2010

Этот поток указывает на событие закрытия само по себе не существует.

Eclipse предоставляет в основном события после активации, т. Е. IPartListener2, partClosed(*) - это событие после закрытия.

Вы можете создать свой собственный диалог при закрытии, но этобудет отображаться только в том случае, если редактор загрязнен во время его закрытия.См. ISaveablePart2.promptToSaveOnClose()

(как представлено в Предотвращение закрытия редактора RCP )

Однако обратите вниманиечто реализация ISaveablePart2 может привести к открытию многих диалогов при закрытии нескольких редакторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...