2009-02-12 6 views

Respuesta

8

¿Su vista utiliza un org.eclipse.ui.IPartListener2?

Eso es lo que se utiliza este EditorListener, cuyo trabajo consiste en reaccionar, para una vista determinada, a los eventos Editor (incluyendo abrir y cerrar)

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)); 
    } 

Ahora si su ViewPart implementa directamente un IPartListener2 , puede registrarse a sí mismo a los distintos Editors, como este 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

¿tiene un ejemplo de cómo puedo agregar este EditorListener al editor de código Java predeterminado en Eclipse? – RoflcoptrException

3

Creo que estás en el camino correcto. Es necesario escuchar a los eventos IWorkbenchPage IPartService:

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

    ... 
}); 
+0

no parece hacer nada para mí – Tirno

+0

ah ... No estaba leyendo tu comentario correctamente. Lo había agregado a la página, no a la parte de la páginaServicio. – Tirno

+0

Probablemente no lo haya leído mal, pensé que podría simplemente escuchar la página directamente. Aparentemente no. –

Cuestiones relacionadas