Eclipse Plugin - Уведомление о том, когда редактор открыт в Eclipse - PullRequest
3 голосов
/ 23 июня 2009

Я хочу получать уведомления при открытии редактора в Eclipse. Каков наилучший способ сделать это?

1 Ответ

7 голосов
/ 23 июня 2009

От этой темы

Пусть ваш класс реализует 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

...