От этой темы
Пусть ваш класс реализует org.eclipse.ui.IPartListener2
.
Затем вы получите уведомление, когда деталь рабочего места (IEditorPart
и т. Д.) Только что открылась / закрылась. Вы можете отфильтровать, на какие части вы хотите обратить внимание.
(примечание: Начиная с 3.5, IPartListener2 также может реализовывать IPageChangedListener
для уведомления о любых деталях, которые реализуют IPageChangeProvider
и после PageChangedEvents
.)
Сложная задача (без каламбура) - зарегистрировать слушателя на рабочем месте.
Итак, первое, что нужно сделать, это получить действительный IWorkbenchPage
, чтобы вы могли позвонить IWorkbenchPage.addPartListener(<your class that implements IPartListener>)
.
Вот как получить страницу рабочего места.
IWorkbenchPage page = null;
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null)
{
page = window.getActivePage();
}
if (page == null)
{
// Look for a window and get the page off it!
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
for (int i = 0; i < windows.length; i++)
{
if (windows[i] != null)
{
window = windows[i];
page = windows[i].getActivePage();
if (page != null)
break;
}
}
}
См. Также здесь .
См. этот класс в качестве примера
IPartListener2 partlistener = new IPartListener2(){
public void partActivated( IWorkbenchPartReference partRef ) {
if (partRef.getPart(false) == MapEditor.this){
registerFeatureFlasher();
ApplicationGIS.getToolManager().setCurrentEditor(editor);
}
}
[...]
Или этот универсальный PartListener для общего использования PartListener2.
Или это EditorTracker