Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Bug fix NPE in the CView cdt.ui

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.78
diff -u -r1.78 ChangeLog
--- ChangeLog	2 Apr 2003 04:59:34 -0000	1.78
+++ ChangeLog	2 Apr 2003 15:05:07 -0000
@@ -1,3 +1,12 @@
+2003-04-02 Alain Magloire
+
+	Bug fix and cleanup in CView
+	
+	* src/org/eclipse/internal/ui/cview/CView.java:
+	Cleanup the linkToEditor().
+	* src/org/eclipse/internal/util/UtilEditor.java:
+	Bug fix.
+
 2003-04-01 Alain Magloire
 
 	Support to open a child in an IBinary if we know the TranslationUnit.
Index: src/org/eclipse/cdt/internal/ui/cview/CView.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java,v
retrieving revision 1.18
diff -u -r1.18 CView.java
--- src/org/eclipse/cdt/internal/ui/cview/CView.java	2 Apr 2003 05:03:47 -0000	1.18
+++ src/org/eclipse/cdt/internal/ui/cview/CView.java	2 Apr 2003 15:05:08 -0000
@@ -19,10 +19,8 @@
 import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.core.model.IParent;
 import org.eclipse.cdt.core.model.ISourceReference;
-import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.core.resources.MakeUtil;
 import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider;
-import org.eclipse.cdt.internal.ui.editor.CEditor;
 import org.eclipse.cdt.internal.ui.editor.OpenIncludeAction;
 import org.eclipse.cdt.internal.ui.makeview.MakeAction;
 import org.eclipse.cdt.internal.ui.makeview.MakeTarget;
@@ -40,7 +38,6 @@
 import org.eclipse.core.resources.IResourceChangeEvent;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
@@ -84,11 +81,9 @@
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IStorageEditorInput;
 import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPage;
@@ -1129,51 +1124,26 @@
 		if (!CPluginPreferencePage.isLinkToEditor()) {
 			return;
 		}
+		// ignore selection changes if the package explorer is not the active part.
+		// In this case the selection change isn't triggered by a user.
+		if (!isActivePart())
+			return;
+		Object obj= selection.getFirstElement();
 
-		Object obj = selection.getFirstElement();
-		if (obj instanceof IFile && selection.size() == 1) {
-			IFile file = (IFile) obj;
-			IWorkbenchPage page = getSite().getPage();
-			IEditorReference[] editorReferences = page.getEditorReferences();
-			for (int i = 0; i < editorReferences.length; ++i) {
-				IEditorPart editor = editorReferences[i].getEditor(false);
-				if(null != editor) {
-					IEditorInput input = editor.getEditorInput();
-					if (input instanceof IFileEditorInput && file.equals(((IFileEditorInput)input).getFile())) {
-						page.bringToTop(editor);
-					}
-					return;
-				}
-			}
-		} else if (obj instanceof ISourceReference) {
-			ISourceReference sourceRef = (ISourceReference) obj;
-			ITranslationUnit tu = sourceRef.getTranslationUnit();
-			if (tu == null) 
-				return;
-			IPath path = tu.getPath();
-			if (path == null)
-				return;
-			IWorkbenchPage page = getSite().getPage();
-			IEditorReference editorReferences[] = page.getEditorReferences();
-			for (int i = 0; i < editorReferences.length; ++i) {
-				IEditorPart editor = editorReferences[i].getEditor(false);
-				if (null != editor) {
-					IEditorInput input = editor.getEditorInput();
-					try {
-						if (input instanceof IStorageEditorInput && path.equals(((IStorageEditorInput)input).getStorage().getFullPath())) {
-							page.bringToTop(editor);
-							if (editor instanceof CEditor) {
-								CEditor e = (CEditor)editor;
-								e.selectionChanged (new SelectionChangedEvent (e.getOutlinePage (),selection));
-							}
-							return;
-						}
-					} catch (CoreException e) {
-					}
-				}
+		if (selection.size() == 1) {
+			IEditorPart part= EditorUtility.isOpenInEditor(obj);
+			if (part != null) {
+				IWorkbenchPage page= getSite().getPage();
+				page.bringToTop(part);
+				if (obj instanceof ICElement) 
+					EditorUtility.revealInEditor(part, (ICElement) obj);
 			}
-			
 		}
+		
+	}
+
+	private boolean isActivePart() {
+		return this == getSite().getPage().getActivePart();
 	}
 
 	void restoreFilters() {
Index: src/org/eclipse/cdt/internal/ui/util/EditorUtility.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java,v
retrieving revision 1.7
diff -u -r1.7 EditorUtility.java
--- src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	2 Apr 2003 05:04:12 -0000	1.7
+++ src/org/eclipse/cdt/internal/ui/util/EditorUtility.java	2 Apr 2003 15:05:08 -0000
@@ -152,7 +152,10 @@
 				element= ((IWorkingCopy) element).getOriginalElement();
  
  			if (element instanceof ISourceReference) {
- 				element = ((ISourceReference)element).getTranslationUnit();                    
+ 				ITranslationUnit tu = ((ISourceReference)element).getTranslationUnit();
+ 				if (tu != null) {
+ 					element = tu;                    
+ 				}
  			}
 
 			if (element instanceof ITranslationUnit) {



Back to the top