1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / util / PHPFileUtil.java
index 172078e..b571a1c 100644 (file)
@@ -2,6 +2,8 @@
  * Created on 09.08.2003
  *
  */
+
+/*duplicated incastrix*/
 package net.sourceforge.phpdt.internal.ui.util;
 
 import java.io.File;
@@ -10,6 +12,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 +29,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('.');
@@ -45,7 +47,8 @@ public class PHPFileUtil {
         */
        public final static boolean isPHPFileName(String name) {
 
-               // avoid handling a file without base name, e.g. ".php", which is a valid
+               // avoid handling a file without base name, e.g. ".php", which is a
+               // valid
                // Eclipse resource name
                File file = new File(name);
                if (file.getName().startsWith(".")) {
@@ -78,12 +81,12 @@ public class PHPFileUtil {
        }
 
        /**
-        * Returns true iff the file extension is a valid PHP Unit name implementation
-        * is not creating extra strings.
+        * Returns true iff the file extension is a valid PHP Unit name
+        * implementation is not creating extra strings.
         */
-       public final static boolean isValidPHPUnitName(String filename) {
-               return PHPFileUtil.isPHPFileName(filename);
-       }
+//     public final static boolean isValidPHPUnitName(String filename) {
+//             return PHPFileUtil.isPHPFileName(filename);
+//     }
 
        /**
         * @return Returns the PHP extensions.
@@ -93,7 +96,8 @@ public class PHPFileUtil {
        // ArrayList list = new ArrayList();
        // final IPreferenceStore store =
        // PHPeclipsePlugin.getDefault().getPreferenceStore();
-       // String extensions = store.getString(PHPeclipsePlugin.PHP_EXTENSION_PREFS);
+       // String extensions =
+       // store.getString(PHPeclipsePlugin.PHP_EXTENSION_PREFS);
        // extensions = extensions.trim();
        // if (extensions.length() != 0) {
        // StringTokenizer tokenizer = new StringTokenizer(extensions, " ,;:/-|");
@@ -116,75 +120,73 @@ public class PHPFileUtil {
        // }
        /**
         * @param php_extensions
-        *          The PHP extensions to set.
+        *            The PHP extensions to set.
         */
        // public static void setExtensions(String[] php_extensions) {
        // PHP_EXTENSIONS = php_extensions;
        // }
        /**
         * Creata the file for the given absolute file path
-        *
+        * 
         * @param absoluteFilePath
         * @param project
-        * @return the file for the given absolute file path or <code>null</code> if
-        *         no existing file can be found
+        * @return the file for the given absolute file path or <code>null</code>
+        *         if no existing file can be found
         */
-       public static IFile createFile(IPath absoluteFilePath, IProject project) {
-               if (absoluteFilePath == null || project == null) {
-                       return null;
-               }
-
-               String projectPath = project.getLocation().toString();
-               String filePath = absoluteFilePath.toString().substring(projectPath.length() + 1);
-               return project.getFile(filePath);
-
-       }
+//     public static IFile createFile(IPath absoluteFilePath, IProject project) {
+//             if (absoluteFilePath == null || project == null) {
+//                     return null;
+//             }
+//
+//             String projectPath = project.getFullPath().toString();
+//             String filePath = absoluteFilePath.toString().substring(
+//                             projectPath.length() + 1);
+//             return project.getFile(filePath);
+//
+//     }
 
        /**
         * Determine the path of an include name string
-        *
+        * 
         * @param includeNameString
         * @param resource
         * @param project
         * @return the path for the given include filename or <code>null</code> if
         *         no existing file can be found
         */
-       public static IPath determineFilePath(String includeNameString, IResource resource, IProject project) {
+       public static IPath determineFilePath(String includeNameString,
+                       IResource resource, IProject project) {
                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()) {
+                               path = new Path(includePaths.get(i).toString())
+                                               .append(includeNameString);
+                               if (fileExists(path, true)) {
                                        return path;
                                }
                        }
@@ -192,4 +194,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) {
+                           IResource resource = ifile;
+                if (resource.exists()) {
+                    return true;
+                }
+                       }
+               }
+               return false;
+       }
 }
\ No newline at end of file