X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/JavaFoldingStructureProviderDescriptor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/JavaFoldingStructureProviderDescriptor.java new file mode 100644 index 0000000..562e0c3 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/JavaFoldingStructureProviderDescriptor.java @@ -0,0 +1,129 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.text.folding; + +import net.sourceforge.phpdt.ui.text.folding.IJavaFoldingPreferenceBlock; +import net.sourceforge.phpdt.ui.text.folding.IJavaFoldingStructureProvider; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +//incastrix +//import org.eclipse.jface.text.Assert; +import org.eclipse.core.runtime.Assert; +/** + * Describes a contribution to the folding provider extension point. + * + * @since 3.0 + */ +public final class JavaFoldingStructureProviderDescriptor { + + /* extension point attribute names */ + + private static final String PREFERENCES_CLASS = "preferencesClass"; //$NON-NLS-1$ + + private static final String CLASS = "class"; //$NON-NLS-1$ + + private static final String NAME = "name"; //$NON-NLS-1$ + + private static final String ID = "id"; //$NON-NLS-1$ + + /** The identifier of the extension. */ + private String fId; + + /** The name of the extension. */ + private String fName; + + /** The class name of the provided IJavaFoldingStructureProvider. */ + private String fClass; + + /** + * true if the extension specifies a custom + * IJavaFoldingPreferenceBlock. + */ + private boolean fHasPreferences; + + /** The configuration element of this extension. */ + private IConfigurationElement fElement; + + /** + * Creates a new descriptor. + * + * @param element + * the configuration element to read + */ + JavaFoldingStructureProviderDescriptor(IConfigurationElement element) { + fElement = element; + fId = element.getAttributeAsIs(ID); + Assert.isLegal(fId != null); + + fName = element.getAttribute(NAME); + if (fName == null) + fName = fId; + + fClass = element.getAttributeAsIs(CLASS); + Assert.isLegal(fClass != null); + + if (element.getAttributeAsIs(PREFERENCES_CLASS) == null) + fHasPreferences = false; + else + fHasPreferences = true; + } + + /** + * Creates a folding provider as described in the extension's xml. + * + * @return a new instance of the folding provider described by this + * descriptor + * @throws CoreException + * if creation fails + */ + public IJavaFoldingStructureProvider createProvider() throws CoreException { + IJavaFoldingStructureProvider prov = (IJavaFoldingStructureProvider) fElement + .createExecutableExtension(CLASS); + return prov; + } + + /** + * Creates a preferences object as described in the extension's xml. + * + * @return a new instance of the reference provider described by this + * descriptor + * @throws CoreException + * if creation fails + */ + public IJavaFoldingPreferenceBlock createPreferences() throws CoreException { + if (fHasPreferences) { + IJavaFoldingPreferenceBlock prefs = (IJavaFoldingPreferenceBlock) fElement + .createExecutableExtension(PREFERENCES_CLASS); + return prefs; + } else { + return new EmptyJavaFoldingPreferenceBlock(); + } + } + + /** + * Returns the identifier of the described extension. + * + * @return Returns the id + */ + public String getId() { + return fId; + } + + /** + * Returns the name of the described extension. + * + * @return Returns the name + */ + public String getName() { + return fName; + } +}