package com.aptana.ide.internal.update.manager;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.aptana.ide.update.Activator;
import com.aptana.ide.update.manager.IPluginManager;
public class PluginManagerLoader
{
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
private static IPluginManager fManager;
public static IPluginManager getPluginManager()
{
if (fManager == null)
{
fManager = loadExtensionPoints();
}
return fManager;
}
private static IPluginManager loadExtensionPoints()
{
IExtensionRegistry reg = Platform.getExtensionRegistry();
IExtensionPoint ep = reg.getExtensionPoint(Activator.MANAGER_EXTENSION_POINT);
IExtension[] extensions = ep.getExtensions();
IConfigurationElement[] ce;
String className;
for (int i = 0; i < extensions.length; ++i)
{
ce = extensions[i].getConfigurationElements();
for (int j = 0; j < ce.length; ++j)
{
className = ce[j].getAttribute(ATTR_CLASS);
if (className != null)
{
try
{
Object classObject = ce[j].createExecutableExtension(ATTR_CLASS);
if (classObject instanceof IPluginManager)
{
return (IPluginManager) classObject;
}
}
catch (Throwable t)
{
// Do nothing
}
}
}
}
return null;
}
}