/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.util; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.php.internal.ui.PHPUIMessages; public class PHPManualSiteDescriptor { private static final String PHP_MANUAL_SITES_EXTENSION_POINT = "org.eclipse.php.ui.phpManualSites"; //$NON-NLS-1$ private static final String SITE_TAG = "site"; //$NON-NLS-1$ private static final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$ private static final String URL_ATTRIBUTE = "url"; //$NON-NLS-1$ private static final String LABEL_ATTRIBUTE = "label"; //$NON-NLS-1$ private static final String DIRECTOR_ATTRIBUTE = "director"; //$NON-NLS-1$ private static final String EXTENSION_ATTRIBUTE = "extension"; //$NON-NLS-1$ public static final String DEFAULT_PHP_MANUAL_SITE = PHPUIMessages.PHPManualSiteDescriptor_URL; public static final String DEFAULT_PHP_MANUAL_EXTENSION = "php"; //$NON-NLS-1$ public static final String DEFAULT_PHP_MANUAL_LABEL = "PHP.net"; //$NON-NLS-1$ public static final String DEFAULT_PHP_MANUAL_DIRECTOR = "org.eclipse.php.ui.phpManualDirector"; //$NON-NLS-1$ private IConfigurationElement fElement; public PHPManualSiteDescriptor(IConfigurationElement element) { Assert.isNotNull(element); fElement = element; } public static PHPManualSiteDescriptor[] getContributedSites() { IExtensionRegistry registry = Platform.getExtensionRegistry(); IConfigurationElement[] elements = registry.getConfigurationElementsFor(PHP_MANUAL_SITES_EXTENSION_POINT); PHPManualSiteDescriptor[] manualDescs = createDescriptors(elements); initializeFromPreferences(manualDescs); return manualDescs; } public PHPManualSite createSite() { return new PHPManualSite(getURL(), getExtension()); } public String getURL() { return fElement.getAttribute(URL_ATTRIBUTE); } public String getDirectorID() { String director = fElement.getAttribute(DIRECTOR_ATTRIBUTE); if (director == null) { director = DEFAULT_PHP_MANUAL_DIRECTOR; } return director; } public String getLabel() { return fElement.getAttribute(LABEL_ATTRIBUTE); } public String getExtension() { return fElement.getAttribute(EXTENSION_ATTRIBUTE); } public String getID() { return fElement.getAttribute(ID_ATTRIBUTE); } private static PHPManualSiteDescriptor[] createDescriptors(IConfigurationElement[] elements) { List result = new ArrayList(elements.length); for (int i = 0; i < elements.length; i++) { IConfigurationElement element = elements[i]; if (SITE_TAG.equals(element.getName())) { PHPManualSiteDescriptor desc = new PHPManualSiteDescriptor(element); result.add(desc); } } return (PHPManualSiteDescriptor[]) result.toArray(new PHPManualSiteDescriptor[result.size()]); } private static void initializeFromPreferences(PHPManualSiteDescriptor[] manualDescs) { } }