package org.projectusus.projectsettings.core; import java.util.Properties; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ProjectScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.jdt.core.JavaCore; import org.eclipse.osgi.util.NLS; import org.osgi.service.prefs.BackingStoreException; import org.projectusus.projectsettings.internal.util.CoreTexts; public class ProjectPreferences extends Preferences { private static IEclipsePreferences getJdtPreferences( IProject project ) { return new ProjectScope( project ).getNode( JavaCore.PLUGIN_ID ); } private static Properties getJdtPreferencesAsProperties( IProject project ) { Properties properties = new Properties(); try { IEclipsePreferences jdtPreferences = getJdtPreferences( project ); for( String key : jdtPreferences.keys() ) { properties.put( key, jdtPreferences.get( key, "" ) ); } } catch( BackingStoreException bse ) { throw new RuntimeException( CoreTexts.Error_load_settings, bse ); } return properties; } private final IProject project; public ProjectPreferences( IProject project ) { this( project, getJdtPreferencesAsProperties( project ) ); } ProjectPreferences( IProject project, Properties prefsAsProps ) { super( NLS.bind( CoreTexts.projectSettings_settingsName, project.getName() ), prefsAsProps ); this.project = project; } public void persist() { IEclipsePreferences jdtPreferences = getJdtPreferences( project ); for( Object keyAsObject : getAll().keySet() ) { String key = (String)keyAsObject; jdtPreferences.put( key, getAll().getProperty( key ) ); } try { jdtPreferences.flush(); } catch( BackingStoreException bse ) { throw new RuntimeException( CoreTexts.Error_save_settings, bse ); } } }