Закрытие всех ранее открытых редакторов во время запуска Eclipse - PullRequest
1 голос
/ 02 августа 2011

Я разработал плагин Eclipse. Eclipse имеет функцию, которая заключается в том, что если рабочая среда закрыта с некоторыми открытыми редакторами, то при следующем запуске Eclipse все редакторы, открытые в предыдущем сеансе, остаются в открытом состоянии.

Мое требование - закрыть все открытые редакторы на основе предыдущего сеанса во время запуска Eclipse. В одном из разработанных классов плагинов я добавил следующий фрагмент кода

PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
for (IWorkbenchWindow iWorkbenchWindow : windows) {
  if (iWorkbenchWindow.getActivePage() != null) {
    break;
  }
  iWorkbenchWindow.close();
}

Этот код закрывает редакторы во время запуска. но также выдает исключение:

"Unable to read workbench state. Workbench UI layout will be reset.
java.lang.NullPointerException". 

Прошу сообщить мне, где я не прав.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

См. http://www.eclipse.org/forums/index.php/m/703373/

цитирую

On 27.07.2011 12:43, newbie wrote:
> Hi,
> I have created an eclipse plugin.. From the eclipse workbench, i want 
> to close all the open editors on some change event in a combo box 
> located on the tools panel.. I want to perform an exactly similar 
> action which is achieved by right click an editor and selec "Close 
> All" action. Can you please help me with the java code or eclipse 
> api's to achieve that?

org.eclipse.ui.IWorkbenchPage.closeAllEditors(boolean)

Dani
>
> Thanks
0 голосов
/ 02 августа 2011

Я не проверял это, но я думаю, что вы выполняете свой код слишком рано в последовательности запуска Eclipse ...

Если вы работали с приложением RCP, попробуйте добавить код в ApplicationWorkbenchAdvisor.postStartup() ... но вы не ...

Для IDE это выглядит немного сложнее, так как не существует ловушки (AFAICS), которая позволяет выполнять ваш код после полной загрузки IDE.

В качестве альтернативы добавьте слушателя ко всем IWorkbenchWindows, которые отслеживают partOpened события, и закройте редакторы здесь ...

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