Почему событие windowOpened не запускается / не записывается при запуске моего подключаемого модуля Eclipse? - PullRequest
0 голосов
/ 25 января 2011

Я пишу плагин Eclipse, и один из классов реализует IWindowListener. В результате у меня есть несколько методов, которые должны быть в моем классе, включая windowOpened (окно IWorkbenchWindow). Насколько я понимаю, метод windowOpened заключается в том, что его следует вызывать при запуске приложения Eclipse и запуске подключаемого модуля, однако я включил в этот метод некоторые операторы журнала, и он никогда не вызывается.

Кто-нибудь знает, почему это происходит? Кто-нибудь сталкивался с подобной проблемой?

Следует отметить, что другие методы IWindowListener работают нормально. Например, метод windowClosed правильно вызывается при выходе из приложения Eclipse, в котором запущен подключаемый модуль.

Ответы [ 2 ]

1 голос
/ 26 января 2011

Вы можете получить доступ к запуску Eclipse, используя точку расширения с именем "org.eclipse.ui.startup", для этого вам нужно реализовать интерфейс IStartup, и вы можете выполнять там любые процессы запуска. Это действительно делается до того, как пользовательский интерфейс будет загружен. PlatformUI.getWorkbench().getActiveWorkbenchWindow() вернет ноль! Вы можете получить это, выполнив Display.asyncExec(Runnable), что будет ждать, пока все не запустится

Обратите внимание, что это не будет загружать ваш плагин Eclipse, что класс IStartup просто запускается при запуске. Ваш собственный плагин действительно должен быть загружен, когда это необходимо с первого раза, а не до этого. Потому что нет необходимости запускать его до тех пор, пока он действительно не потребуется.

Также подходящим местом для запуска некоторых плагинов является функция start () Activator. Это вызывается, когда ваш плагин действительно загружен в первый раз.

1 голос
/ 25 января 2011

Возможно, потому что к тому времени, когда ваш IWindowListener зарегистрирован, окно уже открыто. Помните, что плагины Eclipse запускаются лениво; если вы не предприняли шаги, чтобы ваш плагин запускался раньше, он не запустится, пока не загрузится один из его классов.

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