/******************************************************************************* * Copyright (c) 2012 Pivotal Software, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package org.springsource.ide.eclipse.commons.internal.ui; import org.eclipse.core.runtime.CoreException; 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.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.ui.IStartup; import org.eclipse.ui.internal.WorkbenchPlugin; import org.springsource.ide.eclipse.commons.core.StatusHandler; import org.springsource.ide.eclipse.commons.ui.IIdeUiStartup; /** * @author Steffen Pingel * @author Leo Dos Santos * @author Christian Dupuis */ public class StartupExtensionPointReader implements IStartup { private static final String EXTENSION_ID_STARTUP = "com.springsource.sts.ide.ui.startup"; private static final String ELEMENT_STARTUP = "startup"; private static final String ELEMENT_CLASS = "class"; public static void runStartupExtensions() { IExtensionRegistry registry = Platform.getExtensionRegistry(); IExtensionPoint extensionPoint = registry.getExtensionPoint(EXTENSION_ID_STARTUP); IExtension[] extensions = extensionPoint.getExtensions(); for (IExtension extension : extensions) { IConfigurationElement[] elements = extension.getConfigurationElements(); for (IConfigurationElement element : elements) { if (element.getName().compareTo(ELEMENT_STARTUP) == 0) { runStartupExtension(element); } } } } private static void runStartupExtension(IConfigurationElement configurationElement) { try { Object object = WorkbenchPlugin.createExtension(configurationElement, ELEMENT_CLASS); if (!(object instanceof IIdeUiStartup)) { StatusHandler.log(new Status(IStatus.ERROR, UiPlugin.PLUGIN_ID, "Could not load " + object.getClass().getCanonicalName() + " must implement " + IIdeUiStartup.class.getCanonicalName())); return; } IIdeUiStartup startup = (IIdeUiStartup) object; startup.lazyStartup(); } catch (CoreException e) { StatusHandler.log(new Status(IStatus.ERROR, UiPlugin.PLUGIN_ID, "Could not load startup extension", e)); } } public void earlyStartup() { runStartupExtensions(); } }