diff 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
line wrap: on
line diff
--- a/src/de/codedo/java/editor/CodedoJavaEditor.java	Thu Oct 15 09:43:34 2020 +0200
+++ b/src/de/codedo/java/editor/CodedoJavaEditor.java	Thu Oct 15 12:05:06 2020 +0200
@@ -1,6 +1,7 @@
 package de.codedo.java.editor;
 
-import java.lang.reflect.Field;
+import static de.codedo.java.editor.ReflectionUtils.getFieldValue;
+import static de.codedo.java.editor.ReflectionUtils.setFieldValue;
 
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor;
@@ -21,8 +22,11 @@
 	{
 		try
 		{
-			JavaUILabelProvider labelProvider = getJavaUILabelProvider();
-			setupJavaElementImageProvider(labelProvider);
+			JavaEditorErrorTickUpdater tickUpdater = getFieldValue("fJavaEditorErrorTickUpdater", this);
+			JavaUILabelProvider labelProvider = getFieldValue("fLabelProvider", tickUpdater);
+
+			CodedoJavaElementImageProvider imageProvider = Activator.getDefault().getJavaElementImageProvider();
+			setFieldValue(labelProvider, "fImageLabelProvider", imageProvider);
 		}
 		catch (ReflectiveOperationException e) 
 		{
@@ -30,31 +34,6 @@
 		}
 	}
 
-	private JavaUILabelProvider getJavaUILabelProvider() throws ReflectiveOperationException
-	{
-		JavaEditorErrorTickUpdater tickUpdater = getJavaEditorErrorTickUpdater();
-
-		Field field = tickUpdater.getClass().getDeclaredField("fLabelProvider");
-		field.setAccessible(true);
-		return (JavaUILabelProvider)field.get(tickUpdater);
-	}
-	
-	private JavaEditorErrorTickUpdater getJavaEditorErrorTickUpdater() throws ReflectiveOperationException 
-	{
-		Field field = getClass().getSuperclass().getDeclaredField("fJavaEditorErrorTickUpdater");
-		field.setAccessible(true);
-		return (JavaEditorErrorTickUpdater)field.get(this);
-	}	
-	
-	private void setupJavaElementImageProvider(JavaUILabelProvider labelProvider) throws ReflectiveOperationException
-	{
-		CodedoJavaElementImageProvider imageProvider = Activator.getDefault().getJavaElementImageProvider();
-		
-		Field field = labelProvider.getClass().getDeclaredField("fImageLabelProvider");
-		field.setAccessible(true);
-		field.set(labelProvider, imageProvider);
-	}
-
 	public void toggleTitleImage()
 	{
 		IJavaElement javaElement = getJavaElement();