Committing more fixes for bug #1839622 RSE Path error. This will clean up php files...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / util / PHPFileUtil.java
index d17c8e4..5f9facc 100644 (file)
@@ -10,6 +10,7 @@ import java.util.List;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.ui.overlaypages.ProjectPrefUtil;
 
+import org.eclipse.core.filebuffers.FileBuffers;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -26,9 +27,8 @@ public class PHPFileUtil {
        public final static String[] SMARTY_EXTENSIONS = { "tpl" };
 
        public static boolean isPHPFile(IFile file) {
-               // String extension = file.getFileExtension();
-               return isPHPFileName(file.getLocation().toString());
-       }
+                return isPHPFileName(file.getFullPath().toString());
+        }
 
        // public final static String getFileExtension(String name) {
        // int index = name.lastIndexOf('.');
@@ -157,40 +157,34 @@ public class PHPFileUtil {
                IPath documentRootPath = ProjectPrefUtil.getDocumentRoot(project);
                IPath resourcePath = resource.getProjectRelativePath();
 
-               File file = null;
                IPath path = null;
-               path = documentRootPath.append(includeNameString);
-               file = path.toFile();
-               if (file.exists()) {
+               
+               // script location based
+               path = project.getFullPath().append(resourcePath.removeLastSegments(1))
+                               .append(includeNameString);
+               //path = 
+               if (fileExists(path, false)) {
                        return path;
                }
-
-               if (includeNameString.startsWith("../")) {
-                       path = project.getLocation().append(
-                                       resourcePath.removeLastSegments(1));
-                       path = path.append(includeNameString);
-                       file = path.toFile();
-                       if (file.exists()) {
-                               return path;
-                       }
+               // project root based
+               path = project.getFullPath().append(includeNameString);
+               if (fileExists(path, false)) {
+                       return path;
                }
-
-               // includeNameString contains no path separator
-               path = project.getLocation().append(resourcePath.removeLastSegments(1));
-               path = path.append(includeNameString);
-               file = path.toFile();
-               if (file.exists()) {
+               
+               // DocumentRoot (absolute path) based
+               path = documentRootPath.append(includeNameString);
+               if (fileExists(path, true)) {
                        return path;
                }
-               // }
 
+               // IncludePaths settings (absolute path) based
                List includePaths = ProjectPrefUtil.getIncludePaths(project);
                if (includePaths.size() > 0) {
                        for (int i = 0; i < includePaths.size(); i++) {
                                path = new Path(includePaths.get(i).toString())
                                                .append(includeNameString);
-                               file = path.toFile();
-                               if (file.exists()) {
+                               if (fileExists(path, true)) {
                                        return path;
                                }
                        }
@@ -198,4 +192,20 @@ public class PHPFileUtil {
                return null;
        }
 
+       private static boolean fileExists(IPath path, boolean absolute) {
+               File file = path.toFile();
+               if (file.exists()) {
+                       return true;
+               }
+               if (!absolute) {
+                       IFile ifile = FileBuffers.getWorkspaceFileAtLocation(path);
+                       if (ifile != null) {
+                               file = ifile.getFullPath().toFile();
+                               if (file.exists()) {
+                                       return true;
+                               }
+                       }
+               }
+               return false;
+       }
 }
\ No newline at end of file