X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolVariableRegistry.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolVariableRegistry.java new file mode 100644 index 0000000..bd65b25 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/internal/registry/ExternalToolVariableRegistry.java @@ -0,0 +1,135 @@ +package net.sourceforge.phpdt.externaltools.internal.registry; + +/********************************************************************** +Copyright (c) 2002 IBM Corp. and others. All rights reserved. +This file is made available under the terms of the Common Public License v1.0 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/cpl-v10.html +  +Contributors: +**********************************************************************/ + +import java.util.HashMap; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IPluginRegistry; +import org.eclipse.core.runtime.Platform; +import net.sourceforge.phpdt.externaltools.internal.model.ExternalToolsPlugin; +import net.sourceforge.phpdt.externaltools.model.IExternalToolConstants; + +/** + * General registry reader for external tool variables. + */ +public abstract class ExternalToolVariableRegistry { + // Format of the variable extension points + // null if none found. + */ + protected final ExternalToolVariable findVariable(String tag) { + return (ExternalToolVariable) variables.get(tag); + } + + /** + * Returns the number of variables in the registry. + */ + public final int getVariableCount() { + return variables.size(); + } + + /** + * Load the available variables + */ + private void loadVariables() { + variables = new HashMap(); + IPluginRegistry registry = Platform.getPluginRegistry(); + IExtensionPoint point = registry.getExtensionPoint(IExternalToolConstants.PLUGIN_ID, extensionPointId); + if (point != null) { + IExtension[] extensions = point.getExtensions(); + for (int i = 0; i < extensions.length; i++) { + IConfigurationElement[] elements = extensions[i].getConfigurationElements(); + for (int j = 0; j < elements.length; j++) { + IConfigurationElement element = elements[j]; + if (element.getName().equals(TAG_VARIABLE)) { + String tag = element.getAttribute(TAG_TAG); + String description = element.getAttribute(TAG_DESCRIPTION); + String className = element.getAttribute(TAG_EXPANDER_CLASS); + + boolean valid = true; + if (tag == null || tag.length() == 0) { + valid = false; + ExternalToolsPlugin.getDefault().log("Missing tag attribute value for variable element.", null); //$NON-NLS-1$ + } + if (description == null || description.length() == 0) { + valid = false; + ExternalToolsPlugin.getDefault().log("Missing description attribute value for variable element.", null); //$NON-NLS-1$ + } + if (className == null || className.length() == 0) { + valid = false; + ExternalToolsPlugin.getDefault().log("Missing expander class attribute value for variable element.", null); //$NON-NLS-1$ + } + + if (valid) + variables.put(tag, newVariable(tag, description, element)); + } + } + } + } + } + + /** + * Creates a new variable from the specified information. + */ + protected abstract ExternalToolVariable newVariable(String tag, String description, IConfigurationElement element); +}