comparison src/de/codedo/java/editor/CodedoJavaEditor.java @ 9:935df68696c0 default tip

Reflection Code in eigene Klasse verschoben.
author Dirk Olmes <dirk.olmes@codedo.de>
date Thu, 15 Oct 2020 12:05:06 +0200
parents 778c251baa66
children
comparison
equal deleted inserted replaced
8:778c251baa66 9:935df68696c0
1 package de.codedo.java.editor; 1 package de.codedo.java.editor;
2 2
3 import java.lang.reflect.Field; 3 import static de.codedo.java.editor.ReflectionUtils.getFieldValue;
4 import static de.codedo.java.editor.ReflectionUtils.setFieldValue;
4 5
5 import org.eclipse.jdt.core.IJavaElement; 6 import org.eclipse.jdt.core.IJavaElement;
6 import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor; 7 import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor;
7 import org.eclipse.jdt.internal.ui.javaeditor.JavaEditorErrorTickUpdater; 8 import org.eclipse.jdt.internal.ui.javaeditor.JavaEditorErrorTickUpdater;
8 import org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider; 9 import org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider;
19 20
20 private void installJavaElementImageProvider() 21 private void installJavaElementImageProvider()
21 { 22 {
22 try 23 try
23 { 24 {
24 JavaUILabelProvider labelProvider = getJavaUILabelProvider(); 25 JavaEditorErrorTickUpdater tickUpdater = getFieldValue("fJavaEditorErrorTickUpdater", this);
25 setupJavaElementImageProvider(labelProvider); 26 JavaUILabelProvider labelProvider = getFieldValue("fLabelProvider", tickUpdater);
27
28 CodedoJavaElementImageProvider imageProvider = Activator.getDefault().getJavaElementImageProvider();
29 setFieldValue(labelProvider, "fImageLabelProvider", imageProvider);
26 } 30 }
27 catch (ReflectiveOperationException e) 31 catch (ReflectiveOperationException e)
28 { 32 {
29 throw new RuntimeException(e); 33 throw new RuntimeException(e);
30 } 34 }
31 }
32
33 private JavaUILabelProvider getJavaUILabelProvider() throws ReflectiveOperationException
34 {
35 JavaEditorErrorTickUpdater tickUpdater = getJavaEditorErrorTickUpdater();
36
37 Field field = tickUpdater.getClass().getDeclaredField("fLabelProvider");
38 field.setAccessible(true);
39 return (JavaUILabelProvider)field.get(tickUpdater);
40 }
41
42 private JavaEditorErrorTickUpdater getJavaEditorErrorTickUpdater() throws ReflectiveOperationException
43 {
44 Field field = getClass().getSuperclass().getDeclaredField("fJavaEditorErrorTickUpdater");
45 field.setAccessible(true);
46 return (JavaEditorErrorTickUpdater)field.get(this);
47 }
48
49 private void setupJavaElementImageProvider(JavaUILabelProvider labelProvider) throws ReflectiveOperationException
50 {
51 CodedoJavaElementImageProvider imageProvider = Activator.getDefault().getJavaElementImageProvider();
52
53 Field field = labelProvider.getClass().getDeclaredField("fImageLabelProvider");
54 field.setAccessible(true);
55 field.set(labelProvider, imageProvider);
56 } 35 }
57 36
58 public void toggleTitleImage() 37 public void toggleTitleImage()
59 { 38 {
60 IJavaElement javaElement = getJavaElement(); 39 IJavaElement javaElement = getJavaElement();