// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.projectsettings.core; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; public class SettingsProviderExtension { private static final String EXTENSION_POINT_ID = "org.projectusus.projectsettings.core.settingsprovider"; //$NON-NLS-1$ public List<SettingsProvider> loadSettingsProvider() { List<SettingsProvider> result = new ArrayList<SettingsProvider>(); IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor( EXTENSION_POINT_ID ); for( IConfigurationElement configurationElement : configurationElements ) { SettingsProvider settingsProvider = getSettingsProvider( configurationElement ); if( settingsProvider != null ) { result.add( settingsProvider ); } } return result; } private SettingsProvider getSettingsProvider( IConfigurationElement configurationElement ) { try { Object object = configurationElement.createExecutableExtension( "clazz" ); //$NON-NLS-1$ if( object instanceof SettingsProvider ) { return (SettingsProvider)object; } } catch( CoreException e ) { e.printStackTrace(); } return null; } public List<Preferences> loadSettings() { List<Preferences> result = new ArrayList<Preferences>(); for( SettingsProvider settingsProvider : loadSettingsProvider() ) { result.add( settingsProvider.getUsusProjectSettings() ); } return result; } }