From bd4da84e73bdea41833e4eb078af1fe3dec0856b Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Wed, 19 May 2010 06:59:01 +0000 Subject: [PATCH] Corrected logic for determining if a URI points to a workspace file. --- .../ui/editor/AddIncludeOnSelectionAction.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java index db81e5a3061..cf2699c5541 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java @@ -25,6 +25,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -442,7 +443,7 @@ public class AddIncludeOnSelectionAction extends TextEditorAction { */ private IIndexFile getRepresentativeFile(IIndexFile headerFile, IIndex index) { try { - if (ResourceLookup.findFilesForLocationURI(headerFile.getLocation().getURI()).length > 0) { + if (isWorkspaceFile(headerFile.getLocation().getURI())) { return headerFile; } // TODO(sprigogin): Change to ArrayDeque when Java 5 support is no longer needed. @@ -461,7 +462,7 @@ public class AddIncludeOnSelectionAction extends TextEditorAction { IIndexFile includer = include.getIncludedBy(); if (!processed.contains(includer)) { URI uri = includer.getLocation().getURI(); - if (isSource(uri.getPath()) || ResourceLookup.findFilesForLocationURI(uri).length > 0) { + if (isSource(uri.getPath()) || isWorkspaceFile(uri)) { return file; } front.add(includer); @@ -475,6 +476,15 @@ public class AddIncludeOnSelectionAction extends TextEditorAction { return headerFile; } + private boolean isWorkspaceFile(URI uri) { + for (IFile file : ResourceLookup.findFilesForLocationURI(uri)) { + if (file.exists()) { + return true; + } + } + return false; + } + private boolean hasExtension(String path) { return path.indexOf('.', path.lastIndexOf('/') + 1) >= 0; }