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); } } }