2009-02-12 5 views
5

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

Я ожидал, что WorkbenchPage или EditorManager будет иметь соответствующий реестр слушателей, но я не смог его найти.

ответ

8

ли использует org.eclipse.ui.IPartListener2 Ваше мнение?

Это то, что с помощью этого EditorListener, чья работа состоит в том, чтобы реагировать, для данной точки зрения, для редактора событий (в том числе открытия и закрытия)

public class EditorListener implements ISelectionListener, IFileBufferListener, 
IPartListener2 { 
    protected BytecodeOutlineView view; 

    EditorListener(BytecodeOutlineView view){ 
     this.view = view; 
    } 

[...] 

    /** 
    * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference) 
    */ 
    public void partOpened(IWorkbenchPartReference partRef) { 
     view.handlePartVisible(partRef.getPart(false)); 
    } 

Теперь, если ваш ViewPart непосредственно реализует IPartListener2 , он может зарегистрировать себя в различных Editors, как этот BytecodeReferenceView

public class BytecodeReferenceView extends ViewPart implements IPartListener2, ISelectionListener { 

    [...] 

    public void createPartControl(Composite parent) { 
     browser = new Browser(parent, SWT.BORDER); 
     browser.setText(BytecodeOutlinePlugin.getResourceString(NLS_PREFIX 
      + "empty.selection.text")); 
     final IWorkbenchWindow workbenchWindow = getSite().getWorkbenchWindow(); 
     workbenchWindow.getPartService().addPartListener(this); 
    [...] 
+1

У вас есть пример того, как я могу добавить этот редактор Editor в редактор Java-кода по умолчанию в Eclipse? – RoflcoptrException

3

Я думаю, что вы на правильном пути. Вы должны слушать события IWorkbenchPage IPartService:

page.addPartListener(new IPartListener() { 
    partOpened(IWorkbenchPart part) { 
     ... 
    } 

    ... 
}); 
+0

, кажется, не делать ничего для меня – Tirno

+0

ах ... Я не читал ваш комментарий должным образом. Я добавил его на страницу, а не в partService. – Tirno

+0

Вы, вероятно, не ошибались - я думал, вы можете просто прослушать страницу напрямую. Очевидно нет. –