package net.sourceforge.phpeclipse.overlaypages;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.preferences.PHPMiscProjectPreferences;
import net.sourceforge.phpeclipse.preferences.PHPPreviewProjectPreferences;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.QualifiedName;

public class Util {
  public static String getMiscProjectsPreferenceValue(IResource resource, String key) {
    return getOverlayedPrefProjectValue(resource,
        PHPMiscProjectPreferences.PREF_ID, key);
  }
  public static String getOverlayedPrefProjectValue(IResource resource,
      String pageId, String key) {
    IProject project = resource.getProject();
    String value = null;
    if (useProjectSettings(project, pageId)) {
      value = getProperty(resource, pageId, key);
    }
    if (value != null)
      return value;
    return PHPeclipsePlugin.getDefault().getPreferenceStore().getString(key);
  }
  public static String getOverlayedPrefResourceValue(IResource resource,
      String pageId, String key) {
    String value = null;
    if (useProjectSettings(resource, pageId)) {
      value = getProperty(resource, pageId, key);
    }
    if (value != null)
      return value;
    return PHPeclipsePlugin.getDefault().getPreferenceStore().getString(key);
  }
  public static boolean getPreviewBooleanValue(IResource resource, String key) {
    return getOverlayedPrefResourceValue(resource,
        PHPPreviewProjectPreferences.PREF_ID, key).equals("true");
  }
  public static String getPreviewStringValue(IResource resource, String key) {
    return getOverlayedPrefResourceValue(resource,
        PHPPreviewProjectPreferences.PREF_ID, key);
  }
  private static String getProperty(IResource resource, String pageId,
      String key) {
    try {
      return resource.getPersistentProperty(new QualifiedName(pageId, key));
    } catch (CoreException e) {
    }
    return null;
  }
  private static boolean useProjectSettings(IResource resource, String pageId) {
    String use = getProperty(resource, pageId,
        FieldEditorOverlayPage.USEPROJECTSETTINGS);
    return "true".equals(use);
  }
}