Fixed bug 259408: [compare] Quick views should stay in compare editor if same CU
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
index 54b3208..c5ac18f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/EditorUtility.java
@@ -73,6 +73,7 @@
 
 import org.eclipse.ui.editors.text.TextFileDocumentProvider;
 
+import org.eclipse.compare.CompareEditorInput;
 import org.eclipse.compare.rangedifferencer.IRangeComparator;
 import org.eclipse.compare.rangedifferencer.RangeDifference;
 import org.eclipse.compare.rangedifferencer.RangeDifferencer;
@@ -171,17 +172,15 @@
 		 */
 		if (inputElement instanceof IJavaElement) {
 			ICompilationUnit cu= (ICompilationUnit)((IJavaElement)inputElement).getAncestor(IJavaElement.COMPILATION_UNIT);
-			if (cu != null && !JavaModelUtil.isPrimary(cu)) {
+			if (cu != null) {
 				IWorkbenchPage page= JavaPlugin.getActivePage();
-				if (page != null) {
-					IEditorPart editor= page.getActiveEditor();
-					if (editor != null) {
-						IJavaElement editorCU= EditorUtility.getEditorInputJavaElement(editor, false);
-						if (cu.equals(editorCU) || "org.eclipse.compare.CompareEditor".equals(editor.getEditorSite().getId())) { //$NON-NLS-1$
-							if (activate && page.getActivePart() != editor)
-								page.activate(editor);
-							return editor;
-						}
+				IEditorPart editor= page != null ? editor= page.getActiveEditor() : null;
+				if (editor != null && (!JavaModelUtil.isPrimary(cu) || editor.getEditorInput() instanceof CompareEditorInput)) {
+					IJavaElement editorCU= EditorUtility.getEditorInputJavaElement(editor, false);
+					if (cu.equals(editorCU)) {
+						if (activate && page.getActivePart() != editor)
+							page.activate(editor);
+						return editor;
 					}
 				}
 			}
@@ -390,7 +389,10 @@
 	 */
 	public static ITypeRoot getEditorInputJavaElement(IEditorPart editor, boolean primaryOnly) {
 		Assert.isNotNull(editor);
+		
 		IEditorInput editorInput= editor.getEditorInput();
+		if (editorInput instanceof CompareEditorInput)
+			editorInput= (IEditorInput)editor.getAdapter(IEditorInput.class);
 		if (editorInput == null)
 			return null;