--- /dev/null
+package net.sourceforge.phpeclipse.preferences;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.QualifiedName;
+
+
+public class ProjectProperties
+ implements IObfuscatorPreferences
+{
+ private IProject project;
+
+ // private static final String DEFAULT_BUILD = String.valueOf(DEFAULT_BUILD_VALUE);
+
+ public ProjectProperties(IProject project)
+ {
+ this.project = project;
+ }
+
+
+ public String getPublish()
+ throws CoreException
+ {
+ return getProperty(PUBLISH_PROPERTY_NAME,DEFAULT_PUBLISH_DIR);
+ }
+
+ public boolean hasNature()
+ throws CoreException
+ {
+ return project.hasNature(PHPeclipsePlugin.PHP_NATURE_ID);
+ }
+
+ public void setPublish(String publish)
+ throws CoreException
+ {
+ setProperty(PUBLISH_PROPERTY_NAME,publish,DEFAULT_PUBLISH_DIR);
+ }
+
+
+ public void setNature(boolean nature)
+ throws CoreException
+ {
+ if(nature)
+ {
+ if(!hasNature())
+ {
+ IProjectDescription description = project.getDescription();
+ String[] old = description.getNatureIds(),
+ natures= new String[old.length + 1];
+ System.arraycopy(old,0,natures,0,old.length);
+ natures[old.length] = PHPeclipsePlugin.PHP_NATURE_ID;
+ description.setNatureIds(natures);
+ project.setDescription(description,new NullProgressMonitor());
+ }
+ }
+ else
+ {
+ if(hasNature())
+ {
+ IProjectDescription description = project.getDescription();
+ String[] old = description.getNatureIds(),
+ natures= new String[old.length - 1];
+ int i = 0,
+ j = 0;
+ while(i < old.length)
+ {
+ if(!old[i].equals(PHPeclipsePlugin.PHP_NATURE_ID))
+ natures[j++] = old[i];
+ i++;
+ }
+ description.setNatureIds(natures);
+ project.setDescription(description,new NullProgressMonitor());
+ }
+ }
+ }
+
+ protected String getProperty(QualifiedName key,String def)
+ throws CoreException
+ {
+ String value = project.getPersistentProperty(key);
+ if(value == null || value.length() == 0)
+ return def;
+ else
+ return value;
+ }
+
+ protected void setProperty(QualifiedName key,String value,String def)
+ throws CoreException
+ {
+ if(value != null && value.length() != 0 && hasNature())
+ {
+ if(value.equals(def))
+ project.setPersistentProperty(key,null);
+ else
+ project.setPersistentProperty(key,value);
+ }
+ }
+}
\ No newline at end of file