KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > ui > annotation > EditorTracker


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: EditorTracker.java 12 2006-08-28 20:07:13Z mho $
7  ******************************************************************************/

8 package com.mountainminds.eclemma.internal.ui.annotation;
9
10 import org.eclipse.ui.IEditorReference;
11 import org.eclipse.ui.IPartListener2;
12 import org.eclipse.ui.IWindowListener;
13 import org.eclipse.ui.IWorkbench;
14 import org.eclipse.ui.IWorkbenchPage;
15 import org.eclipse.ui.IWorkbenchPart;
16 import org.eclipse.ui.IWorkbenchPartReference;
17 import org.eclipse.ui.IWorkbenchWindow;
18 import org.eclipse.ui.texteditor.ITextEditor;
19
20 /**
21  * Tracks the workbench editors and to attach coverage annotation models.
22  *
23  * @author Marc R. Hoffmann
24  * @version $Revision: 12 $
25  */

26 public class EditorTracker {
27
28   private final IWorkbench workbench;
29   
30   private IWindowListener windowListener = new IWindowListener() {
31     public void windowOpened(IWorkbenchWindow window) {
32       window.getPartService().addPartListener(partListener);
33     }
34     public void windowClosed(IWorkbenchWindow window) {
35       window.getPartService().removePartListener(partListener);
36     }
37     public void windowActivated(IWorkbenchWindow window) { }
38     public void windowDeactivated(IWorkbenchWindow window) { }
39   };
40   
41   private IPartListener2 partListener = new IPartListener2() {
42     public void partOpened(IWorkbenchPartReference partref) {
43       annotateEditor(partref);
44     }
45     public void partActivated(IWorkbenchPartReference partref) { }
46     public void partBroughtToTop(IWorkbenchPartReference partref) { }
47     public void partVisible(IWorkbenchPartReference partref) { }
48     public void partInputChanged(IWorkbenchPartReference partref) { }
49     public void partClosed(IWorkbenchPartReference partref) { }
50     public void partDeactivated(IWorkbenchPartReference partref) { }
51     public void partHidden(IWorkbenchPartReference partref) { }
52   };
53   
54   public EditorTracker(IWorkbench workbench) {
55     this.workbench = workbench;
56     IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
57     for (int i = 0; i < windows.length; i++) {
58       windows[i].getPartService().addPartListener(partListener);
59     }
60     workbench.addWindowListener(windowListener);
61     annotateAllEditors();
62   }
63   
64   public void dispose() {
65     workbench.removeWindowListener(windowListener);
66     IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
67     for (int i = 0; i < windows.length; i++) {
68       windows[i].getPartService().removePartListener(partListener);
69     }
70   }
71   
72   private void annotateAllEditors() {
73     IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
74     for (int i = 0; i < windows.length; i++) {
75       IWorkbenchPage[] pages = windows[i].getPages();
76       for (int j = 0; j < pages.length; j++) {
77         IEditorReference[] editors = pages[j].getEditorReferences();
78         for (int k = 0; k < editors.length; k++) {
79           annotateEditor(editors[k]);
80         }
81       }
82     }
83   }
84   
85   private void annotateEditor(IWorkbenchPartReference partref) {
86     IWorkbenchPart part = partref.getPart(false);
87     if (part instanceof ITextEditor) {
88       CoverageAnnotationModel.attach((ITextEditor) part);
89     }
90   }
91
92 }
93
Popular Tags