2009-06-23 3 views

Répondre

7

De this thread

Demandez à votre classe implémente org.eclipse.ui.IPartListener2.
Ensuite, vous êtes averti quand une partie de l'établi (un IEditorPart, etc.) vient d'être ouverte/fermée. Vous pouvez filtrer les parties sur lesquelles vous voulez faire attention.

(Note: Depuis 3.5, le IPartListener2 peut également mettre en œuvre IPageChangedListener pour être informé au sujet des pièces qui mettent en œuvre IPageChangeProvider et post PageChangedEvents.)

La partie délicate (sans jeu de mots) est d'enregistrer l'auditeur à workbench. Donc, la première chose à faire est d'obtenir un IWorkbenchPage valide pour que vous puissiez appeler le IWorkbenchPage.addPartListener(<your class that implements IPartListener>).

Voici comment obtenir une page de plan de travail.

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

Voir également here.


Voir this class comme exemple

IPartListener2 partlistener = new IPartListener2(){ 
     public void partActivated(IWorkbenchPartReference partRef) { 
      if (partRef.getPart(false) == MapEditor.this){ 
       registerFeatureFlasher(); 
       ApplicationGIS.getToolManager().setCurrentEditor(editor); 
      } 
     } 
[...] 

Ou ce PartListener générique pour un usage générique d'un PartListener2.

ou ce EditorTracker