2014-12-02 2 views
0

Я создал функцию внутри моего проекта плагина (плагин, который содержит представление), который создает селекционные прослушиватели для активной страницы (например: explorer пакета, навигатор ресурсов).Как установить активную страницу при первом выполнении представления?

При первом выполнении экземпляра Eclipse, иногда у меня нет активной страницы и нижеследующее является недействительным:

ISelectionService selectionService=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 

Так что выбор слушатель не может быть выставиться на другую точку зрения:

selectionService.addSelectionListener(partID,listener); 

Моя проблема в том, что функция не выполняет указанную выше строку, так как selectionService имеет значение NULL.

Что мне делать, чтобы избежать этой ситуации?

ответ

1

Один из способов добавить IWindowListener к IWorkbench, а затем добавить слушателя выбора в windowOpened событие:

IWorkbench workbench = PlatformUI.getWorkbench(); 

workbench.addWindowListener(window listener); 

... 

@Override 
public void windowOpened(IWorkbenchWindow window) 
{ 
    window.getSelectionService().addSelectionListener(selection listener); 
} 
+0

я получаю исключение виджет, расположенный .... как удалить все слушатели, когда я закрыть представление? (без удаления их по id) –

+0

Вы можете использовать 'IPartService.addPartListener' из' IWokbenchWindow.getPartService' для прослушивания закрытия деталей (среди других событий). –

+0

Я закрываю представление, и когда я его снова открываю, он не обновляется, потому что кнопки и таблицы и другие объекты на нем расположены .... это проблема с прослушивателем? –

Смежные вопросы