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 e9de7c4..32db3b0 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 @@ -1,114 +1,176 @@ /* * Created on 09.08.2003 - * + * */ package net.sourceforge.phpdt.internal.ui.util; -import net.sourceforge.phpeclipse.ui.IPreferenceConstants; -import net.sourceforge.phpeclipse.ui.overlaypages.Util; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.ui.overlaypages.ProjectPrefUtil; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.preference.IPreferenceStore; -/** - * @author khartlage - * - */ public class PHPFileUtil { - public final static String[] PHP_EXTENSIONS = { - "php", - "php3", - "php4", - "php5", - "phtml", - "module", // drupal - "inc", - "class" - }; -// public final static String[] HTML_EXTENSIONS = { -// "html", -// "htm", -// "xhtml" -// }; - public final static String[] SMARTY_EXTENSIONS = { - "tpl" - }; - - public static boolean isPHPFile(IFile file) { + private static String[] PHP_EXTENSIONS = null; + + public final static String[] SMARTY_EXTENSIONS = { "tpl" }; + + public static boolean isPHPFile(IFile file) { String extension = file.getFileExtension(); return isPHPFileName(file.getLocation().toString()); } public final static String getFileExtension(String name) { - int index = name.lastIndexOf('.'); - if (index == -1) - return null; - if (index == (name.length() - 1)) - return null; //$NON-NLS-1$ - return name.substring(index + 1); -} - + int index = name.lastIndexOf('.'); + if (index == -1) + return null; + if (index == (name.length() - 1)) + return null; //$NON-NLS-1$ + return name.substring(index + 1); + } + /** - * Returns true iff str.toLowerCase().endsWith(".php") - * implementation is not creating extra strings. + * Returns true iff str.toLowerCase().endsWith(".php") implementation is not creating extra strings. */ public final static boolean isPHPFileName(String name) { String extension = getFileExtension(name); - if (extension==null) { + if (extension == null) { return false; } extension = extension.toLowerCase(); - for (int i=0;i= 1) { + list.add(token); + } + } + if (list.size() != 0) { + PHP_EXTENSIONS = new String[list.size()]; + for (int i = 0; i < list.size(); i++) { + PHP_EXTENSIONS[i] = (String) list.get(i); + } + } + } + } + return PHP_EXTENSIONS; + } + /** - * Returns true iff str.toLowerCase().endsWith(".html") - * implementation is not creating extra strings. + * @param php_extensions + * The PHP extensions to set. */ -// public final static boolean isHTML_FileName(String name) { -// String extension = getFileExtension(name); -// if (extension==null) { -// return false; -// } -// extension = extension.toLowerCase(); -// for (int i=0;inull if no existing file can be found */ -// public final static boolean isTPL_FileName(String name) { -// String extension = getFileExtension(name); -// if (extension==null) { -// return false; -// } -// extension = extension.toLowerCase(); -// for (int i=0;inull if no existing file can be found + */ + 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()) { + return path; + } + + if (includeNameString.startsWith("../")) { + path = project.getLocation().append(resourcePath.removeLastSegments(1)); + path = path.append(includeNameString); + file = path.toFile(); + if (file.exists()) { + return path; + } + } + + // int index = includeNameString.indexOf('/'); + // if (index < 0) { + // includeNameString contains no path separator + path = project.getLocation().append(resourcePath.removeLastSegments(1)); + path = path.append(includeNameString); + file = path.toFile(); + if (file.exists()) { + return path; + } + // } + + 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()) { + return path; + } + } + } + return null; + } +} \ No newline at end of file