2009-02-12 4 views

Répondre

8

Est-ce votre point de vue utilise un org.eclipse.ui.IPartListener2?

C'est ce qui utilise ce EditorListener, dont le travail consiste à faire réagir, pour une vue donnée, à des événements de l'éditeur (y compris ouvrir et fermer)

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

Maintenant, si votre ViewPart implémente directement un IPartListener2 , il peut s'inscrire aux différents Editors, comme celui-ci 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

avez-vous un exemple comment je peux ajouter ce EditorListener à l'éditeur de code Java par défaut dans Eclipse? – RoflcoptrException

3

Je pense que vous êtes sur la bonne voie. Vous devez écouter les IWorkbenchPage IPartService événements:

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

    ... 
}); 
+0

ne semble rien faire pour moi – Tirno

+0

ah ... Je ne lisais pas votre commentaire correctement. Je l'avais ajouté à la page, pas à partService de la page. – Tirno

+0

Vous n'avez probablement pas mal lu - je pensais que vous pouviez simplement écouter la page directement. Apparemment non. –

Questions connexes