-
Notifications
You must be signed in to change notification settings - Fork 1
/
JavaCodeLensController.java
88 lines (73 loc) · 2.47 KB
/
JavaCodeLensController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package org.eclipse.codelens.jdt.internal;
import java.lang.reflect.Method;
import org.eclipse.codelens.editors.AbstractCodeLensController;
import org.eclipse.codelens.editors.EditorCodeLensContext;
import org.eclipse.codelens.editors.ICodeLensController;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor;
import org.eclipse.jdt.internal.ui.text.java.IJavaReconcilingListener;
import org.eclipse.jface.text.provisional.codelens.CodeLensStrategy;
import org.eclipse.ui.texteditor.ITextEditor;
public class JavaCodeLensController extends AbstractCodeLensController implements IJavaReconcilingListener {
private IProgressMonitor monitor;
private boolean listenerAdded;
public JavaCodeLensController(CompilationUnitEditor textEditor) {
super((ITextEditor )textEditor);
super.addTarget("java.codelens");
}
@Override
public void setProgressMonitor(IProgressMonitor monitor) {
this.monitor = monitor;
getStrategy().setProgressMonitor(monitor);
}
@Override
public void uninstall() {
if (monitor != null) {
monitor.setCanceled(true);
}
removeReconcileListener((CompilationUnitEditor) getTextEditor());
getStrategy().dispose();
}
@Override
public void refresh() {
getStrategy().initialReconcile();
if (!listenerAdded) {
addReconcileListener((CompilationUnitEditor) getTextEditor());
listenerAdded = true;
}
}
@Override
public void aboutToBeReconciled() {
}
@Override
public void reconciled(CompilationUnit ast, boolean forced, IProgressMonitor progressMonitor) {
refresh();
}
private void addReconcileListener(CompilationUnitEditor textEditor) {
try {
Method m = CompilationUnitEditor.class.getDeclaredMethod("addReconcileListener",
IJavaReconcilingListener.class);
m.setAccessible(true);
m.invoke(textEditor, this);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void removeReconcileListener(CompilationUnitEditor textEditor) {
try {
Method m = CompilationUnitEditor.class.getDeclaredMethod("removeReconcileListener",
IJavaReconcilingListener.class);
m.setAccessible(true);
m.invoke(textEditor, this);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void install() {
// TODO Auto-generated method stub
}
}