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;
+ }
+}