1 package net.sourceforge.phpeclipse.ui.overlaypages;
2 
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.StringTokenizer;
7 
8 import net.sourceforge.phpeclipse.ui.IPreferenceConstants;
9 import net.sourceforge.phpeclipse.ui.WebUI;
10 import net.sourceforge.phpeclipse.ui.preferences.PHPMiscProjectPreferences;
11 import net.sourceforge.phpeclipse.ui.preferences.PHPPreviewProjectPreferences;
12 
13 import org.eclipse.core.resources.IProject;
14 import org.eclipse.core.resources.IResource;
15 import org.eclipse.core.runtime.CoreException;
16 import org.eclipse.core.runtime.IPath;
17 import org.eclipse.core.runtime.Path;
18 import org.eclipse.core.runtime.QualifiedName;
19 
20 public class ProjectPrefUtil {
getMiscProjectsPreferenceValue(IResource resource, String key)21 	public static String getMiscProjectsPreferenceValue(IResource resource,
22 			String key) {
23 		return getOverlayedPrefProjectValue(resource,
24 				PHPMiscProjectPreferences.PREF_ID, key);
25 	}
26 
getIncludePaths(IResource resource)27 	public static List getIncludePaths(IResource resource) {
28 		String includePaths = getMiscProjectsPreferenceValue(resource,
29 				IPreferenceConstants.PHP_INCLUDE_PATHS);
30 		ArrayList list = new ArrayList();
31 		if (includePaths != null) {
32 			StringTokenizer st = new StringTokenizer(includePaths,
33 					File.pathSeparator + "\n\r");//$NON-NLS-1$
34 			while (st.hasMoreElements()) {
35 				list.add(st.nextElement());
36 			}
37 		}
38 		return list;
39 	}
40 
getDocumentRoot(IResource resource)41 	public static IPath getDocumentRoot(IResource resource) {
42 		String documentRoot = getMiscProjectsPreferenceValue(resource,
43 				IPreferenceConstants.PHP_DOCUMENTROOT_PREF);
44 		IPath path = new Path(documentRoot);
45 		// documentRoot = documentRoot.replace('\\', '/');
46 		return path;
47 	}
48 
getOverlayedPrefProjectValue(IResource resource, String pageId, String key)49 	public static String getOverlayedPrefProjectValue(IResource resource,
50 			String pageId, String key) {
51 		IProject project = resource.getProject();
52 		String value = null;
53 		if (useProjectSettings(project, pageId)) {
54 			value = getProperty(resource, pageId, key);
55 		}
56 		if (value != null)
57 			return value;
58 		return WebUI.getDefault().getPreferenceStore().getString(key);
59 	}
60 
getOverlayedPrefResourceValue(IResource resource, String pageId, String key)61 	public static String getOverlayedPrefResourceValue(IResource resource,
62 			String pageId, String key) {
63 		String value = null;
64 		if (useProjectSettings(resource, pageId)) {
65 			value = getProperty(resource, pageId, key);
66 		}
67 		if (value != null)
68 			return value;
69 		return WebUI.getDefault().getPreferenceStore().getString(key);
70 	}
71 
getPreviewBooleanValue(IResource resource, String key)72 	public static boolean getPreviewBooleanValue(IResource resource, String key) {
73 		return getOverlayedPrefResourceValue(resource,
74 				PHPPreviewProjectPreferences.PREF_ID, key).equals("true");
75 	}
76 
getPreviewStringValue(IResource resource, String key)77 	public static String getPreviewStringValue(IResource resource, String key) {
78 		return getOverlayedPrefResourceValue(resource,
79 				PHPPreviewProjectPreferences.PREF_ID, key);
80 	}
81 
getProperty(IResource resource, String pageId, String key)82 	private static String getProperty(IResource resource, String pageId,
83 			String key) {
84 		try {
85 			return resource
86 					.getPersistentProperty(new QualifiedName(pageId, key));
87 		} catch (CoreException e) {
88 		}
89 		return null;
90 	}
91 
useProjectSettings(IResource resource, String pageId)92 	private static boolean useProjectSettings(IResource resource, String pageId) {
93 		String use = getProperty(resource, pageId,
94 				FieldEditorOverlayPage.USEPROJECTSETTINGS);
95 		return "true".equals(use);
96 	}
97 }