X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java index 172078e..702184a 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java @@ -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('.'); @@ -45,7 +45,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,8 +79,8 @@ 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); @@ -93,7 +94,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 +118,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 null if - * no existing file can be found + * @return the file for the given absolute file path or null + * 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); + 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 null 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 +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) { + IResource resource = ifile; + if (resource.exists()) { + return true; + } + } + } + return false; + } } \ No newline at end of file