/******************************************************************************* * Copyright (c) 2014 Pivotal Software, Inc. and others. * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License v1.0 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). * * Contributors: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package org.springsource.ide.eclipse.commons.browser; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; /** * @author Miles Parker * */ public class BrowserExtensions { public static final String EXTENSION_ID_NEW_WIZARD = "org.eclipse.ui.newWizards"; public static final String EXTENSION_ID_BROWSER_TO_ECLIPSE = "org.springsource.ide.browser.function.browserToEclipse"; public static final String EXTENSION_ID_ECLIPSE_TO_BROWSER = "org.springsource.ide.browser.function.eclipseToBrowser"; public static final String ELEMENT_ID = "id"; public static final String ELEMENT_URL = "urlExpression"; public static final String ELEMENT_CLASS = "class"; public static final String ELEMENT_ICON = "icon"; public static final String ELEMENT_NAME = "name"; public static final String ELEMENT_ARGUMENT = "argument"; public static final String ELEMENT_DYNAMIC = "dynamic"; public static final String ELEMENT_FUNCTION_NAME = "functionName"; public static final String ELEMENT_LITERAL = "literal"; public static final String ELEMENT_ONLOAD = "invokeOnLoad"; public static IConfigurationElement[] getExtensions(String extensionId, String id, String url) { List<IConfigurationElement> elements = new ArrayList<IConfigurationElement>(); IExtensionRegistry registry = org.eclipse.core.runtime.Platform.getExtensionRegistry(); IConfigurationElement[] configurations = registry.getConfigurationElementsFor(extensionId); for (IConfigurationElement element : configurations) { String elementId = element.getAttribute(ELEMENT_ID); String elementUrl = element.getAttribute(ELEMENT_URL); if ((elementId == null || elementId.equals(id)) && (url == null || (elementUrl != null && url.matches(elementUrl)))) { elements.add(element); } } return elements.toArray(new IConfigurationElement[] {}); } public static IConfigurationElement getExtension(String extensionId, String id, String url) { IConfigurationElement[] extensionsForUrl = getExtensions(extensionId, id, url); if (extensionsForUrl.length > 0) { return extensionsForUrl[0]; } return null; } public static IConfigurationElement getExtension(String extensionId, String id) { return getExtension(extensionId, id, null); } }