*******************************************************************************/
package net.sourceforge.phpdt.core;
-import net.sourceforge.phpeclipse.PHPCore;
/**
* Markers used by the Java model.
* This can be used to recognize those markers in the workspace that flag problems
* detected by the Java tooling during compilation.
*/
- public static final String JAVA_MODEL_PROBLEM_MARKER = PHPCore.PLUGIN_ID + ".problem"; //$NON-NLS-1$
+ public static final String JAVA_MODEL_PROBLEM_MARKER = JavaCore.PLUGIN_ID + ".problem"; //$NON-NLS-1$
/**
* problems detected by the Java tooling (such as a problem
* detected by the outliner, or a problem detected during a code completion)
*/
- public static final String TRANSIENT_PROBLEM = PHPCore.PLUGIN_ID + ".transient_problem"; //$NON-NLS-1$
+ public static final String TRANSIENT_PROBLEM = JavaCore.PLUGIN_ID + ".transient_problem"; //$NON-NLS-1$
/**
* Java model task marker type (value <code>"org.eclipse.jdt.core.task"</code>).
* option <code>"org.eclipse.jdt.core.compiler.taskTag"</code>.
* @since 2.1
*/
- public static final String TASK_MARKER = PHPCore.PLUGIN_ID + ".task"; //$NON-NLS-1$
+ public static final String TASK_MARKER = JavaCore.PLUGIN_ID + ".task"; //$NON-NLS-1$
/**
* This can be used to recognize those markers in the workspace that flag problems
* detected by the Java tooling during classpath setting.
*/
- public static final String BUILDPATH_PROBLEM_MARKER = PHPCore.PLUGIN_ID + ".buildpath_problem"; //$NON-NLS-1$
+ public static final String BUILDPATH_PROBLEM_MARKER = JavaCore.PLUGIN_ID + ".buildpath_problem"; //$NON-NLS-1$
/**
* Classpath file format marker attribute (value <code>"classpathFileFormat"</code>).
-/*******************************************************************************
- * 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
- * IBM Corporation - added the following constants:
- * COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE
- * COMPILER_PB_STATIC_ACCESS_RECEIVER
- * COMPILER_TASK_TAGS
- * CORE_CIRCULAR_CLASSPATH
- * CORE_INCOMPLETE_CLASSPATH
- * IBM Corporation - added run(IWorkspaceRunnable, IProgressMonitor)
- * IBM Corporation - added exclusion patterns to source classpath entries
- * IBM Corporation - added specific output location to source classpath entries
- * IBM Corporation - added the following constants:
- * CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER
- * CLEAN
- * IBM Corporation - added getClasspathContainerInitializer(String)
- * IBM Corporation - added the following constants:
- * CODEASSIST_ARGUMENT_PREFIXES
- * CODEASSIST_ARGUMENT_SUFFIXES
- * CODEASSIST_FIELD_PREFIXES
- * CODEASSIST_FIELD_SUFFIXES
- * CODEASSIST_LOCAL_PREFIXES
- * CODEASSIST_LOCAL_SUFFIXES
- * CODEASSIST_STATIC_FIELD_PREFIXES
- * CODEASSIST_STATIC_FIELD_SUFFIXES
- * COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION
- *******************************************************************************/
package net.sourceforge.phpdt.core;
+import java.io.File;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import net.sourceforge.phpdt.internal.core.BatchOperation;
import net.sourceforge.phpdt.internal.core.BufferManager;
+import net.sourceforge.phpdt.internal.core.ClasspathEntry;
import net.sourceforge.phpdt.internal.core.JavaModel;
import net.sourceforge.phpdt.internal.core.JavaModelManager;
import net.sourceforge.phpdt.internal.core.Region;
+import net.sourceforge.phpdt.internal.corext.Assert;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences;
+public class JavaCore {
+
+// public static HashSet OptionNames = new HashSet(20);
+ /**
+ * The plug-in identifier of the Java core support
+ * (value <code>"org.phpeclipse.phpdt.core"</code>).
+ */
+// public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.core"; //$NON-NLS-1$
+ public static final String PLUGIN_ID = PHPeclipsePlugin.PLUGIN_ID;
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String INSERT = "insert"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String NORMAL = "normal"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPACT = "compact"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String TAB = "tab"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String SPACE = "space"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String ENABLED = "enabled"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String DISABLED = "disabled"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CLEAN = "clean"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_TASK_TAGS = PLUGIN_ID + ".compiler.taskTags"; //$NON-NLS-1$
+
+ /**
+ * Name of the handle id attribute in a Java marker.
+ */
+ protected static final String ATT_HANDLE_ID =
+ "net.sourceforge.phpdt.internal.core.JavaModelManager.handleId" ; //$NON-NLS-1$
+
+ // *************** Possible IDs for configurable options. ********************
+
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions()
+ */
+ public static final String COMPILER_LOCAL_VARIABLE_ATTR = PLUGIN_ID + ".compiler.debug.localVariable"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions()
+ */
+ public static final String COMPILER_LINE_NUMBER_ATTR = PLUGIN_ID + ".compiler.debug.lineNumber"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_SOURCE_FILE_ATTR = PLUGIN_ID + ".compiler.debug.sourceFile"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_CODEGEN_UNUSED_LOCAL = PLUGIN_ID + ".compiler.codegen.unusedLocal"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_CODEGEN_TARGET_PLATFORM = PLUGIN_ID + ".compiler.codegen.targetPlatform"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_INVALID_IMPORT = PLUGIN_ID + ".compiler.problem.invalidImport"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD = PLUGIN_ID + ".compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME = PLUGIN_ID + ".compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_HIDDEN_CATCH_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT = PLUGIN_ID + ".compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE = PLUGIN_ID + ".compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_PB_UNUSED_IMPORT = PLUGIN_ID + ".compiler.problem.unusedImport"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPILER_PB_SYNTHETIC_ACCESS_EMULATION = PLUGIN_ID + ".compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_PB_NON_NLS_STRING_LITERAL = PLUGIN_ID + ".compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_PB_ASSERT_IDENTIFIER = PLUGIN_ID + ".compiler.problem.assertIdentifier"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_STATIC_ACCESS_RECEIVER = PLUGIN_ID + ".compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_NO_EFFECT_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.noEffectAssignment"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD = PLUGIN_ID + ".compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION = PLUGIN_ID + ".compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_PB_MAX_PER_UNIT = PLUGIN_ID + ".compiler.maxProblemPerUnit"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_SOURCE = PLUGIN_ID + ".compiler.source"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_TASK_PRIORITIES = PLUGIN_ID + ".compiler.taskPriorities"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value for COMPILER_TASK_PRIORITIES.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_TASK_PRIORITY_HIGH = "HIGH"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value for COMPILER_TASK_PRIORITIES.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_TASK_PRIORITY_LOW = "LOW"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value for COMPILER_TASK_PRIORITIES.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String COMPILER_TASK_PRIORITY_NORMAL = "NORMAL"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ */
+ public static final String CORE_JAVA_BUILD_ORDER = PLUGIN_ID + ".computeJavaBuildOrder"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CORE_JAVA_BUILD_RESOURCE_COPY_FILTER = PLUGIN_ID + ".builder.resourceCopyExclusionFilter"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_JAVA_BUILD_DUPLICATE_RESOURCE = PLUGIN_ID + ".builder.duplicateResourceTask"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.cleanOutputFolder"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_INCOMPLETE_CLASSPATH = PLUGIN_ID + ".incompleteClasspath"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_CIRCULAR_CLASSPATH = PLUGIN_ID + ".circularClasspath"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CORE_JAVA_BUILD_INVALID_CLASSPATH = PLUGIN_ID + ".builder.invalidClasspath"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS = PLUGIN_ID + ".classpath.exclusionPatterns"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS = PLUGIN_ID + ".classpath.multipleOutputLocations"; //$NON-NLS-1$
+ /**
+ * Default task tag
+ * @since 2.1
+ */
+ public static final String DEFAULT_TASK_TAG = "TODO"; //$NON-NLS-1$
+ /**
+ * Default task priority
+ * @since 2.1
+ */
+ public static final String DEFAULT_TASK_PRIORITY = "NORMAL"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String FORMATTER_SPACE_CASTEXPRESSION = PLUGIN_ID + ".formatter.space.castexpression"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CODEASSIST_VISIBILITY_CHECK = PLUGIN_ID + ".codeComplete.visibilityCheck"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CODEASSIST_IMPLICIT_QUALIFICATION = PLUGIN_ID + ".codeComplete.forceImplicitQualification"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.fieldPrefixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_STATIC_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.staticFieldPrefixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_LOCAL_PREFIXES = PLUGIN_ID + ".codeComplete.localPrefixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_ARGUMENT_PREFIXES = PLUGIN_ID + ".codeComplete.argumentPrefixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.fieldSuffixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_STATIC_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.staticFieldSuffixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_LOCAL_SUFFIXES = PLUGIN_ID + ".codeComplete.localSuffixes"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CODEASSIST_ARGUMENT_SUFFIXES = PLUGIN_ID + ".codeComplete.argumentSuffixes"; //$NON-NLS-1$
+
+ // *************** Possible values for configurable options. ********************
+
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String GENERATE = "generate"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String PRESERVE = "preserve"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String ABORT = "abort"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String ERROR = "error"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String WARNING = "warning"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String IGNORE = "ignore"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ */
+ public static final String COMPUTE = "compute"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+
+
+ /**
+ * Returns a table of all known configurable options with their default values.
+ * These options allow to configure the behaviour of the underlying components.
+ * The client may safely use the result as a template that they can modify and
+ * then pass to <code>setOptions</code>.
+ *
+ * Helper constants have been defined on JavaCore for each of the option ID and
+ * their possible constant values.
+ *
+ * Note: more options might be added in further releases.
+ * <pre>
+ * RECOGNIZED OPTIONS:
+ * COMPILER / Generating Local Variable Debug Attribute
+ * When generated, this attribute will enable local variable names
+ * to be displayed in debugger, only in place where variables are
+ * definitely assigned (.class file is then bigger)
+ * - option id: "org.phpeclipse.phpdt.core.compiler.debug.localVariable"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Generating Line Number Debug Attribute
+ * When generated, this attribute will enable source code highlighting in debugger
+ * (.class file is then bigger).
+ * - option id: "org.phpeclipse.phpdt.core.compiler.debug.lineNumber"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Generating Source Debug Attribute
+ * When generated, this attribute will enable the debugger to present the
+ * corresponding source code.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.debug.sourceFile"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Preserving Unused Local Variables
+ * Unless requested to preserve unused local variables (i.e. never read), the
+ * compiler will optimize them out, potentially altering debugging
+ * - option id: "org.phpeclipse.phpdt.core.compiler.codegen.unusedLocal"
+ * - possible values: { "preserve", "optimize out" }
+ * - default: "preserve"
+ *
+ * COMPILER / Defining Target Java Platform
+ * For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
+ * Note that "1.4" target require to toggle compliance mode to "1.4" too.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.codegen.targetPlatform"
+ * - possible values: { "1.1", "1.2", "1.3", "1.4" }
+ * - default: "1.1"
+ *
+ * COMPILER / Reporting Unreachable Code
+ * Unreachable code can optionally be reported as an error, warning or simply
+ * ignored. The bytecode generation will always optimized it out.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unreachableCode"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "error"
+ *
+ * COMPILER / Reporting Invalid Import
+ * An import statement that cannot be resolved might optionally be reported
+ * as an error, as a warning or ignored.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.invalidImport"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "error"
+ *
+ * COMPILER / Reporting Attempt to Override Package-Default Method
+ * A package default method is not visible in a different package, and thus
+ * cannot be overridden. When enabling this option, the compiler will signal
+ * such scenarii either as an error or a warning.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.overridingPackageDefaultMethod"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Method With Constructor Name
+ * Naming a method with a constructor name is generally considered poor
+ * style programming. When enabling this option, the compiler will signal such
+ * scenarii either as an error or a warning.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.methodWithConstructorName"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Deprecation
+ * When enabled, the compiler will signal use of deprecated API either as an
+ * error or a warning.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.deprecation"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Deprecation Inside Deprecated Code
+ * When enabled, the compiler will signal use of deprecated API inside deprecated code.
+ * The severity of the problem is controlled with option "org.phpeclipse.phpdt.core.compiler.problem.deprecation".
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.deprecationInDeprecatedCode"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * COMPILER / Reporting Hidden Catch Block
+ * Locally to a try statement, some catch blocks may hide others , e.g.
+ * try { throw new java.io.CharConversionException();
+ * } catch (java.io.CharConversionException e) {
+ * } catch (java.io.IOException e) {}.
+ * When enabling this option, the compiler will issue an error or a warning for hidden
+ * catch blocks corresponding to checked exceptions
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.hiddenCatchBlock"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Unused Local
+ * When enabled, the compiler will issue an error or a warning for unused local
+ * variables (i.e. variables never read from)
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedLocal"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Unused Parameter
+ * When enabled, the compiler will issue an error or a warning for unused method
+ * parameters (i.e. parameters never read from)
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedParameter"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Unused Import
+ * When enabled, the compiler will issue an error or a warning for unused import
+ * reference
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedImport"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Synthetic Access Emulation
+ * When enabled, the compiler will issue an error or a warning whenever it emulates
+ * access to a non-accessible member of an enclosing type. Such access can have
+ * performance implications.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.syntheticAccessEmulation"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Non-Externalized String Literal
+ * When enabled, the compiler will issue an error or a warning for non externalized
+ * String literal (i.e. non tagged with //$NON-NLS-<n>$).
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.nonExternalizedStringLiteral"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Usage of 'assert' Identifier
+ * When enabled, the compiler will issue an error or a warning whenever 'assert' is
+ * used as an identifier (reserved keyword in 1.4)
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.assertIdentifier"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Usage of expression receiver on static invocation/field access
+ * When enabled, the compiler will issue an error or a warning whenever a static field
+ * or method is accessed with an expression receiver.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.staticAccessReceiver"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Assignment with no effect
+ * When enabled, the compiler will issue an error or a warning whenever an assignment
+ * has no effect (e.g 'x = x').
+ * - option id: "org.phpeclipse.phpdt.core.compiler.problem.noEffectAssignment"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Setting Source Compatibility Mode
+ * Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword
+ * reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
+ * level should be set to "1.4" and the compliance mode should be "1.4".
+ * - option id: "org.phpeclipse.phpdt.core.compiler.source"
+ * - possible values: { "1.3", "1.4" }
+ * - default: "1.3"
+ *
+ * COMPILER / Setting Compliance Level
+ * Select the compliance level for the compiler. In "1.3" mode, source and target settings
+ * should not go beyond "1.3" level.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.compliance"
+ * - possible values: { "1.3", "1.4" }
+ * - default: "1.3"
+ *
+ * COMPILER / Maximum number of problems reported per compilation unit
+ * Specify the maximum number of problems reported on each compilation unit.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.maxProblemPerUnit"
+ * - possible values: "<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
+ * - default: "100"
+ *
+ * COMPILER / Define the Automatic Task Tags
+ * When the tag is non empty, the compiler will issue a task marker whenever it encounters
+ * one of the corresponding tag inside any comment in Java source code.
+ * Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
+ * - option id: "org.phpeclipse.phpdt.core.compiler.taskTags"
+ * - possible values: { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card
+ * - default: ""
+ * COMPILER / Define the Automatic Task Priorities
+ * In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
+ * of the task markers issued by the compiler.
+ * If the default is specified, the priority of each task marker is "NORMAL".
+ * - option id: "org.phpeclipse.phpdt.core.compiler.taskPriorities"
+ * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW"
+ * - default: ""
+ *
+ * BUILDER / Specifying Filters for Resource Copying Control
+ * Allow to specify some filters to control the resource copy process.
+ * - option id: "org.phpeclipse.phpdt.core.builder.resourceCopyExclusionFilter"
+ * - possible values: { "<name>[,<name>]* } where <name> is a file name pattern (* and ? wild-cards allowed)
+ * or the name of a folder which ends with '/'
+ * - default: ""
+ *
+ * BUILDER / Abort if Invalid Classpath
+ * Allow to toggle the builder to abort if the classpath is invalid
+ * - option id: "org.phpeclipse.phpdt.core.builder.invalidClasspath"
+ * - possible values: { "abort", "ignore" }
+ * - default: "ignore"
+ *
+ * BUILDER / Cleaning Output Folder(s)
+ * Indicate whether the JavaBuilder is allowed to clean the output folders
+ * when performing full build operations.
+ * - option id: "org.phpeclipse.phpdt.core.builder.cleanOutputFolder"
+ * - possible values: { "clean", "ignore" }
+ * - default: "clean"
+ *
+ * JAVACORE / Computing Project Build Order
+ * Indicate whether JavaCore should enforce the project build order to be based on
+ * the classpath prerequisite chain. When requesting to compute, this takes over
+ * the platform default order (based on project references).
+ * - option id: "org.phpeclipse.phpdt.core.computeJavaBuildOrder"
+ * - possible values: { "compute", "ignore" }
+ * - default: "ignore"
+ *
+ * JAVACORE / Specify Default Source Encoding Format
+ * Get the encoding format for compiled sources. This setting is read-only, it is equivalent
+ * to 'ResourcesPlugin.getEncoding()'.
+ * - option id: "org.phpeclipse.phpdt.core.encoding"
+ * - possible values: { any of the supported encoding name}.
+ * - default: <platform default>
+ *
+ * JAVACORE / Reporting Incomplete Classpath
+ * An entry on the classpath doesn't exist or is not visible (e.g. a referenced project is closed).
+ * - option id: "org.phpeclipse.phpdt.core.incompleteClasspath"
+ * - possible values: { "error", "warning"}
+ * - default: "error"
+ *
+ * JAVACORE / Reporting Classpath Cycle
+ * A project is involved in a cycle.
+ * - option id: "org.phpeclipse.phpdt.core.circularClasspath"
+ * - possible values: { "error", "warning" }
+ * - default: "error"
+ *
+ * FORMATTER / Inserting New Line Before Opening Brace
+ * When Insert, a new line is inserted before an opening brace, otherwise nothing
+ * is inserted
+ * - option id: "org.phpeclipse.phpdt.core.formatter.newline.openingBrace"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Inserting New Line Inside Control Statement
+ * When Insert, a new line is inserted between } and following else, catch, finally
+ * - option id: "org.phpeclipse.phpdt.core.formatter.newline.controlStatement"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Clearing Blank Lines
+ * When Clear all, all blank lines are removed. When Preserve one, only one is kept
+ * and all others removed.
+ * - option id: "org.phpeclipse.phpdt.core.formatter.newline.clearAll"
+ * - possible values: { "clear all", "preserve one" }
+ * - default: "preserve one"
+ *
+ * FORMATTER / Inserting New Line Between Else/If
+ * When Insert, a blank line is inserted between an else and an if when they are
+ * contiguous. When choosing to not insert, else-if will be kept on the same
+ * line when possible.
+ * - option id: "org.phpeclipse.phpdt.core.formatter.newline.elseIf"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Inserting New Line In Empty Block
+ * When insert, a line break is inserted between contiguous { and }, if } is not followed
+ * by a keyword.
+ * - option id: "org.phpeclipse.phpdt.core.formatter.newline.emptyBlock"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "insert"
+ *
+ * FORMATTER / Splitting Lines Exceeding Length
+ * Enable splitting of long lines (exceeding the configurable length). Length of 0 will
+ * disable line splitting
+ * - option id: "org.phpeclipse.phpdt.core.formatter.lineSplit"
+ * - possible values: "<n>", where n is zero or a positive integer
+ * - default: "80"
+ *
+ * FORMATTER / Compacting Assignment
+ * Assignments can be formatted asymmetrically, e.g. 'int x= 2;', when Normal, a space
+ * is inserted before the assignment operator
+ * - option id: "org.phpeclipse.phpdt.core.formatter.style.assignment"
+ * - possible values: { "compact", "normal" }
+ * - default: "normal"
+ *
+ * FORMATTER / Defining Indentation Character
+ * Either choose to indent with tab characters or spaces
+ * - option id: "org.phpeclipse.phpdt.core.formatter.tabulation.char"
+ * - possible values: { "tab", "space" }
+ * - default: "tab"
+ *
+ * FORMATTER / Defining Space Indentation Length
+ * When using spaces, set the amount of space characters to use for each
+ * indentation mark.
+ * - option id: "org.phpeclipse.phpdt.core.formatter.tabulation.size"
+ * - possible values: "<n>", where n is a positive integer
+ * - default: "4"
+ *
+ * CODEASSIST / Activate Visibility Sensitive Completion
+ * When active, completion doesn't show that you can not see
+ * (e.g. you can not see private methods of a super class).
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.visibilityCheck"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * CODEASSIST / Automatic Qualification of Implicit Members
+ * When active, completion automatically qualifies completion on implicit
+ * field references and message expressions.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.forceImplicitQualification"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * CODEASSIST / Define the Prefixes for Field Name
+ * When the prefixes is non empty, completion for field name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.fieldPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Static Field Name
+ * When the prefixes is non empty, completion for static field name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.staticFieldPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Local Variable Name
+ * When the prefixes is non empty, completion for local variable name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.localPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Argument Name
+ * When the prefixes is non empty, completion for argument name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.argumentPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Field Name
+ * When the suffixes is non empty, completion for field name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.fieldSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Static Field Name
+ * When the suffixes is non empty, completion for static field name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.staticFieldSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Local Variable Name
+ * When the suffixes is non empty, completion for local variable name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.localSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Argument Name
+ * When the suffixes is non empty, completion for argument name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.phpeclipse.phpdt.core.codeComplete.argumentSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ * </pre>
+ *
+ * @return a mutable table containing the default settings of all known options
+ * (key type: <code>String</code>; value type: <code>String</code>)
+ * @see #setOptions
+ */
+// public static Hashtable getDefaultOptions() {
+//
+// Hashtable defaultOptions = new Hashtable(10);
+//
+// // see #initializeDefaultPluginPreferences() for changing default settings
+// Preferences preferences = getPlugin().getPluginPreferences();
+// HashSet optionNames = OptionNames;
+//
+// // get preferences set to their default
+// String[] defaultPropertyNames = preferences.defaultPropertyNames();
+// for (int i = 0; i < defaultPropertyNames.length; i++) {
+// String propertyName = defaultPropertyNames[i];
+// if (optionNames.contains(propertyName)) {
+// defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+// }
+// }
+// // get preferences not set to their default
+// String[] propertyNames = preferences.propertyNames();
+// for (int i = 0; i < propertyNames.length; i++) {
+// String propertyName = propertyNames[i];
+// if (optionNames.contains(propertyName)) {
+// defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+// }
+// }
+// // get encoding through resource plugin
+// defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
+//
+// return defaultOptions;
+// }
+ /**
+ * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
+ * Note that it may answer <code>null</code> if this option does not exist.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @param optionName the name of an option
+ * @return the String value of a given option
+ * @see JavaCore#getDefaultOptions
+ * @since 2.0
+ */
+// public static String getOption(String optionName) {
+//
+// if (CORE_ENCODING.equals(optionName)) {
+// return ResourcesPlugin.getEncoding();
+// }
+// if (OptionNames.contains(optionName)) {
+// Preferences preferences = getPlugin().getPluginPreferences();
+// return preferences.getString(optionName).trim();
+// }
+// return null;
+// }
+
+ /**
+ * Returns the table of the current options. Initially, all options have their default values,
+ * and this method returns a table that includes all known options.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @return table of current settings of all options
+ * (key type: <code>String</code>; value type: <code>String</code>)
+ * @see JavaCore#getDefaultOptions
+ */
+// public static Hashtable getOptions() {
+//
+// Hashtable options = new Hashtable(10);
+//
+// // see #initializeDefaultPluginPreferences() for changing default settings
+// Plugin plugin = getPlugin();
+// if (plugin != null) {
+// Preferences preferences = getPlugin().getPluginPreferences();
+// HashSet optionNames = OptionNames;
+//
+// // get preferences set to their default
+// String[] defaultPropertyNames = preferences.defaultPropertyNames();
+// for (int i = 0; i < defaultPropertyNames.length; i++) {
+// String propertyName = defaultPropertyNames[i];
+// if (optionNames.contains(propertyName)) {
+// options.put(propertyName, preferences.getDefaultString(propertyName));
+// }
+// }
+// // get preferences not set to their default
+// String[] propertyNames = preferences.propertyNames();
+// for (int i = 0; i < propertyNames.length; i++) {
+// String propertyName = propertyNames[i];
+// if (optionNames.contains(propertyName)) {
+// options.put(propertyName, preferences.getString(propertyName).trim());
+// }
+// }
+// // get encoding through resource plugin
+// options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
+// }
+// return options;
+// }
+ /**
+ * Sets the current table of options. All and only the options explicitly included in the given table
+ * are remembered; all previous option settings are forgotten, including ones not explicitly
+ * mentioned.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
+ * or <code>null</code> to reset all options to their default values
+ * @see JavaCore#getDefaultOptions
+ */
+// public static void setOptions(Hashtable newOptions) {
+//
+// // see #initializeDefaultPluginPreferences() for changing default settings
+// Preferences preferences = getPlugin().getPluginPreferences();
+//
+// if (newOptions == null) {
+// newOptions = getDefaultOptions();
+// }
+// Enumeration keys = newOptions.keys();
+// while (keys.hasMoreElements()) {
+// String key = (String) keys.nextElement();
+// if (!OptionNames.contains(key))
+// continue; // unrecognized option
+// if (key.equals(CORE_ENCODING))
+// continue; // skipped, contributed by resource prefs
+// String value = (String) newOptions.get(key);
+// preferences.setValue(key, value);
+// }
+//
+// // persist options
+// getPlugin().savePluginPreferences();
+// }
+ public static IProject[] getPHPProjects() {
+ List phpProjectsList = new ArrayList();
+ IProject[] workspaceProjects = PHPeclipsePlugin.getWorkspace().getRoot().getProjects();
+
+ for (int i = 0; i < workspaceProjects.length; i++) {
+ IProject iProject = workspaceProjects[i];
+ if (isPHPProject(iProject))
+ phpProjectsList.add(iProject);
+ }
+
+ IProject[] phpProjects = new IProject[phpProjectsList.size()];
+ return (IProject[]) phpProjectsList.toArray(phpProjects);
+ }
+
+// public static PHPProject getPHPProject(String name) {
+// IProject aProject = PHPeclipsePlugin.getWorkspace().getRoot().getProject(name);
+// if (isPHPProject(aProject)) {
+// PHPProject thePHPProject = new PHPProject();
+// thePHPProject.setProject(aProject);
+// return thePHPProject;
+// }
+// return null;
+// }
+
+ public static boolean isPHPProject(IProject aProject) {
+ try {
+ return aProject.hasNature(PHPeclipsePlugin.PHP_NATURE_ID);
+ } catch (CoreException e) {
+ }
+
+ return false;
+ }
+
+// public static PHPFile create(IFile aFile) {
+// if (PHPFile.EXTENSION.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+// if (PHPFile.EXTENSION1.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+// if (PHPFile.EXTENSION2.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+// if (PHPFile.EXTENSION3.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+// if (PHPFile.EXTENSION4.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+// if (PHPFile.EXTENSION5.equalsIgnoreCase(aFile.getFileExtension()))
+// return new PHPFile(aFile);
+//
+// return null;
+// }
+
+// public static PHPProject create(IProject aProject) {
+//
+// try {
+// if (aProject.hasNature(PHPeclipsePlugin.PHP_NATURE_ID)) {
+// PHPProject project = new PHPProject();
+// project.setProject(aProject);
+// return project;
+// }
+// } catch (CoreException e) {
+// System.err.println("Exception occurred in PHPCore#create(IProject): " + e.toString());
+// }
+//
+// return null;
+// }
+
+ public static void addPHPNature(IProject project, IProgressMonitor monitor) throws CoreException {
+ if (!project.hasNature(PHPeclipsePlugin.PHP_NATURE_ID)) {
+ IProjectDescription description = project.getDescription();
+ String[] prevNatures = description.getNatureIds();
+ String[] newNatures = new String[prevNatures.length + 1];
+ System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
+ newNatures[prevNatures.length] = PHPeclipsePlugin.PHP_NATURE_ID;
+ description.setNatureIds(newNatures);
+ project.setDescription(description, monitor);
+ }
+ }
+
+ /**
+ * Returns the single instance of the PHP core plug-in runtime class.
+ *
+ * @return the single instance of the PHP core plug-in runtime class
+ */
+ public static Plugin getPlugin() {
+ return PHPeclipsePlugin.getDefault();
+ }
+
+ /**
+ * Initializes the default preferences settings for this plug-in.
+ */
+
+ /**
+ * Runs the given action as an atomic Java model operation.
+ * <p>
+ * After running a method that modifies Java elements,
+ * registered listeners receive after-the-fact notification of
+ * what just transpired, in the form of a element changed event.
+ * This method allows clients to call a number of
+ * methods that modify java elements and only have element
+ * changed event notifications reported at the end of the entire
+ * batch.
+ * </p>
+ * <p>
+ * If this method is called outside the dynamic scope of another such
+ * call, this method runs the action and then reports a single
+ * element changed event describing the net effect of all changes
+ * done to java elements by the action.
+ * </p>
+ * <p>
+ * If this method is called in the dynamic scope of another such
+ * call, this method simply runs the action.
+ * </p>
+ *
+ * @param action the action to perform
+ * @param monitor a progress monitor, or <code>null</code> if progress
+ * reporting and cancellation are not desired
+ * @exception CoreException if the operation failed.
+ * @since 2.1
+ */
+ public static void run(IWorkspaceRunnable action, IProgressMonitor monitor) throws CoreException {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ if (workspace.isTreeLocked()) {
+ new BatchOperation(action).run(monitor);
+ } else {
+ // use IWorkspace.run(...) to ensure that a build will be done in autobuild mode
+ workspace.run(new BatchOperation(action), monitor);
+ }
+ }
+
+/**
+ * Adds the given listener for changes to Java elements.
+ * Has no effect if an identical listener is already registered.
+ *
+ * This listener will only be notified during the POST_CHANGE resource change notification
+ * and any reconcile operation (POST_RECONCILE).
+ * For finer control of the notification, use <code>addElementChangedListener(IElementChangedListener,int)</code>,
+ * which allows to specify a different eventMask.
+ *
+ * @see ElementChangedEvent
+ * @param listener the listener
+ */
+public static void addElementChangedListener(IElementChangedListener listener) {
+ addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE | ElementChangedEvent.POST_RECONCILE);
+}
/**
- * The plug-in runtime class for the Java model plug-in containing the core
- * (UI-free) support for Java projects.
+ * Adds the given listener for changes to Java elements.
+ * Has no effect if an identical listener is already registered.
+ * After completion of this method, the given listener will be registered for exactly
+ * the specified events. If they were previously registered for other events, they
+ * will be deregistered.
* <p>
- * Like all plug-in runtime classes (subclasses of <code>Plugin</code>), this
- * class is automatically instantiated by the platform when the plug-in gets
- * activated. Clients must not attempt to instantiate plug-in runtime classes
- * directly.
+ * Once registered, a listener starts receiving notification of changes to
+ * java elements in the model. The listener continues to receive
+ * notifications until it is replaced or removed.
* </p>
* <p>
- * The single instance of this class can be accessed from any plug-in declaring
- * the Java model plug-in as a prerequisite via
- * <code>JavaCore.getJavaCore()</code>. The Java model plug-in will be activated
- * automatically if not already active.
+ * Listeners can listen for several types of event as defined in <code>ElementChangeEvent</code>.
+ * Clients are free to register for any number of event types however if they register
+ * for more than one, it is their responsibility to ensure they correctly handle the
+ * case where the same java element change shows up in multiple notifications.
+ * Clients are guaranteed to receive only the events for which they are registered.
* </p>
+ *
+ * @param listener the listener
+ * @param eventMask the bit-wise OR of all event types of interest to the listener
+ * @see IElementChangedListener
+ * @see ElementChangedEvent
+ * @see #removeElementChangedListener(IElementChangedListener)
+ * @since 2.0
*/
-public final class JavaCore extends Plugin implements IExecutableExtension {
-
- private static Plugin JAVA_CORE_PLUGIN = null;
- /**
- * The plug-in identifier of the Java core support
- * (value <code>"org.eclipse.jdt.core"</code>).
- */
- public static final String PLUGIN_ID = "org.eclipse.jdt.core" ; //$NON-NLS-1$
-
- /**
- * The identifier for the Java builder
- * (value <code>"org.eclipse.jdt.core.javabuilder"</code>).
- */
- public static final String BUILDER_ID = PLUGIN_ID + ".javabuilder" ; //$NON-NLS-1$
-
- /**
- * The identifier for the Java model
- * (value <code>"org.eclipse.jdt.core.javamodel"</code>).
- */
- public static final String MODEL_ID = PLUGIN_ID + ".javamodel" ; //$NON-NLS-1$
-
- /**
- * The identifier for the Java nature
- * (value <code>"org.eclipse.jdt.core.javanature"</code>).
- * The presence of this nature on a project indicates that it is
- * Java-capable.
- *
- * @see org.eclipse.core.resources.IProject#hasNature(java.lang.String)
- */
- public static final String NATURE_ID = PLUGIN_ID + ".javanature" ; //$NON-NLS-1$
-
- /**
- * Name of the handle id attribute in a Java marker.
- */
- protected static final String ATT_HANDLE_ID =
- "org.eclipse.jdt.internal.core.JavaModelManager.handleId" ; //$NON-NLS-1$
-
- // *************** Possible IDs for configurable options. ********************
-
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_LOCAL_VARIABLE_ATTR = PLUGIN_ID + ".compiler.debug.localVariable"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_LINE_NUMBER_ATTR = PLUGIN_ID + ".compiler.debug.lineNumber"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_SOURCE_FILE_ATTR = PLUGIN_ID + ".compiler.debug.sourceFile"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_CODEGEN_UNUSED_LOCAL = PLUGIN_ID + ".compiler.codegen.unusedLocal"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_CODEGEN_TARGET_PLATFORM = PLUGIN_ID + ".compiler.codegen.targetPlatform"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_INVALID_IMPORT = PLUGIN_ID + ".compiler.problem.invalidImport"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD = PLUGIN_ID + ".compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME = PLUGIN_ID + ".compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_HIDDEN_CATCH_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT = PLUGIN_ID + ".compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE = PLUGIN_ID + ".compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_UNUSED_IMPORT = PLUGIN_ID + ".compiler.problem.unusedImport"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_SYNTHETIC_ACCESS_EMULATION = PLUGIN_ID + ".compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_NON_NLS_STRING_LITERAL = PLUGIN_ID + ".compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_ASSERT_IDENTIFIER = PLUGIN_ID + ".compiler.problem.assertIdentifier"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_STATIC_ACCESS_RECEIVER = PLUGIN_ID + ".compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_NO_EFFECT_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.noEffectAssignment"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD = PLUGIN_ID + ".compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION = PLUGIN_ID + ".compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_MAX_PER_UNIT = PLUGIN_ID + ".compiler.maxProblemPerUnit"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_SOURCE = PLUGIN_ID + ".compiler.source"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITIES = PLUGIN_ID + ".compiler.taskPriorities"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_HIGH = "HIGH"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_LOW = "LOW"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_NORMAL = "NORMAL"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_TAGS = PLUGIN_ID + ".compiler.taskTags"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String CORE_JAVA_BUILD_ORDER = PLUGIN_ID + ".computeJavaBuildOrder"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_JAVA_BUILD_RESOURCE_COPY_FILTER = PLUGIN_ID + ".builder.resourceCopyExclusionFilter"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_JAVA_BUILD_DUPLICATE_RESOURCE = PLUGIN_ID + ".builder.duplicateResourceTask"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.cleanOutputFolder"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_INCOMPLETE_CLASSPATH = PLUGIN_ID + ".incompleteClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_CIRCULAR_CLASSPATH = PLUGIN_ID + ".circularClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_JAVA_BUILD_INVALID_CLASSPATH = PLUGIN_ID + ".builder.invalidClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS = PLUGIN_ID + ".classpath.exclusionPatterns"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS = PLUGIN_ID + ".classpath.multipleOutputLocations"; //$NON-NLS-1$
- /**
- * Default task tag
- * @since 2.1
- */
- public static final String DEFAULT_TASK_TAG = "TODO"; //$NON-NLS-1$
- /**
- * Default task priority
- * @since 2.1
- */
- public static final String DEFAULT_TASK_PRIORITY = "NORMAL"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
- /**
- * Possible configurable option ID
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String FORMATTER_SPACE_CASTEXPRESSION = PLUGIN_ID + ".formatter.space.castexpression"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CODEASSIST_VISIBILITY_CHECK = PLUGIN_ID + ".codeComplete.visibilityCheck"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CODEASSIST_IMPLICIT_QUALIFICATION = PLUGIN_ID + ".codeComplete.forceImplicitQualification"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.fieldPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_STATIC_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.staticFieldPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_LOCAL_PREFIXES = PLUGIN_ID + ".codeComplete.localPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_ARGUMENT_PREFIXES = PLUGIN_ID + ".codeComplete.argumentPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.fieldSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_STATIC_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.staticFieldSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_LOCAL_SUFFIXES = PLUGIN_ID + ".codeComplete.localSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_ARGUMENT_SUFFIXES = PLUGIN_ID + ".codeComplete.argumentSuffixes"; //$NON-NLS-1$
-
- // *************** Possible values for configurable options. ********************
-
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String GENERATE = "generate"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String PRESERVE = "preserve"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String ABORT = "abort"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String ERROR = "error"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String WARNING = "warning"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String IGNORE = "ignore"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String COMPUTE = "compute"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String INSERT = "insert"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String NORMAL = "normal"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPACT = "compact"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String TAB = "tab"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String SPACE = "space"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String ENABLED = "enabled"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String DISABLED = "disabled"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CLEAN = "clean"; //$NON-NLS-1$
-
- /**
- * Creates the Java core plug-in.
- * @since 2.1
- */
- public JavaCore(IPluginDescriptor pluginDescriptor) {
- super(pluginDescriptor);
- JAVA_CORE_PLUGIN = this;
- }
+public static void addElementChangedListener(IElementChangedListener listener, int eventMask) {
+ JavaModelManager.getJavaModelManager().addElementChangedListener(listener, eventMask);
+}
- /**
- * Adds the given listener for changes to Java elements.
- * Has no effect if an identical listener is already registered.
- *
- * This listener will only be notified during the POST_CHANGE resource change notification
- * and any reconcile operation (POST_RECONCILE).
- * For finer control of the notification, use <code>addElementChangedListener(IElementChangedListener,int)</code>,
- * which allows to specify a different eventMask.
- *
- * @see ElementChangedEvent
- * @param listener the listener
- */
- public static void addElementChangedListener(IElementChangedListener listener) {
- addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE | ElementChangedEvent.POST_RECONCILE);
- }
-
- /**
- * Adds the given listener for changes to Java elements.
- * Has no effect if an identical listener is already registered.
- * After completion of this method, the given listener will be registered for exactly
- * the specified events. If they were previously registered for other events, they
- * will be deregistered.
- * <p>
- * Once registered, a listener starts receiving notification of changes to
- * java elements in the model. The listener continues to receive
- * notifications until it is replaced or removed.
- * </p>
- * <p>
- * Listeners can listen for several types of event as defined in <code>ElementChangeEvent</code>.
- * Clients are free to register for any number of event types however if they register
- * for more than one, it is their responsibility to ensure they correctly handle the
- * case where the same java element change shows up in multiple notifications.
- * Clients are guaranteed to receive only the events for which they are registered.
- * </p>
- *
- * @param listener the listener
- * @param eventMask the bit-wise OR of all event types of interest to the listener
- * @see IElementChangedListener
- * @see ElementChangedEvent
- * @see #removeElementChangedListener(IElementChangedListener)
- * @since 2.0
- */
- public static void addElementChangedListener(IElementChangedListener listener, int eventMask) {
- JavaModelManager.getJavaModelManager().addElementChangedListener(listener, eventMask);
- }
-
- /**
- * Configures the given marker attribute map for the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param attributes the mutable marker attribute map (key type: <code>String</code>,
- * value type: <code>String</code>)
- * @param element the Java element for which the marker needs to be configured
- */
- public static void addJavaElementMarkerAttributes(
- Map attributes,
- IJavaElement element) {
-// if (element instanceof IMember)
-// element = ((IMember) element).getClassFile();
- if (attributes != null && element != null)
- attributes.put(ATT_HANDLE_ID, element.getHandleIdentifier());
- }
+/**
+ * Configures the given marker attribute map for the given Java element.
+ * Used for markers, which denote a Java element rather than a resource.
+ *
+ * @param attributes the mutable marker attribute map (key type: <code>String</code>,
+ * value type: <code>String</code>)
+ * @param element the Java element for which the marker needs to be configured
+ */
+public static void addJavaElementMarkerAttributes(
+ Map attributes,
+ IJavaElement element) {
+// if (element instanceof IMember)
+// element = ((IMember) element).getClassFile();
+ if (attributes != null && element != null)
+ attributes.put(ATT_HANDLE_ID, element.getHandleIdentifier());
+}
- /**
- * Configures the given marker for the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param marker the marker to be configured
- * @param element the Java element for which the marker needs to be configured
- * @exception CoreException if the <code>IMarker.setAttribute</code> on the marker fails
- */
- public void configureJavaElementMarker(IMarker marker, IJavaElement element)
- throws CoreException {
-// if (element instanceof IMember)
-// element = ((IMember) element).getClassFile();
- if (marker != null && element != null)
- marker.setAttribute(ATT_HANDLE_ID, element.getHandleIdentifier());
- }
+/**
+ * Configures the given marker for the given Java element.
+ * Used for markers, which denote a Java element rather than a resource.
+ *
+ * @param marker the marker to be configured
+ * @param element the Java element for which the marker needs to be configured
+ * @exception CoreException if the <code>IMarker.setAttribute</code> on the marker fails
+ */
+public void configureJavaElementMarker(IMarker marker, IJavaElement element)
+ throws CoreException {
+// if (element instanceof IMember)
+// element = ((IMember) element).getClassFile();
+ if (marker != null && element != null)
+ marker.setAttribute(ATT_HANDLE_ID, element.getHandleIdentifier());
+}
- /**
- * Returns the Java model element corresponding to the given handle identifier
- * generated by <code>IJavaElement.getHandleIdentifier()</code>, or
- * <code>null</code> if unable to create the associated element.
- */
- public static IJavaElement create(String handleIdentifier) {
- if (handleIdentifier == null) {
- return null;
- }
- try {
- return JavaModelManager.getJavaModelManager().getHandleFromMemento(handleIdentifier);
- } catch (JavaModelException e) {
- return null;
- }
- }
- /**
- * Returns the Java element corresponding to the given file, or
- * <code>null</code> if unable to associate the given file
- * with a Java element.
- *
- * <p>The file must be one of:<ul>
- * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
- * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
- * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
- * </ul>
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param the given file
- * @return the Java element corresponding to the given file, or
- * <code>null</code> if unable to associate the given file
- * with a Java element
- */
- public static IJavaElement create(IFile file) {
- return JavaModelManager.create(file, null);
- }
- /**
- * Returns the package fragment or package fragment root corresponding to the given folder, or
- * <code>null</code> if unable to associate the given folder with a Java element.
- * <p>
- * Note that a package fragment root is returned rather than a default package.
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param the given folder
- * @return the package fragment or package fragment root corresponding to the given folder, or
- * <code>null</code> if unable to associate the given folder with a Java element
- */
- public static IJavaElement create(IFolder folder) {
- return JavaModelManager.create(folder, null);
- }
- /**
- * Returns the Java project corresponding to the given project.
- * <p>
- * Creating a Java Project has the side effect of creating and opening all of the
- * project's parents if they are not yet open.
- * <p>
- * Note that no check is done at this time on the existence or the java nature of this project.
- *
- * @param project the given project
- * @return the Java project corresponding to the given project, null if the given project is null
- */
- public static IJavaProject create(IProject project) {
- if (project == null) {
- return null;
- }
- JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
- return javaModel.getJavaProject(project);
+/**
+ * Returns the Java model element corresponding to the given handle identifier
+ * generated by <code>IJavaElement.getHandleIdentifier()</code>, or
+ * <code>null</code> if unable to create the associated element.
+ */
+public static IJavaElement create(String handleIdentifier) {
+ if (handleIdentifier == null) {
+ return null;
}
- /**
- * Returns the Java element corresponding to the given resource, or
- * <code>null</code> if unable to associate the given resource
- * with a Java element.
- * <p>
- * The resource must be one of:<ul>
- * <li>a project - the element returned is the corresponding <code>IJavaProject</code></li>
- * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
- * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
- * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
- * <li>a folder - the element returned is the corresponding <code>IPackageFragmentRoot</code>
- * or <code>IPackageFragment</code></li>
- * <li>the workspace root resource - the element returned is the <code>IJavaModel</code></li>
- * </ul>
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param resource the given resource
- * @return the Java element corresponding to the given resource, or
- * <code>null</code> if unable to associate the given resource
- * with a Java element
- */
- public static IJavaElement create(IResource resource) {
- return JavaModelManager.create(resource, null);
+ try {
+ return JavaModelManager.getJavaModelManager().getHandleFromMemento(handleIdentifier);
+ } catch (JavaModelException e) {
+ return null;
}
- /**
- * Returns the Java model.
- *
- * @param root the given root
- * @return the Java model, or <code>null</code> if the root is null
- */
- public static IJavaModel create(IWorkspaceRoot root) {
- if (root == null) {
- return null;
- }
- return JavaModelManager.getJavaModelManager().getJavaModel();
+}
+/**
+ * Returns the Java element corresponding to the given file, or
+ * <code>null</code> if unable to associate the given file
+ * with a Java element.
+ *
+ * <p>The file must be one of:<ul>
+ * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
+ * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
+ * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
+ * </ul>
+ * <p>
+ * Creating a Java element has the side effect of creating and opening all of the
+ * element's parents if they are not yet open.
+ *
+ * @param the given file
+ * @return the Java element corresponding to the given file, or
+ * <code>null</code> if unable to associate the given file
+ * with a Java element
+ */
+public static IJavaElement create(IFile file) {
+ return JavaModelManager.create(file, null);
+}
+/**
+ * Returns the package fragment or package fragment root corresponding to the given folder, or
+ * <code>null</code> if unable to associate the given folder with a Java element.
+ * <p>
+ * Note that a package fragment root is returned rather than a default package.
+ * <p>
+ * Creating a Java element has the side effect of creating and opening all of the
+ * element's parents if they are not yet open.
+ *
+ * @param the given folder
+ * @return the package fragment or package fragment root corresponding to the given folder, or
+ * <code>null</code> if unable to associate the given folder with a Java element
+ */
+public static IJavaElement create(IFolder folder) {
+ return JavaModelManager.create(folder, null);
+}
+/**
+ * Returns the Java project corresponding to the given project.
+ * <p>
+ * Creating a Java Project has the side effect of creating and opening all of the
+ * project's parents if they are not yet open.
+ * <p>
+ * Note that no check is done at this time on the existence or the java nature of this project.
+ *
+ * @param project the given project
+ * @return the Java project corresponding to the given project, null if the given project is null
+ */
+public static IJavaProject create(IProject project) {
+ if (project == null) {
+ return null;
}
- /**
- * Creates and returns a class file element for
- * the given <code>.class</code> file. Returns <code>null</code> if unable
- * to recognize the class file.
- *
- * @param file the given <code>.class</code> file
- * @return a class file element for the given <code>.class</code> file, or <code>null</code> if unable
- * to recognize the class file
- */
-// public static IClassFile createClassFileFrom(IFile file) {
-// return JavaModelManager.createClassFileFrom(file, null);
-// }
- /**
- * Creates and returns a compilation unit element for
- * the given <code>.java</code> file. Returns <code>null</code> if unable
- * to recognize the compilation unit.
- *
- * @param file the given <code>.java</code> file
- * @return a compilation unit element for the given <code>.java</code> file, or <code>null</code> if unable
- * to recognize the compilation unit
- */
- public static ICompilationUnit createCompilationUnitFrom(IFile file) {
- return JavaModelManager.createCompilationUnitFrom(file, null);
+ JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
+ return javaModel.getJavaProject(project);
+}
+/**
+ * Returns the Java element corresponding to the given resource, or
+ * <code>null</code> if unable to associate the given resource
+ * with a Java element.
+ * <p>
+ * The resource must be one of:<ul>
+ * <li>a project - the element returned is the corresponding <code>IJavaProject</code></li>
+ * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
+ * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
+ * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
+ * <li>a folder - the element returned is the corresponding <code>IPackageFragmentRoot</code>
+ * or <code>IPackageFragment</code></li>
+ * <li>the workspace root resource - the element returned is the <code>IJavaModel</code></li>
+ * </ul>
+ * <p>
+ * Creating a Java element has the side effect of creating and opening all of the
+ * element's parents if they are not yet open.
+ *
+ * @param resource the given resource
+ * @return the Java element corresponding to the given resource, or
+ * <code>null</code> if unable to associate the given resource
+ * with a Java element
+ */
+public static IJavaElement create(IResource resource) {
+ return JavaModelManager.create(resource, null);
+}
+/**
+ * Returns the Java model.
+ *
+ * @param root the given root
+ * @return the Java model, or <code>null</code> if the root is null
+ */
+public static IJavaModel create(IWorkspaceRoot root) {
+ if (root == null) {
+ return null;
}
- /**
- * Creates and returns a handle for the given JAR file.
- * The Java model associated with the JAR's project may be
- * created as a side effect.
- *
- * @param file the given JAR file
- * @return a handle for the given JAR file, or <code>null</code> if unable to create a JAR package fragment root.
- * (for example, if the JAR file represents a non-Java resource)
- */
-// public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile file) {
-// return JavaModelManager.createJarPackageFragmentRootFrom(file, null);
-// }
-
- /**
- * Answers the project specific value for a given classpath container.
- * In case this container path could not be resolved, then will answer <code>null</code>.
- * Both the container path and the project context are supposed to be non-null.
- * <p>
- * The containerPath is a formed by a first ID segment followed with extra segments, which can be
- * used as additional hints for resolution. If no container was ever recorded for this container path
- * onto this project (using <code>setClasspathContainer</code>, then a
- * <code>ClasspathContainerInitializer</code> will be activated if any was registered for this container
- * ID onto the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * There is no assumption that the returned container must answer the exact same containerPath
- * when requested <code>IClasspathContainer#getPath</code>.
- * Indeed, the containerPath is just an indication for resolving it to an actual container object.
- * <p>
- * Classpath container values are persisted locally to the workspace, but
- * are not preserved from a session to another. It is thus highly recommended to register a
- * <code>ClasspathContainerInitializer</code> for each referenced container
- * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * @param containerPath the name of the container, which needs to be resolved
- * @param project a specific project in which the container is being resolved
- * @return the corresponding classpath container or <code>null</code> if unable to find one.
- *
- * @exception JavaModelException if an exception occurred while resolving the container, or if the resolved container
- * contains illegal entries (contains CPE_CONTAINER entries or null entries).
- *
- * @see ClasspathContainerInitializer
- * @see IClasspathContainer
- * @see #setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
- * @since 2.0
- */
-// public static IClasspathContainer getClasspathContainer(final IPath containerPath, final IJavaProject project) throws JavaModelException {
-//
-// IClasspathContainer container = JavaModelManager.containerGet(project, containerPath);
-// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
-//
-// if (container == null){
-// final ClasspathContainerInitializer initializer = JavaCore.getClasspathContainerInitializer(containerPath.segment(0));
-// if (initializer != null){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - triggering initialization of: ["+project.getElementName()+"] " + containerPath + " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
-// new Exception("FAKE exception for dumping current CPContainer (["+project.getElementName()+"] "+ containerPath+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-// }
-// JavaModelManager.containerPut(project, containerPath, JavaModelManager.ContainerInitializationInProgress); // avoid initialization cycles
-// boolean ok = false;
-// try {
-// // wrap initializer call with Safe runnable in case initializer would be causing some grief
-// Platform.run(new ISafeRunnable() {
-// public void handleException(Throwable exception) {
-// Util.log(exception, "Exception occurred in classpath container initializer: "+initializer); //$NON-NLS-1$
-// }
-// public void run() throws Exception {
-// initializer.initialize(containerPath, project);
-// }
-// });
-//
-// // retrieve value (if initialization was successful)
-// container = JavaModelManager.containerGet(project, containerPath);
-// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
-// ok = true;
-// } finally {
-// if (!ok) JavaModelManager.containerPut(project, containerPath, null); // flush cache
-// }
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.print("CPContainer INIT - after resolution: ["+project.getElementName()+"] " + containerPath + " --> "); //$NON-NLS-2$//$NON-NLS-1$//$NON-NLS-3$
-// if (container != null){
-// System.out.print("container: "+container.getDescription()+" {"); //$NON-NLS-2$//$NON-NLS-1$
-// IClasspathEntry[] entries = container.getClasspathEntries();
-// if (entries != null){
-// for (int i = 0; i < entries.length; i++){
-// if (i > 0) System.out.println(", ");//$NON-NLS-1$
-// System.out.println(entries[i]);
-// }
-// }
-// System.out.println("}");//$NON-NLS-1$
-// } else {
-// System.out.println("{unbound}");//$NON-NLS-1$
-// }
-// }
-// } else {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - no initializer found for: "+project.getElementName()+"] " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-// }
-// }
-// return container;
-// }
-
- /**
- * Helper method finding the classpath container initializer registered for a given classpath container ID
- * or <code>null</code> if none was found while iterating over the contributions to extension point to
- * the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A containerID is the first segment of any container path, used to identify the registered container initializer.
- * <p>
- * @param String - a containerID identifying a registered initializer
- * @return ClasspathContainerInitializer - the registered classpath container initializer or <code>null</code> if
- * none was found.
- * @since 2.1
- */
-// public static ClasspathContainerInitializer getClasspathContainerInitializer(String containerID){
-//
-// Plugin jdtCorePlugin = JavaCore.getPlugin();
-// if (jdtCorePlugin == null) return null;
+ return JavaModelManager.getJavaModelManager().getJavaModel();
+}
+/**
+ * Creates and returns a class file element for
+ * the given <code>.class</code> file. Returns <code>null</code> if unable
+ * to recognize the class file.
+ *
+ * @param file the given <code>.class</code> file
+ * @return a class file element for the given <code>.class</code> file, or <code>null</code> if unable
+ * to recognize the class file
+ */
+//public static IClassFile createClassFileFrom(IFile file) {
+// return JavaModelManager.createClassFileFrom(file, null);
+//}
+/**
+ * Creates and returns a compilation unit element for
+ * the given <code>.java</code> file. Returns <code>null</code> if unable
+ * to recognize the compilation unit.
+ *
+ * @param file the given <code>.java</code> file
+ * @return a compilation unit element for the given <code>.java</code> file, or <code>null</code> if unable
+ * to recognize the compilation unit
+ */
+public static ICompilationUnit createCompilationUnitFrom(IFile file) {
+ return JavaModelManager.createCompilationUnitFrom(file, null);
+}
+/**
+ * Creates and returns a handle for the given JAR file.
+ * The Java model associated with the JAR's project may be
+ * created as a side effect.
+ *
+ * @param file the given JAR file
+ * @return a handle for the given JAR file, or <code>null</code> if unable to create a JAR package fragment root.
+ * (for example, if the JAR file represents a non-Java resource)
+ */
+//public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile file) {
+// return JavaModelManager.createJarPackageFragmentRootFrom(file, null);
+//}
+
+/**
+ * Answers the project specific value for a given classpath container.
+ * In case this container path could not be resolved, then will answer <code>null</code>.
+ * Both the container path and the project context are supposed to be non-null.
+ * <p>
+ * The containerPath is a formed by a first ID segment followed with extra segments, which can be
+ * used as additional hints for resolution. If no container was ever recorded for this container path
+ * onto this project (using <code>setClasspathContainer</code>, then a
+ * <code>ClasspathContainerInitializer</code> will be activated if any was registered for this container
+ * ID onto the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
+ * <p>
+ * There is no assumption that the returned container must answer the exact same containerPath
+ * when requested <code>IClasspathContainer#getPath</code>.
+ * Indeed, the containerPath is just an indication for resolving it to an actual container object.
+ * <p>
+ * Classpath container values are persisted locally to the workspace, but
+ * are not preserved from a session to another. It is thus highly recommended to register a
+ * <code>ClasspathContainerInitializer</code> for each referenced container
+ * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
+ * <p>
+ * @param containerPath the name of the container, which needs to be resolved
+ * @param project a specific project in which the container is being resolved
+ * @return the corresponding classpath container or <code>null</code> if unable to find one.
+ *
+ * @exception JavaModelException if an exception occurred while resolving the container, or if the resolved container
+ * contains illegal entries (contains CPE_CONTAINER entries or null entries).
+ *
+ * @see ClasspathContainerInitializer
+ * @see IClasspathContainer
+ * @see #setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
+ * @since 2.0
+ */
+//public static IClasspathContainer getClasspathContainer(final IPath containerPath, final IJavaProject project) throws JavaModelException {
//
-// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPCONTAINER_INITIALIZER_EXTPOINT_ID);
-// if (extension != null) {
-// IExtension[] extensions = extension.getExtensions();
-// for(int i = 0; i < extensions.length; i++){
-// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
-// for(int j = 0; j < configElements.length; j++){
-// String initializerID = configElements[j].getAttribute("id"); //$NON-NLS-1$
-// if (initializerID != null && initializerID.equals(containerID)){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
-// System.out.println("CPContainer INIT - found initializer: "+containerID +" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-// }
-// try {
-// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
-// if (execExt instanceof ClasspathContainerInitializer){
-// return (ClasspathContainerInitializer)execExt;
-// }
-// } catch(CoreException e) {
-// }
-// }
-// }
-// }
-// }
-// return null;
-// }
-
- /**
- * Returns the path held in the given classpath variable.
- * Returns <node>null</code> if unable to bind.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Note that classpath variables can be contributed registered initializers for,
- * using the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * If an initializer is registered for a variable, its persisted value will be ignored:
- * its initializer will thus get the opportunity to rebind the variable differently on
- * each session.
- *
- * @param variableName the name of the classpath variable
- * @return the path, or <code>null</code> if none
- * @see #setClasspathVariable
- */
-// public static IPath getClasspathVariable(final String variableName) {
-//
-// IPath variablePath = JavaModelManager.variableGet(variableName);
-// if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle
-//
-// if (variablePath != null) {
-// return variablePath;
-// }
+// IClasspathContainer container = JavaModelManager.containerGet(project, containerPath);
+// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
//
-// // even if persisted value exists, initializer is given priority, only if no initializer is found the persisted value is reused
-// final ClasspathVariableInitializer initializer = JavaCore.getClasspathVariableInitializer(variableName);
+// if (container == null){
+// final ClasspathContainerInitializer initializer = JavaCore.getClasspathContainerInitializer(containerPath.segment(0));
// if (initializer != null){
// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - triggering initialization of: " + variableName+ " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$
-// new Exception("FAKE exception for dumping current CPVariable ("+variableName+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$
+// System.out.println("CPContainer INIT - triggering initialization of: ["+project.getElementName()+"] " + containerPath + " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
+// new Exception("FAKE exception for dumping current CPContainer (["+project.getElementName()+"] "+ containerPath+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
// }
-// JavaModelManager.variablePut(variableName, JavaModelManager.VariableInitializationInProgress); // avoid initialization cycles
+// JavaModelManager.containerPut(project, containerPath, JavaModelManager.ContainerInitializationInProgress); // avoid initialization cycles
// boolean ok = false;
// try {
// // wrap initializer call with Safe runnable in case initializer would be causing some grief
// Platform.run(new ISafeRunnable() {
// public void handleException(Throwable exception) {
-// Util.log(exception, "Exception occurred in classpath variable initializer: "+initializer+" while initializing variable: "+variableName); //$NON-NLS-1$ //$NON-NLS-2$
+// Util.log(exception, "Exception occurred in classpath container initializer: "+initializer); //$NON-NLS-1$
// }
// public void run() throws Exception {
-// initializer.initialize(variableName);
+// initializer.initialize(containerPath, project);
// }
// });
-// variablePath = (IPath) JavaModelManager.variableGet(variableName); // initializer should have performed side-effect
-// if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle (initializer did not init or reentering call)
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - after initialization: " + variableName + " --> " + variablePath); //$NON-NLS-2$//$NON-NLS-1$
-// }
+//
+// // retrieve value (if initialization was successful)
+// container = JavaModelManager.containerGet(project, containerPath);
+// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
// ok = true;
// } finally {
-// if (!ok) JavaModelManager.variablePut(variableName, null); // flush cache
+// if (!ok) JavaModelManager.containerPut(project, containerPath, null); // flush cache
+// }
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.print("CPContainer INIT - after resolution: ["+project.getElementName()+"] " + containerPath + " --> "); //$NON-NLS-2$//$NON-NLS-1$//$NON-NLS-3$
+// if (container != null){
+// System.out.print("container: "+container.getDescription()+" {"); //$NON-NLS-2$//$NON-NLS-1$
+// IClasspathEntry[] entries = container.getClasspathEntries();
+// if (entries != null){
+// for (int i = 0; i < entries.length; i++){
+// if (i > 0) System.out.println(", ");//$NON-NLS-1$
+// System.out.println(entries[i]);
+// }
+// }
+// System.out.println("}");//$NON-NLS-1$
+// } else {
+// System.out.println("{unbound}");//$NON-NLS-1$
+// }
// }
// } else {
// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - no initializer found for: " + variableName); //$NON-NLS-1$
+// System.out.println("CPContainer INIT - no initializer found for: "+project.getElementName()+"] " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
// }
// }
-// return variablePath;
// }
+// return container;
+//}
- /**
- * Helper method finding the classpath variable initializer registered for a given classpath variable name
- * or <code>null</code> if none was found while iterating over the contributions to extension point to
- * the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * <p>
- * @param the given variable
- * @return ClasspathVariableInitializer - the registered classpath variable initializer or <code>null</code> if
- * none was found.
- * @since 2.1
- */
-// public static ClasspathVariableInitializer getClasspathVariableInitializer(String variable){
+/**
+ * Helper method finding the classpath container initializer registered for a given classpath container ID
+ * or <code>null</code> if none was found while iterating over the contributions to extension point to
+ * the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
+ * <p>
+ * A containerID is the first segment of any container path, used to identify the registered container initializer.
+ * <p>
+ * @param String - a containerID identifying a registered initializer
+ * @return ClasspathContainerInitializer - the registered classpath container initializer or <code>null</code> if
+ * none was found.
+ * @since 2.1
+ */
+//public static ClasspathContainerInitializer getClasspathContainerInitializer(String containerID){
//
-// Plugin jdtCorePlugin = JavaCore.getPlugin();
-// if (jdtCorePlugin == null) return null;
+// Plugin jdtCorePlugin = JavaCore.getPlugin();
+// if (jdtCorePlugin == null) return null;
//
-// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
-// if (extension != null) {
-// IExtension[] extensions = extension.getExtensions();
-// for(int i = 0; i < extensions.length; i++){
-// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
-// for(int j = 0; j < configElements.length; j++){
+// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPCONTAINER_INITIALIZER_EXTPOINT_ID);
+// if (extension != null) {
+// IExtension[] extensions = extension.getExtensions();
+// for(int i = 0; i < extensions.length; i++){
+// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
+// for(int j = 0; j < configElements.length; j++){
+// String initializerID = configElements[j].getAttribute("id"); //$NON-NLS-1$
+// if (initializerID != null && initializerID.equals(containerID)){
+// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
+// System.out.println("CPContainer INIT - found initializer: "+containerID +" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
+// }
// try {
-// String varAttribute = configElements[j].getAttribute("variable"); //$NON-NLS-1$
-// if (variable.equals(varAttribute)) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
-// System.out.println("CPVariable INIT - found initializer: "+variable+" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-// }
-// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
-// if (execExt instanceof ClasspathVariableInitializer){
-// return (ClasspathVariableInitializer)execExt;
-// }
+// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
+// if (execExt instanceof ClasspathContainerInitializer){
+// return (ClasspathContainerInitializer)execExt;
// }
-// } catch(CoreException e){
-// }
+// } catch(CoreException e) {
// }
-// }
-// }
-// return null;
-// }
+// }
+// }
+// }
+// }
+// return null;
+//}
+
+/**
+ * Returns the path held in the given classpath variable.
+ * Returns <node>null</code> if unable to bind.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ * Note that classpath variables can be contributed registered initializers for,
+ * using the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
+ * If an initializer is registered for a variable, its persisted value will be ignored:
+ * its initializer will thus get the opportunity to rebind the variable differently on
+ * each session.
+ *
+ * @param variableName the name of the classpath variable
+ * @return the path, or <code>null</code> if none
+ * @see #setClasspathVariable
+ */
+public static IPath getClasspathVariable(final String variableName) {
- /**
- * Returns the names of all known classpath variables.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @return the list of classpath variable names
- * @see #setClasspathVariable
- */
-// public static String[] getClasspathVariableNames() {
-// return JavaModelManager.variableNames();
+ IPath variablePath = JavaModelManager.variableGet(variableName);
+ if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle
+
+ if (variablePath != null) {
+ return variablePath;
+ }
+
+ // even if persisted value exists, initializer is given priority, only if no initializer is found the persisted value is reused
+// final ClasspathVariableInitializer initializer = PHPCore.getClasspathVariableInitializer(variableName);
+// if (initializer != null){
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable INIT - triggering initialization of: " + variableName+ " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$
+// new Exception("FAKE exception for dumping current CPVariable ("+variableName+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$
+// }
+// JavaModelManager.variablePut(variableName, JavaModelManager.VariableInitializationInProgress); // avoid initialization cycles
+// boolean ok = false;
+// try {
+// // wrap initializer call with Safe runnable in case initializer would be causing some grief
+// Platform.run(new ISafeRunnable() {
+// public void handleException(Throwable exception) {
+// Util.log(exception, "Exception occurred in classpath variable initializer: "+initializer+" while initializing variable: "+variableName); //$NON-NLS-1$ //$NON-NLS-2$
+// }
+// public void run() throws Exception {
+// initializer.initialize(variableName);
+// }
+// });
+// variablePath = (IPath) JavaModelManager.variableGet(variableName); // initializer should have performed side-effect
+// if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle (initializer did not init or reentering call)
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable INIT - after initialization: " + variableName + " --> " + variablePath); //$NON-NLS-2$//$NON-NLS-1$
+// }
+// ok = true;
+// } finally {
+// if (!ok) JavaModelManager.variablePut(variableName, null); // flush cache
+// }
+// } else {
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable INIT - no initializer found for: " + variableName); //$NON-NLS-1$
+// }
// }
+ return variablePath;
+}
- /**
- * Returns a table of all known configurable options with their default values.
- * These options allow to configure the behaviour of the underlying components.
- * The client may safely use the result as a template that they can modify and
- * then pass to <code>setOptions</code>.
- *
- * Helper constants have been defined on JavaCore for each of the option ID and
- * their possible constant values.
- *
- * Note: more options might be added in further releases.
- * <pre>
- * RECOGNIZED OPTIONS:
- * COMPILER / Generating Local Variable Debug Attribute
- * When generated, this attribute will enable local variable names
- * to be displayed in debugger, only in place where variables are
- * definitely assigned (.class file is then bigger)
- * - option id: "org.eclipse.jdt.core.compiler.debug.localVariable"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Line Number Debug Attribute
- * When generated, this attribute will enable source code highlighting in debugger
- * (.class file is then bigger).
- * - option id: "org.eclipse.jdt.core.compiler.debug.lineNumber"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Source Debug Attribute
- * When generated, this attribute will enable the debugger to present the
- * corresponding source code.
- * - option id: "org.eclipse.jdt.core.compiler.debug.sourceFile"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Preserving Unused Local Variables
- * Unless requested to preserve unused local variables (that is, never read), the
- * compiler will optimize them out, potentially altering debugging
- * - option id: "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
- * - possible values: { "preserve", "optimize out" }
- * - default: "preserve"
- *
- * COMPILER / Defining Target Java Platform
- * For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
- * Note that "1.4" target require to toggle compliance mode to "1.4" too.
- * - option id: "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
- * - possible values: { "1.1", "1.2", "1.3", "1.4" }
- * - default: "1.1"
- *
- * COMPILER / Reporting Unreachable Code
- * Unreachable code can optionally be reported as an error, warning or simply
- * ignored. The bytecode generation will always optimized it out.
- * - option id: "org.eclipse.jdt.core.compiler.problem.unreachableCode"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Invalid Import
- * An import statement that cannot be resolved might optionally be reported
- * as an error, as a warning or ignored.
- * - option id: "org.eclipse.jdt.core.compiler.problem.invalidImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Attempt to Override Package-Default Method
- * A package default method is not visible in a different package, and thus
- * cannot be overridden. When enabling this option, the compiler will signal
- * such scenarii either as an error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Method With Constructor Name
- * Naming a method with a constructor name is generally considered poor
- * style programming. When enabling this option, the compiler will signal such
- * scenarii either as an error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation
- * When enabled, the compiler will signal use of deprecated API either as an
- * error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.deprecation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation Inside Deprecated Code
- * When enabled, the compiler will signal use of deprecated API inside deprecated code.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
- * - option id: "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Hidden Catch Block
- * Locally to a try statement, some catch blocks may hide others . For example,
- * try { throw new java.io.CharConversionException();
- * } catch (java.io.CharConversionException e) {
- * } catch (java.io.IOException e) {}.
- * When enabling this option, the compiler will issue an error or a warning for hidden
- * catch blocks corresponding to checked exceptions
- * - option id: "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Unused Local
- * When enabled, the compiler will issue an error or a warning for unused local
- * variables (that is, variables never read from)
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedLocal"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Parameter
- * When enabled, the compiler will issue an error or a warning for unused method
- * parameters (that is, parameters never read from)
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameter"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
- * When enabled, the compiler will signal unused parameters in abstract method implementations.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
- * When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Unused Import
- * When enabled, the compiler will issue an error or a warning for unused import
- * reference
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Unused Private Members
- * When enabled, the compiler will issue an error or a warning whenever a private
- * method or field is declared but never used within the same unit.
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Synthetic Access Emulation
- * When enabled, the compiler will issue an error or a warning whenever it emulates
- * access to a non-accessible member of an enclosing type. Such access can have
- * performance implications.
- * - option id: "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Non-Externalized String Literal
- * When enabled, the compiler will issue an error or a warning for non externalized
- * String literal (that is, not tagged with //$NON-NLS-<n>$).
- * - option id: "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Usage of 'assert' Identifier
- * When enabled, the compiler will issue an error or a warning whenever 'assert' is
- * used as an identifier (reserved keyword in 1.4)
- * - option id: "org.eclipse.jdt.core.compiler.problem.assertIdentifier"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Non-Static Reference to a Static Member
- * When enabled, the compiler will issue an error or a warning whenever a static field
- * or method is accessed with an expression receiver. A reference to a static member should
- * be qualified with a type name.
- * - option id: "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Assignment with no Effect
- * When enabled, the compiler will issue an error or a warning whenever an assignment
- * has no effect (e.g 'x = x').
- * - option id: "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
- * When enabled, the compiler will issue an error or a warning whenever an interface
- * defines a method incompatible with a non-inherited Object method. Until this conflict
- * is resolved, such an interface cannot be implemented, For example,
- * interface I {
- * int clone();
- * }
- * - option id: "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
- * When enabled, the compiler will issue an error or a warning whenever a char[] expression
- * is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
- * - option id: "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Setting Source Compatibility Mode
- * Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword
- * reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
- * level should be set to "1.4" and the compliance mode should be "1.4".
- * - option id: "org.eclipse.jdt.core.compiler.source"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Setting Compliance Level
- * Select the compliance level for the compiler. In "1.3" mode, source and target settings
- * should not go beyond "1.3" level.
- * - option id: "org.eclipse.jdt.core.compiler.compliance"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Maximum number of problems reported per compilation unit
- * Specify the maximum number of problems reported on each compilation unit.
- * - option id: "org.eclipse.jdt.core.compiler.maxProblemPerUnit"
- * - possible values: "<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
- * - default: "100"
- *
- * COMPILER / Define the Automatic Task Tags
- * When the tag list is not empty, the compiler will issue a task marker whenever it encounters
- * one of the corresponding tag inside any comment in Java source code.
- * Generated task messages will include the tag, and range until the next line separator or comment ending.
- * Note that tasks messages are trimmed.
- * - option id: "org.eclipse.jdt.core.compiler.taskTags"
- * - possible values: { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card or leading/trailing spaces
- * - default: ""
- *
- * COMPILER / Define the Automatic Task Priorities
- * In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
- * of the task markers issued by the compiler.
- * If the default is specified, the priority of each task marker is "NORMAL".
- * - option id: "org.eclipse.jdt.core.compiler.taskPriorities"
- * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW"
- * - default: ""
- *
- * BUILDER / Specifying Filters for Resource Copying Control
- * Allow to specify some filters to control the resource copy process.
- * - option id: "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"
- * - possible values: { "<name>[,<name>]* } where <name> is a file name pattern (* and ? wild-cards allowed)
- * or the name of a folder which ends with '/'
- * - default: ""
- *
- * BUILDER / Abort if Invalid Classpath
- * Allow to toggle the builder to abort if the classpath is invalid
- * - option id: "org.eclipse.jdt.core.builder.invalidClasspath"
- * - possible values: { "abort", "ignore" }
- * - default: "abort"
- *
- * BUILDER / Cleaning Output Folder(s)
- * Indicate whether the JavaBuilder is allowed to clean the output folders
- * when performing full build operations.
- * - option id: "org.eclipse.jdt.core.builder.cleanOutputFolder"
- * - possible values: { "clean", "ignore" }
- * - default: "clean"
- *
- * BUILDER / Reporting Duplicate Resources
- * Indicate the severity of the problem reported when more than one occurrence
- * of a resource is to be copied into the output location.
- * - option id: "org.eclipse.jdt.core.builder.duplicateResourceTask"
- * - possible values: { "error", "warning" }
- * - default: "warning"
- *
- * JAVACORE / Computing Project Build Order
- * Indicate whether JavaCore should enforce the project build order to be based on
- * the classpath prerequisite chain. When requesting to compute, this takes over
- * the platform default order (based on project references).
- * - option id: "org.eclipse.jdt.core.computeJavaBuildOrder"
- * - possible values: { "compute", "ignore" }
- * - default: "ignore"
- *
- * JAVACORE / Specify Default Source Encoding Format
- * Get the encoding format for compiled sources. This setting is read-only, it is equivalent
- * to 'ResourcesPlugin.getEncoding()'.
- * - option id: "org.eclipse.jdt.core.encoding"
- * - possible values: { any of the supported encoding name}.
- * - default: <platform default>
- *
- * JAVACORE / Reporting Incomplete Classpath
- * Indicate the severity of the problem reported when an entry on the classpath does not exist,
- * is not legite or is not visible (for example, a referenced project is closed).
- * - option id: "org.eclipse.jdt.core.incompleteClasspath"
- * - possible values: { "error", "warning"}
- * - default: "error"
- *
- * JAVACORE / Reporting Classpath Cycle
- * Indicate the severity of the problem reported when a project is involved in a cycle.
- * - option id: "org.eclipse.jdt.core.circularClasspath"
- * - possible values: { "error", "warning" }
- * - default: "error"
- *
- * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
- * When disabled, no entry on a project classpath can be associated with
- * an exclusion pattern.
- * - option id: "org.eclipse.jdt.core.classpath.exclusionPatterns"
- * - possible values: { "enabled", "disabled" }
- * - default: "enabled"
- *
- * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
- * When disabled, no entry on a project classpath can be associated with
- * a specific output location, preventing thus usage of multiple output locations.
- * - option id: "org.eclipse.jdt.core.classpath.multipleOutputLocations"
- * - possible values: { "enabled", "disabled" }
- * - default: "enabled"
- *
- * FORMATTER / Inserting New Line Before Opening Brace
- * When Insert, a new line is inserted before an opening brace, otherwise nothing
- * is inserted
- * - option id: "org.eclipse.jdt.core.formatter.newline.openingBrace"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line Inside Control Statement
- * When Insert, a new line is inserted between } and following else, catch, finally
- * - option id: "org.eclipse.jdt.core.formatter.newline.controlStatement"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Clearing Blank Lines
- * When Clear all, all blank lines are removed. When Preserve one, only one is kept
- * and all others removed.
- * - option id: "org.eclipse.jdt.core.formatter.newline.clearAll"
- * - possible values: { "clear all", "preserve one" }
- * - default: "preserve one"
- *
- * FORMATTER / Inserting New Line Between Else/If
- * When Insert, a blank line is inserted between an else and an if when they are
- * contiguous. When choosing to not insert, else-if will be kept on the same
- * line when possible.
- * - option id: "org.eclipse.jdt.core.formatter.newline.elseIf"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line In Empty Block
- * When insert, a line break is inserted between contiguous { and }, if } is not followed
- * by a keyword.
- * - option id: "org.eclipse.jdt.core.formatter.newline.emptyBlock"
- * - possible values: { "insert", "do not insert" }
- * - default: "insert"
- *
- * FORMATTER / Splitting Lines Exceeding Length
- * Enable splitting of long lines (exceeding the configurable length). Length of 0 will
- * disable line splitting
- * - option id: "org.eclipse.jdt.core.formatter.lineSplit"
- * - possible values: "<n>", where n is zero or a positive integer
- * - default: "80"
- *
- * FORMATTER / Compacting Assignment
- * Assignments can be formatted asymmetrically, for example 'int x= 2;', when Normal, a space
- * is inserted before the assignment operator
- * - option id: "org.eclipse.jdt.core.formatter.style.assignment"
- * - possible values: { "compact", "normal" }
- * - default: "normal"
- *
- * FORMATTER / Defining Indentation Character
- * Either choose to indent with tab characters or spaces
- * - option id: "org.eclipse.jdt.core.formatter.tabulation.char"
- * - possible values: { "tab", "space" }
- * - default: "tab"
- *
- * FORMATTER / Defining Space Indentation Length
- * When using spaces, set the amount of space characters to use for each
- * indentation mark.
- * - option id: "org.eclipse.jdt.core.formatter.tabulation.size"
- * - possible values: "<n>", where n is a positive integer
- * - default: "4"
- *
- * FORMATTER / Inserting space in cast expression
- * When Insert, a space is added between the type and the expression in a cast expression.
- * - option id: "org.eclipse.jdt.core.formatter.space.castexpression"
- * - possible values: { "insert", "do not insert" }
- * - default: "insert"
- *
- * CODEASSIST / Activate Visibility Sensitive Completion
- * When active, completion doesn't show that you can not see
- * (for example, you can not see private methods of a super class).
- * - option id: "org.eclipse.jdt.core.codeComplete.visibilityCheck"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Automatic Qualification of Implicit Members
- * When active, completion automatically qualifies completion on implicit
- * field references and message expressions.
- * - option id: "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Define the Prefixes for Field Name
- * When the prefixes is non empty, completion for field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Static Field Name
- * When the prefixes is non empty, completion for static field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Local Variable Name
- * When the prefixes is non empty, completion for local variable name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Argument Name
- * When the prefixes is non empty, completion for argument name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Field Name
- * When the suffixes is non empty, completion for field name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Static Field Name
- * When the suffixes is non empty, completion for static field name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Local Variable Name
- * When the suffixes is non empty, completion for local variable name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Argument Name
- * When the suffixes is non empty, completion for argument name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- * </pre>
- *
- * @return a mutable table containing the default settings of all known options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see #setOptions
- */
- public static Hashtable getDefaultOptions(){
+/**
+ * Helper method finding the classpath variable initializer registered for a given classpath variable name
+ * or <code>null</code> if none was found while iterating over the contributions to extension point to
+ * the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
+ * <p>
+ * @param the given variable
+ * @return ClasspathVariableInitializer - the registered classpath variable initializer or <code>null</code> if
+ * none was found.
+ * @since 2.1
+ */
+public static ClasspathVariableInitializer getClasspathVariableInitializer(String variable){
+
+ Plugin jdtCorePlugin = JavaCore.getPlugin();
+ if (jdtCorePlugin == null) return null;
+
+// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
+// if (extension != null) {
+// IExtension[] extensions = extension.getExtensions();
+// for(int i = 0; i < extensions.length; i++){
+// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
+// for(int j = 0; j < configElements.length; j++){
+// try {
+// String varAttribute = configElements[j].getAttribute("variable"); //$NON-NLS-1$
+// if (variable.equals(varAttribute)) {
+// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
+// System.out.println("CPVariable INIT - found initializer: "+variable+" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
+// }
+// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
+// if (execExt instanceof ClasspathVariableInitializer){
+// return (ClasspathVariableInitializer)execExt;
+// }
+// }
+// } catch(CoreException e){
+// }
+// }
+// }
+// }
+ return null;
+}
- Hashtable defaultOptions = new Hashtable(10);
+/**
+ * Returns the names of all known classpath variables.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ *
+ * @return the list of classpath variable names
+ * @see #setClasspathVariable
+ */
+//public static String[] getClasspathVariableNames() {
+// return JavaModelManager.variableNames();
+//}
- // see #initializeDefaultPluginPreferences() for changing default settings
+/**
+ * Returns a table of all known configurable options with their default values.
+ * These options allow to configure the behaviour of the underlying components.
+ * The client may safely use the result as a template that they can modify and
+ * then pass to <code>setOptions</code>.
+ *
+ * Helper constants have been defined on JavaCore for each of the option ID and
+ * their possible constant values.
+ *
+ * Note: more options might be added in further releases.
+ * <pre>
+ * RECOGNIZED OPTIONS:
+ * COMPILER / Generating Local Variable Debug Attribute
+ * When generated, this attribute will enable local variable names
+ * to be displayed in debugger, only in place where variables are
+ * definitely assigned (.class file is then bigger)
+ * - option id: "org.eclipse.jdt.core.compiler.debug.localVariable"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Generating Line Number Debug Attribute
+ * When generated, this attribute will enable source code highlighting in debugger
+ * (.class file is then bigger).
+ * - option id: "org.eclipse.jdt.core.compiler.debug.lineNumber"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Generating Source Debug Attribute
+ * When generated, this attribute will enable the debugger to present the
+ * corresponding source code.
+ * - option id: "org.eclipse.jdt.core.compiler.debug.sourceFile"
+ * - possible values: { "generate", "do not generate" }
+ * - default: "generate"
+ *
+ * COMPILER / Preserving Unused Local Variables
+ * Unless requested to preserve unused local variables (that is, never read), the
+ * compiler will optimize them out, potentially altering debugging
+ * - option id: "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
+ * - possible values: { "preserve", "optimize out" }
+ * - default: "preserve"
+ *
+ * COMPILER / Defining Target Java Platform
+ * For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
+ * Note that "1.4" target require to toggle compliance mode to "1.4" too.
+ * - option id: "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
+ * - possible values: { "1.1", "1.2", "1.3", "1.4" }
+ * - default: "1.1"
+ *
+ * COMPILER / Reporting Unreachable Code
+ * Unreachable code can optionally be reported as an error, warning or simply
+ * ignored. The bytecode generation will always optimized it out.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unreachableCode"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "error"
+ *
+ * COMPILER / Reporting Invalid Import
+ * An import statement that cannot be resolved might optionally be reported
+ * as an error, as a warning or ignored.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.invalidImport"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "error"
+ *
+ * COMPILER / Reporting Attempt to Override Package-Default Method
+ * A package default method is not visible in a different package, and thus
+ * cannot be overridden. When enabling this option, the compiler will signal
+ * such scenarii either as an error or a warning.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Method With Constructor Name
+ * Naming a method with a constructor name is generally considered poor
+ * style programming. When enabling this option, the compiler will signal such
+ * scenarii either as an error or a warning.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Deprecation
+ * When enabled, the compiler will signal use of deprecated API either as an
+ * error or a warning.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.deprecation"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Deprecation Inside Deprecated Code
+ * When enabled, the compiler will signal use of deprecated API inside deprecated code.
+ * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
+ * - option id: "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * COMPILER / Reporting Hidden Catch Block
+ * Locally to a try statement, some catch blocks may hide others . For example,
+ * try { throw new java.io.CharConversionException();
+ * } catch (java.io.CharConversionException e) {
+ * } catch (java.io.IOException e) {}.
+ * When enabling this option, the compiler will issue an error or a warning for hidden
+ * catch blocks corresponding to checked exceptions
+ * - option id: "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Unused Local
+ * When enabled, the compiler will issue an error or a warning for unused local
+ * variables (that is, variables never read from)
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedLocal"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Unused Parameter
+ * When enabled, the compiler will issue an error or a warning for unused method
+ * parameters (that is, parameters never read from)
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameter"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
+ * When enabled, the compiler will signal unused parameters in abstract method implementations.
+ * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
+ * When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
+ * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * COMPILER / Reporting Unused Import
+ * When enabled, the compiler will issue an error or a warning for unused import
+ * reference
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedImport"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Unused Private Members
+ * When enabled, the compiler will issue an error or a warning whenever a private
+ * method or field is declared but never used within the same unit.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Synthetic Access Emulation
+ * When enabled, the compiler will issue an error or a warning whenever it emulates
+ * access to a non-accessible member of an enclosing type. Such access can have
+ * performance implications.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Non-Externalized String Literal
+ * When enabled, the compiler will issue an error or a warning for non externalized
+ * String literal (that is, not tagged with //$NON-NLS-<n>$).
+ * - option id: "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Usage of 'assert' Identifier
+ * When enabled, the compiler will issue an error or a warning whenever 'assert' is
+ * used as an identifier (reserved keyword in 1.4)
+ * - option id: "org.eclipse.jdt.core.compiler.problem.assertIdentifier"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "ignore"
+ *
+ * COMPILER / Reporting Non-Static Reference to a Static Member
+ * When enabled, the compiler will issue an error or a warning whenever a static field
+ * or method is accessed with an expression receiver. A reference to a static member should
+ * be qualified with a type name.
+ * - option id: "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Assignment with no Effect
+ * When enabled, the compiler will issue an error or a warning whenever an assignment
+ * has no effect (e.g 'x = x').
+ * - option id: "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
+ * When enabled, the compiler will issue an error or a warning whenever an interface
+ * defines a method incompatible with a non-inherited Object method. Until this conflict
+ * is resolved, such an interface cannot be implemented, For example,
+ * interface I {
+ * int clone();
+ * }
+ * - option id: "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
+ * When enabled, the compiler will issue an error or a warning whenever a char[] expression
+ * is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
+ * - option id: "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
+ * - possible values: { "error", "warning", "ignore" }
+ * - default: "warning"
+ *
+ * COMPILER / Setting Source Compatibility Mode
+ * Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword
+ * reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
+ * level should be set to "1.4" and the compliance mode should be "1.4".
+ * - option id: "org.eclipse.jdt.core.compiler.source"
+ * - possible values: { "1.3", "1.4" }
+ * - default: "1.3"
+ *
+ * COMPILER / Setting Compliance Level
+ * Select the compliance level for the compiler. In "1.3" mode, source and target settings
+ * should not go beyond "1.3" level.
+ * - option id: "org.eclipse.jdt.core.compiler.compliance"
+ * - possible values: { "1.3", "1.4" }
+ * - default: "1.3"
+ *
+ * COMPILER / Maximum number of problems reported per compilation unit
+ * Specify the maximum number of problems reported on each compilation unit.
+ * - option id: "org.eclipse.jdt.core.compiler.maxProblemPerUnit"
+ * - possible values: "<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
+ * - default: "100"
+ *
+ * COMPILER / Define the Automatic Task Tags
+ * When the tag list is not empty, the compiler will issue a task marker whenever it encounters
+ * one of the corresponding tag inside any comment in Java source code.
+ * Generated task messages will include the tag, and range until the next line separator or comment ending.
+ * Note that tasks messages are trimmed.
+ * - option id: "org.eclipse.jdt.core.compiler.taskTags"
+ * - possible values: { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card or leading/trailing spaces
+ * - default: ""
+ *
+ * COMPILER / Define the Automatic Task Priorities
+ * In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
+ * of the task markers issued by the compiler.
+ * If the default is specified, the priority of each task marker is "NORMAL".
+ * - option id: "org.eclipse.jdt.core.compiler.taskPriorities"
+ * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW"
+ * - default: ""
+ *
+ * BUILDER / Specifying Filters for Resource Copying Control
+ * Allow to specify some filters to control the resource copy process.
+ * - option id: "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"
+ * - possible values: { "<name>[,<name>]* } where <name> is a file name pattern (* and ? wild-cards allowed)
+ * or the name of a folder which ends with '/'
+ * - default: ""
+ *
+ * BUILDER / Abort if Invalid Classpath
+ * Allow to toggle the builder to abort if the classpath is invalid
+ * - option id: "org.eclipse.jdt.core.builder.invalidClasspath"
+ * - possible values: { "abort", "ignore" }
+ * - default: "abort"
+ *
+ * BUILDER / Cleaning Output Folder(s)
+ * Indicate whether the JavaBuilder is allowed to clean the output folders
+ * when performing full build operations.
+ * - option id: "org.eclipse.jdt.core.builder.cleanOutputFolder"
+ * - possible values: { "clean", "ignore" }
+ * - default: "clean"
+ *
+ * BUILDER / Reporting Duplicate Resources
+ * Indicate the severity of the problem reported when more than one occurrence
+ * of a resource is to be copied into the output location.
+ * - option id: "org.eclipse.jdt.core.builder.duplicateResourceTask"
+ * - possible values: { "error", "warning" }
+ * - default: "warning"
+ *
+ * JAVACORE / Computing Project Build Order
+ * Indicate whether JavaCore should enforce the project build order to be based on
+ * the classpath prerequisite chain. When requesting to compute, this takes over
+ * the platform default order (based on project references).
+ * - option id: "org.eclipse.jdt.core.computeJavaBuildOrder"
+ * - possible values: { "compute", "ignore" }
+ * - default: "ignore"
+ *
+ * JAVACORE / Specify Default Source Encoding Format
+ * Get the encoding format for compiled sources. This setting is read-only, it is equivalent
+ * to 'ResourcesPlugin.getEncoding()'.
+ * - option id: "org.eclipse.jdt.core.encoding"
+ * - possible values: { any of the supported encoding name}.
+ * - default: <platform default>
+ *
+ * JAVACORE / Reporting Incomplete Classpath
+ * Indicate the severity of the problem reported when an entry on the classpath does not exist,
+ * is not legite or is not visible (for example, a referenced project is closed).
+ * - option id: "org.eclipse.jdt.core.incompleteClasspath"
+ * - possible values: { "error", "warning"}
+ * - default: "error"
+ *
+ * JAVACORE / Reporting Classpath Cycle
+ * Indicate the severity of the problem reported when a project is involved in a cycle.
+ * - option id: "org.eclipse.jdt.core.circularClasspath"
+ * - possible values: { "error", "warning" }
+ * - default: "error"
+ *
+ * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
+ * When disabled, no entry on a project classpath can be associated with
+ * an exclusion pattern.
+ * - option id: "org.eclipse.jdt.core.classpath.exclusionPatterns"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "enabled"
+ *
+ * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
+ * When disabled, no entry on a project classpath can be associated with
+ * a specific output location, preventing thus usage of multiple output locations.
+ * - option id: "org.eclipse.jdt.core.classpath.multipleOutputLocations"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "enabled"
+ *
+ * FORMATTER / Inserting New Line Before Opening Brace
+ * When Insert, a new line is inserted before an opening brace, otherwise nothing
+ * is inserted
+ * - option id: "org.eclipse.jdt.core.formatter.newline.openingBrace"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Inserting New Line Inside Control Statement
+ * When Insert, a new line is inserted between } and following else, catch, finally
+ * - option id: "org.eclipse.jdt.core.formatter.newline.controlStatement"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Clearing Blank Lines
+ * When Clear all, all blank lines are removed. When Preserve one, only one is kept
+ * and all others removed.
+ * - option id: "org.eclipse.jdt.core.formatter.newline.clearAll"
+ * - possible values: { "clear all", "preserve one" }
+ * - default: "preserve one"
+ *
+ * FORMATTER / Inserting New Line Between Else/If
+ * When Insert, a blank line is inserted between an else and an if when they are
+ * contiguous. When choosing to not insert, else-if will be kept on the same
+ * line when possible.
+ * - option id: "org.eclipse.jdt.core.formatter.newline.elseIf"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "do not insert"
+ *
+ * FORMATTER / Inserting New Line In Empty Block
+ * When insert, a line break is inserted between contiguous { and }, if } is not followed
+ * by a keyword.
+ * - option id: "org.eclipse.jdt.core.formatter.newline.emptyBlock"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "insert"
+ *
+ * FORMATTER / Splitting Lines Exceeding Length
+ * Enable splitting of long lines (exceeding the configurable length). Length of 0 will
+ * disable line splitting
+ * - option id: "org.eclipse.jdt.core.formatter.lineSplit"
+ * - possible values: "<n>", where n is zero or a positive integer
+ * - default: "80"
+ *
+ * FORMATTER / Compacting Assignment
+ * Assignments can be formatted asymmetrically, for example 'int x= 2;', when Normal, a space
+ * is inserted before the assignment operator
+ * - option id: "org.eclipse.jdt.core.formatter.style.assignment"
+ * - possible values: { "compact", "normal" }
+ * - default: "normal"
+ *
+ * FORMATTER / Defining Indentation Character
+ * Either choose to indent with tab characters or spaces
+ * - option id: "org.eclipse.jdt.core.formatter.tabulation.char"
+ * - possible values: { "tab", "space" }
+ * - default: "tab"
+ *
+ * FORMATTER / Defining Space Indentation Length
+ * When using spaces, set the amount of space characters to use for each
+ * indentation mark.
+ * - option id: "org.eclipse.jdt.core.formatter.tabulation.size"
+ * - possible values: "<n>", where n is a positive integer
+ * - default: "4"
+ *
+ * FORMATTER / Inserting space in cast expression
+ * When Insert, a space is added between the type and the expression in a cast expression.
+ * - option id: "org.eclipse.jdt.core.formatter.space.castexpression"
+ * - possible values: { "insert", "do not insert" }
+ * - default: "insert"
+ *
+ * CODEASSIST / Activate Visibility Sensitive Completion
+ * When active, completion doesn't show that you can not see
+ * (for example, you can not see private methods of a super class).
+ * - option id: "org.eclipse.jdt.core.codeComplete.visibilityCheck"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * CODEASSIST / Automatic Qualification of Implicit Members
+ * When active, completion automatically qualifies completion on implicit
+ * field references and message expressions.
+ * - option id: "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"
+ * - possible values: { "enabled", "disabled" }
+ * - default: "disabled"
+ *
+ * CODEASSIST / Define the Prefixes for Field Name
+ * When the prefixes is non empty, completion for field name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Static Field Name
+ * When the prefixes is non empty, completion for static field name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Local Variable Name
+ * When the prefixes is non empty, completion for local variable name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Prefixes for Argument Name
+ * When the prefixes is non empty, completion for argument name will begin with
+ * one of the proposed prefixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
+ * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Field Name
+ * When the suffixes is non empty, completion for field name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Static Field Name
+ * When the suffixes is non empty, completion for static field name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Local Variable Name
+ * When the suffixes is non empty, completion for local variable name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
+ * - default: ""
+ *
+ * CODEASSIST / Define the Suffixes for Argument Name
+ * When the suffixes is non empty, completion for argument name will end with
+ * one of the proposed suffixes.
+ * - option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
+ * - possible values: { "<suffix>[,<suffix>]*" } where <prefix> is a String without any wild-card
+ * - default: ""
+ * </pre>
+ *
+ * @return a mutable table containing the default settings of all known options
+ * (key type: <code>String</code>; value type: <code>String</code>)
+ * @see #setOptions
+ */
+public static Hashtable getDefaultOptions(){
+
+ Hashtable defaultOptions = new Hashtable(10);
+
+ // see #initializeDefaultPluginPreferences() for changing default settings
+ Preferences preferences = getPlugin().getPluginPreferences();
+ HashSet optionNames = JavaModelManager.OptionNames;
+
+ // get preferences set to their default
+ String[] defaultPropertyNames = preferences.defaultPropertyNames();
+ for (int i = 0; i < defaultPropertyNames.length; i++){
+ String propertyName = defaultPropertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+ }
+ }
+ // get preferences not set to their default
+ String[] propertyNames = preferences.propertyNames();
+ for (int i = 0; i < propertyNames.length; i++){
+ String propertyName = propertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+ }
+ }
+ // get encoding through resource plugin
+ defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
+
+ return defaultOptions;
+}
+
+/**
+ * Returns the single instance of the Java core plug-in runtime class.
+ * Equivalent to <code>(JavaCore) getPlugin()</code>.
+ *
+ * @return the single instance of the Java core plug-in runtime class
+ */
+public static PHPeclipsePlugin getJavaCore() {
+ return (PHPeclipsePlugin) getPlugin();
+}
+
+/**
+ * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
+ * Note that it may answer <code>null</code> if this option does not exist.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @param optionName the name of an option
+ * @return the String value of a given option
+ * @see JavaCore#getDefaultOptions
+ * @since 2.0
+ */
+public static String getOption(String optionName) {
+
+ if (CORE_ENCODING.equals(optionName)){
+ return ResourcesPlugin.getEncoding();
+ }
+ if (JavaModelManager.OptionNames.contains(optionName)){
Preferences preferences = getPlugin().getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
+ return preferences.getString(optionName).trim();
+ }
+ return null;
+}
+
+/**
+ * Returns the table of the current options. Initially, all options have their default values,
+ * and this method returns a table that includes all known options.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @return table of current settings of all options
+ * (key type: <code>String</code>; value type: <code>String</code>)
+ * @see JavaCore#getDefaultOptions
+ */
+public static Hashtable getOptions() {
+ Hashtable options = new Hashtable(10);
+
+ // see #initializeDefaultPluginPreferences() for changing default settings
+ Plugin plugin = getPlugin();
+ if (plugin != null) {
+ Preferences preferences = getPlugin().getPluginPreferences();
+ HashSet optionNames = JavaModelManager.OptionNames;
+
// get preferences set to their default
String[] defaultPropertyNames = preferences.defaultPropertyNames();
for (int i = 0; i < defaultPropertyNames.length; i++){
String propertyName = defaultPropertyNames[i];
- if (optionNames.contains(propertyName)) {
- defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+ if (optionNames.contains(propertyName)){
+ options.put(propertyName, preferences.getDefaultString(propertyName));
}
}
// get preferences not set to their default
String[] propertyNames = preferences.propertyNames();
for (int i = 0; i < propertyNames.length; i++){
String propertyName = propertyNames[i];
- if (optionNames.contains(propertyName)) {
- defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
+ if (optionNames.contains(propertyName)){
+ options.put(propertyName, preferences.getString(propertyName).trim());
}
}
// get encoding through resource plugin
- defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
-
- return defaultOptions;
+ options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
}
-
- /**
- * Returns the single instance of the Java core plug-in runtime class.
- * Equivalent to <code>(JavaCore) getPlugin()</code>.
- *
- * @return the single instance of the Java core plug-in runtime class
- */
- public static JavaCore getJavaCore() {
- return (JavaCore) getPlugin();
- }
-
- /**
- * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
- * Note that it may answer <code>null</code> if this option does not exist.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param optionName the name of an option
- * @return the String value of a given option
- * @see JavaCore#getDefaultOptions
- * @since 2.0
- */
- public static String getOption(String optionName) {
+ return options;
+}
- if (CORE_ENCODING.equals(optionName)){
- return ResourcesPlugin.getEncoding();
- }
- if (JavaModelManager.OptionNames.contains(optionName)){
- Preferences preferences = getPlugin().getPluginPreferences();
- return preferences.getString(optionName).trim();
- }
+/**
+ * This is a helper method, which returns the resolved classpath entry denoted
+ * by a given entry (if it is a variable entry). It is obtained by resolving the variable
+ * reference in the first segment. Returns <node>null</code> if unable to resolve using
+ * the following algorithm:
+ * <ul>
+ * <li> if variable segment cannot be resolved, returns <code>null</code></li>
+ * <li> finds a project, JAR or binary folder in the workspace at the resolved path location</li>
+ * <li> if none finds an external JAR file or folder outside the workspace at the resolved path location </li>
+ * <li> if none returns <code>null</code></li>
+ * </ul>
+ * <p>
+ * Variable source attachment path and root path are also resolved and recorded in the resulting classpath entry.
+ * <p>
+ * NOTE: This helper method does not handle classpath containers, for which should rather be used
+ * <code>JavaCore#getClasspathContainer(IPath, IJavaProject)</code>.
+ * <p>
+ *
+ * @param entry the given variable entry
+ * @return the resolved library or project classpath entry, or <code>null</code>
+ * if the given variable entry could not be resolved to a valid classpath entry
+ */
+public static IClasspathEntry getResolvedClasspathEntry(IClasspathEntry entry) {
+
+ if (entry.getEntryKind() != IClasspathEntry.CPE_VARIABLE)
+ return entry;
+
+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+ IPath resolvedPath = JavaCore.getResolvedVariablePath(entry.getPath());
+ if (resolvedPath == null)
return null;
- }
- /**
- * Returns the table of the current options. Initially, all options have their default values,
- * and this method returns a table that includes all known options.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @return table of current settings of all options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see JavaCore#getDefaultOptions
- */
- public static Hashtable getOptions() {
-
- Hashtable options = new Hashtable(10);
-
- // see #initializeDefaultPluginPreferences() for changing default settings
- Plugin plugin = getPlugin();
- if (plugin != null) {
- Preferences preferences = getPlugin().getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
-
- // get preferences set to their default
- String[] defaultPropertyNames = preferences.defaultPropertyNames();
- for (int i = 0; i < defaultPropertyNames.length; i++){
- String propertyName = defaultPropertyNames[i];
- if (optionNames.contains(propertyName)){
- options.put(propertyName, preferences.getDefaultString(propertyName));
- }
- }
- // get preferences not set to their default
- String[] propertyNames = preferences.propertyNames();
- for (int i = 0; i < propertyNames.length; i++){
- String propertyName = propertyNames[i];
- if (optionNames.contains(propertyName)){
- options.put(propertyName, preferences.getString(propertyName).trim());
- }
- }
- // get encoding through resource plugin
- options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
- }
- return options;
- }
-
- /**
- * Returns the single instance of the Java core plug-in runtime class.
- *
- * @return the single instance of the Java core plug-in runtime class
- */
- public static Plugin getPlugin() {
- return JAVA_CORE_PLUGIN;
- }
-
- /**
- * This is a helper method, which returns the resolved classpath entry denoted
- * by a given entry (if it is a variable entry). It is obtained by resolving the variable
- * reference in the first segment. Returns <node>null</code> if unable to resolve using
- * the following algorithm:
- * <ul>
- * <li> if variable segment cannot be resolved, returns <code>null</code></li>
- * <li> finds a project, JAR or binary folder in the workspace at the resolved path location</li>
- * <li> if none finds an external JAR file or folder outside the workspace at the resolved path location </li>
- * <li> if none returns <code>null</code></li>
- * </ul>
- * <p>
- * Variable source attachment path and root path are also resolved and recorded in the resulting classpath entry.
- * <p>
- * NOTE: This helper method does not handle classpath containers, for which should rather be used
- * <code>JavaCore#getClasspathContainer(IPath, IJavaProject)</code>.
- * <p>
- *
- * @param entry the given variable entry
- * @return the resolved library or project classpath entry, or <code>null</code>
- * if the given variable entry could not be resolved to a valid classpath entry
- */
-// public static IClasspathEntry getResolvedClasspathEntry(IClasspathEntry entry) {
-//
-// if (entry.getEntryKind() != IClasspathEntry.CPE_VARIABLE)
-// return entry;
-//
-// IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-// IPath resolvedPath = JavaCore.getResolvedVariablePath(entry.getPath());
-// if (resolvedPath == null)
-// return null;
-//
-// Object target = JavaModel.getTarget(workspaceRoot, resolvedPath, false);
-// if (target == null)
-// return null;
-//
-// // inside the workspace
-// if (target instanceof IResource) {
-// IResource resolvedResource = (IResource) target;
-// if (resolvedResource != null) {
-// switch (resolvedResource.getType()) {
-//
-// case IResource.PROJECT :
-// // internal project
-// return JavaCore.newProjectEntry(resolvedPath, entry.isExported());
-//
-// case IResource.FILE :
-// if (Util.isArchiveFileName(resolvedResource.getName())) {
-// // internal binary archive
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
-// }
-// break;
-//
-// case IResource.FOLDER :
-// // internal binary folder
+ Object target = JavaModel.getTarget(workspaceRoot, resolvedPath, false);
+ if (target == null)
+ return null;
+
+ // inside the workspace
+ if (target instanceof IResource) {
+ IResource resolvedResource = (IResource) target;
+ if (resolvedResource != null) {
+ switch (resolvedResource.getType()) {
+
+ case IResource.PROJECT :
+ // internal project
+ return JavaCore.newProjectEntry(resolvedPath, entry.isExported());
+
+ case IResource.FILE :
+// if (Util.isArchiveFileName(resolvedResource.getName())) {
+// // internal binary archive
// return JavaCore.newLibraryEntry(
// resolvedPath,
// getResolvedVariablePath(entry.getSourceAttachmentPath()),
// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
// entry.isExported());
-// }
-// }
-// }
-// // outside the workspace
-// if (target instanceof File) {
-// File externalFile = (File) target;
-// if (externalFile.isFile()) {
-// String fileName = externalFile.getName().toLowerCase();
-// if (fileName.endsWith(".jar" //$NON-NLS-1$
-// ) || fileName.endsWith(".zip" //$NON-NLS-1$
-// )) { // external binary archive
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
-// }
-// } else { // external binary folder
-// if (resolvedPath.isAbsolute()){
+// }
+ break;
+
+ case IResource.FOLDER :
+ // internal binary folder
// return JavaCore.newLibraryEntry(
// resolvedPath,
// getResolvedVariablePath(entry.getSourceAttachmentPath()),
// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
// entry.isExported());
-// }
+ break;
+ }
+ }
+ }
+ // outside the workspace
+ if (target instanceof File) {
+ File externalFile = (File) target;
+ if (externalFile.isFile()) {
+ String fileName = externalFile.getName().toLowerCase();
+// if (fileName.endsWith(".jar" //$NON-NLS-1$
+// ) || fileName.endsWith(".zip" //$NON-NLS-1$
+// )) { // external binary archive
+// return JavaCore.newLibraryEntry(
+// resolvedPath,
+// getResolvedVariablePath(entry.getSourceAttachmentPath()),
+// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
+// entry.isExported());
// }
-// }
-// return null;
-// }
+ } else { // external binary folder
+ if (resolvedPath.isAbsolute()){
+// return JavaCore.newLibraryEntry(
+// resolvedPath,
+// getResolvedVariablePath(entry.getSourceAttachmentPath()),
+// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
+// entry.isExported());
+ }
+ }
+ }
+ return null;
+}
- /**
- * Resolve a variable path (helper method).
- *
- * @param variablePath the given variable path
- * @return the resolved variable path or <code>null</code> if none
- */
-// public static IPath getResolvedVariablePath(IPath variablePath) {
-//
-// if (variablePath == null)
-// return null;
-// int count = variablePath.segmentCount();
-// if (count == 0)
-// return null;
-//
-// // lookup variable
-// String variableName = variablePath.segment(0);
-// IPath resolvedPath = JavaCore.getClasspathVariable(variableName);
-// if (resolvedPath == null)
-// return null;
-//
-// // append path suffix
-// if (count > 1) {
-// resolvedPath = resolvedPath.append(variablePath.removeFirstSegments(1));
-// }
-// return resolvedPath;
-// }
+/**
+ * Resolve a variable path (helper method).
+ *
+ * @param variablePath the given variable path
+ * @return the resolved variable path or <code>null</code> if none
+ */
+public static IPath getResolvedVariablePath(IPath variablePath) {
+
+ if (variablePath == null)
+ return null;
+ int count = variablePath.segmentCount();
+ if (count == 0)
+ return null;
+
+ // lookup variable
+ String variableName = variablePath.segment(0);
+ IPath resolvedPath = JavaCore.getClasspathVariable(variableName);
+ if (resolvedPath == null)
+ return null;
+
+ // append path suffix
+ if (count > 1) {
+ resolvedPath = resolvedPath.append(variablePath.removeFirstSegments(1));
+ }
+ return resolvedPath;
+}
- /**
- * Answers the shared working copies currently registered for this buffer factory.
- * Working copies can be shared by several clients using the same buffer factory,see
- * <code>IWorkingCopy.getSharedWorkingCopy</code>.
- *
- * @param factory the given buffer factory
- * @return the list of shared working copies for a given buffer factory
- * @see IWorkingCopy
- * @since 2.0
- */
- public static IWorkingCopy[] getSharedWorkingCopies(IBufferFactory factory){
+/**
+ * Answers the shared working copies currently registered for this buffer factory.
+ * Working copies can be shared by several clients using the same buffer factory,see
+ * <code>IWorkingCopy.getSharedWorkingCopy</code>.
+ *
+ * @param factory the given buffer factory
+ * @return the list of shared working copies for a given buffer factory
+ * @see IWorkingCopy
+ * @since 2.0
+ */
+public static IWorkingCopy[] getSharedWorkingCopies(IBufferFactory factory){
- // if factory is null, default factory must be used
- if (factory == null) factory = BufferManager.getDefaultBufferManager().getDefaultBufferFactory();
- Map sharedWorkingCopies = JavaModelManager.getJavaModelManager().sharedWorkingCopies;
+ // if factory is null, default factory must be used
+ if (factory == null) factory = BufferManager.getDefaultBufferManager().getDefaultBufferFactory();
+ Map sharedWorkingCopies = JavaModelManager.getJavaModelManager().sharedWorkingCopies;
- Map perFactoryWorkingCopies = (Map) sharedWorkingCopies.get(factory);
- if (perFactoryWorkingCopies == null) return JavaModelManager.NoWorkingCopy;
- Collection copies = perFactoryWorkingCopies.values();
- IWorkingCopy[] result = new IWorkingCopy[copies.size()];
- copies.toArray(result);
- return result;
- }
+ Map perFactoryWorkingCopies = (Map) sharedWorkingCopies.get(factory);
+ if (perFactoryWorkingCopies == null) return JavaModelManager.NoWorkingCopy;
+ Collection copies = perFactoryWorkingCopies.values();
+ IWorkingCopy[] result = new IWorkingCopy[copies.size()];
+ copies.toArray(result);
+ return result;
+}
- /**
- * Initializes the default preferences settings for this plug-in.
- */
- protected void initializeDefaultPluginPreferences() {
+/**
+ * Initializes the default preferences settings for this plug-in.
+ */
+public static void initializeDefaultPluginPreferences() {
- Preferences preferences = getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
+ Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences();
+ HashSet optionNames = JavaModelManager.OptionNames;
- // Compiler settings
- preferences.setDefault(COMPILER_LOCAL_VARIABLE_ATTR, GENERATE);
- optionNames.add(COMPILER_LOCAL_VARIABLE_ATTR);
+ // Compiler settings
+ preferences.setDefault(COMPILER_LOCAL_VARIABLE_ATTR, GENERATE);
+ optionNames.add(COMPILER_LOCAL_VARIABLE_ATTR);
- preferences.setDefault(COMPILER_LINE_NUMBER_ATTR, GENERATE);
- optionNames.add(COMPILER_LINE_NUMBER_ATTR);
+ preferences.setDefault(COMPILER_LINE_NUMBER_ATTR, GENERATE);
+ optionNames.add(COMPILER_LINE_NUMBER_ATTR);
- preferences.setDefault(COMPILER_SOURCE_FILE_ATTR, GENERATE);
- optionNames.add(COMPILER_SOURCE_FILE_ATTR);
+ preferences.setDefault(COMPILER_SOURCE_FILE_ATTR, GENERATE);
+ optionNames.add(COMPILER_SOURCE_FILE_ATTR);
- preferences.setDefault(COMPILER_CODEGEN_UNUSED_LOCAL, PRESERVE);
- optionNames.add(COMPILER_CODEGEN_UNUSED_LOCAL);
+ preferences.setDefault(COMPILER_CODEGEN_UNUSED_LOCAL, PRESERVE);
+ optionNames.add(COMPILER_CODEGEN_UNUSED_LOCAL);
- preferences.setDefault(COMPILER_CODEGEN_TARGET_PLATFORM, VERSION_1_1);
- optionNames.add(COMPILER_CODEGEN_TARGET_PLATFORM);
+ preferences.setDefault(COMPILER_CODEGEN_TARGET_PLATFORM, VERSION_1_1);
+ optionNames.add(COMPILER_CODEGEN_TARGET_PLATFORM);
- preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, ERROR);
- optionNames.add(COMPILER_PB_UNREACHABLE_CODE);
+ preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, ERROR);
+ optionNames.add(COMPILER_PB_UNREACHABLE_CODE);
- preferences.setDefault(COMPILER_PB_INVALID_IMPORT, ERROR);
- optionNames.add(COMPILER_PB_INVALID_IMPORT);
+ preferences.setDefault(COMPILER_PB_INVALID_IMPORT, ERROR);
+ optionNames.add(COMPILER_PB_INVALID_IMPORT);
- preferences.setDefault(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, WARNING);
- optionNames.add(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD);
+ preferences.setDefault(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, WARNING);
+ optionNames.add(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD);
- preferences.setDefault(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME, WARNING);
- optionNames.add(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME);
+ preferences.setDefault(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME, WARNING);
+ optionNames.add(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME);
- preferences.setDefault(COMPILER_PB_DEPRECATION, WARNING);
- optionNames.add(COMPILER_PB_DEPRECATION);
+ preferences.setDefault(COMPILER_PB_DEPRECATION, WARNING);
+ optionNames.add(COMPILER_PB_DEPRECATION);
- preferences.setDefault(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE, DISABLED);
- optionNames.add(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE);
+ preferences.setDefault(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE, DISABLED);
+ optionNames.add(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE);
- preferences.setDefault(COMPILER_PB_HIDDEN_CATCH_BLOCK, WARNING);
- optionNames.add(COMPILER_PB_HIDDEN_CATCH_BLOCK);
+ preferences.setDefault(COMPILER_PB_HIDDEN_CATCH_BLOCK, WARNING);
+ optionNames.add(COMPILER_PB_HIDDEN_CATCH_BLOCK);
- preferences.setDefault(COMPILER_PB_UNUSED_LOCAL, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_LOCAL);
+ preferences.setDefault(COMPILER_PB_UNUSED_LOCAL, IGNORE);
+ optionNames.add(COMPILER_PB_UNUSED_LOCAL);
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER);
+ preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER, IGNORE);
+ optionNames.add(COMPILER_PB_UNUSED_PARAMETER);
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT, DISABLED);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT);
+ preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT, DISABLED);
+ optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT);
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE, DISABLED);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE);
+ preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE, DISABLED);
+ optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE);
- preferences.setDefault(COMPILER_PB_UNUSED_IMPORT, WARNING);
- optionNames.add(COMPILER_PB_UNUSED_IMPORT);
+ preferences.setDefault(COMPILER_PB_UNUSED_IMPORT, WARNING);
+ optionNames.add(COMPILER_PB_UNUSED_IMPORT);
- preferences.setDefault(COMPILER_PB_UNUSED_PRIVATE_MEMBER, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_PRIVATE_MEMBER);
+ preferences.setDefault(COMPILER_PB_UNUSED_PRIVATE_MEMBER, IGNORE);
+ optionNames.add(COMPILER_PB_UNUSED_PRIVATE_MEMBER);
- preferences.setDefault(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, IGNORE);
- optionNames.add(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION);
+ preferences.setDefault(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, IGNORE);
+ optionNames.add(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION);
- preferences.setDefault(COMPILER_PB_NON_NLS_STRING_LITERAL, IGNORE);
- optionNames.add(COMPILER_PB_NON_NLS_STRING_LITERAL);
+ preferences.setDefault(COMPILER_PB_NON_NLS_STRING_LITERAL, IGNORE);
+ optionNames.add(COMPILER_PB_NON_NLS_STRING_LITERAL);
- preferences.setDefault(COMPILER_PB_ASSERT_IDENTIFIER, IGNORE);
- optionNames.add(COMPILER_PB_ASSERT_IDENTIFIER);
+ preferences.setDefault(COMPILER_PB_ASSERT_IDENTIFIER, IGNORE);
+ optionNames.add(COMPILER_PB_ASSERT_IDENTIFIER);
- preferences.setDefault(COMPILER_PB_STATIC_ACCESS_RECEIVER, WARNING);
- optionNames.add(COMPILER_PB_STATIC_ACCESS_RECEIVER);
+ preferences.setDefault(COMPILER_PB_STATIC_ACCESS_RECEIVER, WARNING);
+ optionNames.add(COMPILER_PB_STATIC_ACCESS_RECEIVER);
- preferences.setDefault(COMPILER_PB_NO_EFFECT_ASSIGNMENT, WARNING);
- optionNames.add(COMPILER_PB_NO_EFFECT_ASSIGNMENT);
+ preferences.setDefault(COMPILER_PB_NO_EFFECT_ASSIGNMENT, WARNING);
+ optionNames.add(COMPILER_PB_NO_EFFECT_ASSIGNMENT);
- preferences.setDefault(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD, WARNING);
- optionNames.add(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD);
+ preferences.setDefault(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD, WARNING);
+ optionNames.add(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD);
- preferences.setDefault(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION, WARNING);
- optionNames.add(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION);
+ preferences.setDefault(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION, WARNING);
+ optionNames.add(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION);
- preferences.setDefault(COMPILER_TASK_TAGS, DEFAULT_TASK_TAG); //$NON-NLS-1$
- optionNames.add(COMPILER_TASK_TAGS);
+ preferences.setDefault(COMPILER_TASK_TAGS, DEFAULT_TASK_TAG); //$NON-NLS-1$
+ optionNames.add(COMPILER_TASK_TAGS);
- preferences.setDefault(COMPILER_TASK_PRIORITIES, DEFAULT_TASK_PRIORITY); //$NON-NLS-1$
- optionNames.add(COMPILER_TASK_PRIORITIES);
+ preferences.setDefault(COMPILER_TASK_PRIORITIES, DEFAULT_TASK_PRIORITY); //$NON-NLS-1$
+ optionNames.add(COMPILER_TASK_PRIORITIES);
- preferences.setDefault(COMPILER_SOURCE, VERSION_1_3);
- optionNames.add(COMPILER_SOURCE);
+ preferences.setDefault(COMPILER_SOURCE, VERSION_1_3);
+ optionNames.add(COMPILER_SOURCE);
- preferences.setDefault(COMPILER_COMPLIANCE, VERSION_1_3);
- optionNames.add(COMPILER_COMPLIANCE);
+ preferences.setDefault(COMPILER_COMPLIANCE, VERSION_1_3);
+ optionNames.add(COMPILER_COMPLIANCE);
- preferences.setDefault(COMPILER_PB_MAX_PER_UNIT, "100"); //$NON-NLS-1$
- optionNames.add(COMPILER_PB_MAX_PER_UNIT);
+ preferences.setDefault(COMPILER_PB_MAX_PER_UNIT, "100"); //$NON-NLS-1$
+ optionNames.add(COMPILER_PB_MAX_PER_UNIT);
- // Builder settings
- preferences.setDefault(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, ""); //$NON-NLS-1$
- optionNames.add(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER);
+ // Builder settings
+ preferences.setDefault(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, ""); //$NON-NLS-1$
+ optionNames.add(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER);
- preferences.setDefault(CORE_JAVA_BUILD_INVALID_CLASSPATH, ABORT);
- optionNames.add(CORE_JAVA_BUILD_INVALID_CLASSPATH);
+ preferences.setDefault(CORE_JAVA_BUILD_INVALID_CLASSPATH, ABORT);
+ optionNames.add(CORE_JAVA_BUILD_INVALID_CLASSPATH);
- preferences.setDefault(CORE_JAVA_BUILD_DUPLICATE_RESOURCE, WARNING);
- optionNames.add(CORE_JAVA_BUILD_DUPLICATE_RESOURCE);
+ preferences.setDefault(CORE_JAVA_BUILD_DUPLICATE_RESOURCE, WARNING);
+ optionNames.add(CORE_JAVA_BUILD_DUPLICATE_RESOURCE);
- preferences.setDefault(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, CLEAN);
- optionNames.add(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER);
+ preferences.setDefault(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, CLEAN);
+ optionNames.add(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER);
- // JavaCore settings
- preferences.setDefault(CORE_JAVA_BUILD_ORDER, IGNORE);
- optionNames.add(CORE_JAVA_BUILD_ORDER);
+ // JavaCore settings
+ preferences.setDefault(CORE_JAVA_BUILD_ORDER, IGNORE);
+ optionNames.add(CORE_JAVA_BUILD_ORDER);
- preferences.setDefault(CORE_CIRCULAR_CLASSPATH, ERROR);
- optionNames.add(CORE_CIRCULAR_CLASSPATH);
+ preferences.setDefault(CORE_CIRCULAR_CLASSPATH, ERROR);
+ optionNames.add(CORE_CIRCULAR_CLASSPATH);
- preferences.setDefault(CORE_INCOMPLETE_CLASSPATH, ERROR);
- optionNames.add(CORE_INCOMPLETE_CLASSPATH);
+ preferences.setDefault(CORE_INCOMPLETE_CLASSPATH, ERROR);
+ optionNames.add(CORE_INCOMPLETE_CLASSPATH);
- preferences.setDefault(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS, ENABLED);
- optionNames.add(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS);
+ preferences.setDefault(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS, ENABLED);
+ optionNames.add(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS);
- preferences.setDefault(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS, ENABLED);
- optionNames.add(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS);
+ preferences.setDefault(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS, ENABLED);
+ optionNames.add(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS);
- // encoding setting comes from resource plug-in
- optionNames.add(CORE_ENCODING);
+ // encoding setting comes from resource plug-in
+ optionNames.add(CORE_ENCODING);
- // Formatter settings
- preferences.setDefault(FORMATTER_NEWLINE_OPENING_BRACE, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_OPENING_BRACE);
+ // Formatter settings
+ preferences.setDefault(FORMATTER_NEWLINE_OPENING_BRACE, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_OPENING_BRACE);
- preferences.setDefault(FORMATTER_NEWLINE_CONTROL, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_CONTROL);
+ preferences.setDefault(FORMATTER_NEWLINE_CONTROL, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_CONTROL);
- preferences.setDefault(FORMATTER_CLEAR_BLANK_LINES, PRESERVE_ONE);
- optionNames.add(FORMATTER_CLEAR_BLANK_LINES);
+ preferences.setDefault(FORMATTER_CLEAR_BLANK_LINES, PRESERVE_ONE);
+ optionNames.add(FORMATTER_CLEAR_BLANK_LINES);
- preferences.setDefault(FORMATTER_NEWLINE_ELSE_IF, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_ELSE_IF);
+ preferences.setDefault(FORMATTER_NEWLINE_ELSE_IF, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_ELSE_IF);
- preferences.setDefault(FORMATTER_NEWLINE_EMPTY_BLOCK, INSERT);
- optionNames.add(FORMATTER_NEWLINE_EMPTY_BLOCK);
+ preferences.setDefault(FORMATTER_NEWLINE_EMPTY_BLOCK, INSERT);
+ optionNames.add(FORMATTER_NEWLINE_EMPTY_BLOCK);
- preferences.setDefault(FORMATTER_LINE_SPLIT, "80"); //$NON-NLS-1$
- optionNames.add(FORMATTER_LINE_SPLIT);
+ preferences.setDefault(FORMATTER_LINE_SPLIT, "80"); //$NON-NLS-1$
+ optionNames.add(FORMATTER_LINE_SPLIT);
- preferences.setDefault(FORMATTER_COMPACT_ASSIGNMENT, NORMAL);
- optionNames.add(FORMATTER_COMPACT_ASSIGNMENT);
+ preferences.setDefault(FORMATTER_COMPACT_ASSIGNMENT, NORMAL);
+ optionNames.add(FORMATTER_COMPACT_ASSIGNMENT);
- preferences.setDefault(FORMATTER_TAB_CHAR, TAB);
- optionNames.add(FORMATTER_TAB_CHAR);
+ preferences.setDefault(FORMATTER_TAB_CHAR, TAB);
+ optionNames.add(FORMATTER_TAB_CHAR);
- preferences.setDefault(FORMATTER_TAB_SIZE, "4"); //$NON-NLS-1$
- optionNames.add(FORMATTER_TAB_SIZE);
+ preferences.setDefault(FORMATTER_TAB_SIZE, "4"); //$NON-NLS-1$
+ optionNames.add(FORMATTER_TAB_SIZE);
- preferences.setDefault(FORMATTER_SPACE_CASTEXPRESSION, INSERT); //$NON-NLS-1$
- optionNames.add(FORMATTER_SPACE_CASTEXPRESSION);
+ preferences.setDefault(FORMATTER_SPACE_CASTEXPRESSION, INSERT); //$NON-NLS-1$
+ optionNames.add(FORMATTER_SPACE_CASTEXPRESSION);
- // CodeAssist settings
- preferences.setDefault(CODEASSIST_VISIBILITY_CHECK, DISABLED); //$NON-NLS-1$
- optionNames.add(CODEASSIST_VISIBILITY_CHECK);
+ // CodeAssist settings
+ preferences.setDefault(CODEASSIST_VISIBILITY_CHECK, DISABLED); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_VISIBILITY_CHECK);
- preferences.setDefault(CODEASSIST_IMPLICIT_QUALIFICATION, DISABLED); //$NON-NLS-1$
- optionNames.add(CODEASSIST_IMPLICIT_QUALIFICATION);
+ preferences.setDefault(CODEASSIST_IMPLICIT_QUALIFICATION, DISABLED); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_IMPLICIT_QUALIFICATION);
- preferences.setDefault(CODEASSIST_FIELD_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_FIELD_PREFIXES);
+ preferences.setDefault(CODEASSIST_FIELD_PREFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_FIELD_PREFIXES);
- preferences.setDefault(CODEASSIST_STATIC_FIELD_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_STATIC_FIELD_PREFIXES);
+ preferences.setDefault(CODEASSIST_STATIC_FIELD_PREFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_STATIC_FIELD_PREFIXES);
- preferences.setDefault(CODEASSIST_LOCAL_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_LOCAL_PREFIXES);
+ preferences.setDefault(CODEASSIST_LOCAL_PREFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_LOCAL_PREFIXES);
- preferences.setDefault(CODEASSIST_ARGUMENT_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_ARGUMENT_PREFIXES);
+ preferences.setDefault(CODEASSIST_ARGUMENT_PREFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_ARGUMENT_PREFIXES);
- preferences.setDefault(CODEASSIST_FIELD_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_FIELD_SUFFIXES);
+ preferences.setDefault(CODEASSIST_FIELD_SUFFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_FIELD_SUFFIXES);
- preferences.setDefault(CODEASSIST_STATIC_FIELD_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_STATIC_FIELD_SUFFIXES);
+ preferences.setDefault(CODEASSIST_STATIC_FIELD_SUFFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_STATIC_FIELD_SUFFIXES);
- preferences.setDefault(CODEASSIST_LOCAL_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_LOCAL_SUFFIXES);
+ preferences.setDefault(CODEASSIST_LOCAL_SUFFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_LOCAL_SUFFIXES);
- preferences.setDefault(CODEASSIST_ARGUMENT_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_ARGUMENT_SUFFIXES);
- }
+ preferences.setDefault(CODEASSIST_ARGUMENT_SUFFIXES, ""); //$NON-NLS-1$
+ optionNames.add(CODEASSIST_ARGUMENT_SUFFIXES);
+}
- /**
- * Returns whether the given marker references the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param element the element
- * @param marker the marker
- * @return <code>true</code> if the marker references the element, false otherwise
- * @exception CoreException if the <code>IMarker.getAttribute</code> on the marker fails
- */
- public static boolean isReferencedBy(IJavaElement element, IMarker marker) throws CoreException {
+/**
+ * Returns whether the given marker references the given Java element.
+ * Used for markers, which denote a Java element rather than a resource.
+ *
+ * @param element the element
+ * @param marker the marker
+ * @return <code>true</code> if the marker references the element, false otherwise
+ * @exception CoreException if the <code>IMarker.getAttribute</code> on the marker fails
+ */
+public static boolean isReferencedBy(IJavaElement element, IMarker marker) throws CoreException {
- // only match units or classfiles
- if (element instanceof IMember){
- IMember member = (IMember) element;
- if (member.isBinary()){
- element = null; //member.getClassFile();
- } else {
- element = member.getCompilationUnit();
- }
+ // only match units or classfiles
+ if (element instanceof IMember){
+ IMember member = (IMember) element;
+ if (member.isBinary()){
+ element = null; //member.getClassFile();
+ } else {
+ element = member.getCompilationUnit();
}
- if (element == null) return false;
- if (marker == null) return false;
+ }
+ if (element == null) return false;
+ if (marker == null) return false;
- String markerHandleId = (String)marker.getAttribute(ATT_HANDLE_ID);
- if (markerHandleId == null) return false;
+ String markerHandleId = (String)marker.getAttribute(ATT_HANDLE_ID);
+ if (markerHandleId == null) return false;
- IJavaElement markerElement = JavaCore.create(markerHandleId);
-// while (true){
- if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
+ IJavaElement markerElement = JavaCore.create(markerHandleId);
+// while (true){
+ if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
- // cycle through enclosing types in case marker is associated with a classfile (15568)
-// if (markerElement instanceof IClassFile){
-// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
-// if (enclosingType != null){
-// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
-// continue;
-// }
+ // cycle through enclosing types in case marker is associated with a classfile (15568)
+// if (markerElement instanceof IClassFile){
+// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
+// if (enclosingType != null){
+// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
+// continue;
// }
-// break;
// }
- return false;
- }
+// break;
+// }
+ return false;
+}
- /**
- * Returns whether the given marker delta references the given Java element.
- * Used for markers deltas, which denote a Java element rather than a resource.
- *
- * @param element the element
- * @param markerDelta the marker delta
- * @return <code>true</code> if the marker delta references the element
- * @exception CoreException if the <code>IMarkerDelta.getAttribute</code> on the marker delta fails
- */
- public static boolean isReferencedBy(IJavaElement element, IMarkerDelta markerDelta) throws CoreException {
+/**
+ * Returns whether the given marker delta references the given Java element.
+ * Used for markers deltas, which denote a Java element rather than a resource.
+ *
+ * @param element the element
+ * @param markerDelta the marker delta
+ * @return <code>true</code> if the marker delta references the element
+ * @exception CoreException if the <code>IMarkerDelta.getAttribute</code> on the marker delta fails
+ */
+public static boolean isReferencedBy(IJavaElement element, IMarkerDelta markerDelta) throws CoreException {
- // only match units or classfiles
- if (element instanceof IMember){
- IMember member = (IMember) element;
- if (member.isBinary()){
- element = null; //member.getClassFile();
- } else {
- element = member.getCompilationUnit();
- }
+ // only match units or classfiles
+ if (element instanceof IMember){
+ IMember member = (IMember) element;
+ if (member.isBinary()){
+ element = null; //member.getClassFile();
+ } else {
+ element = member.getCompilationUnit();
}
- if (element == null) return false;
- if (markerDelta == null) return false;
+ }
+ if (element == null) return false;
+ if (markerDelta == null) return false;
- String markerDeltarHandleId = (String)markerDelta.getAttribute(ATT_HANDLE_ID);
- if (markerDeltarHandleId == null) return false;
+ String markerDeltarHandleId = (String)markerDelta.getAttribute(ATT_HANDLE_ID);
+ if (markerDeltarHandleId == null) return false;
- IJavaElement markerElement = JavaCore.create(markerDeltarHandleId);
-// while (true){
- if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
+ IJavaElement markerElement = JavaCore.create(markerDeltarHandleId);
+// while (true){
+ if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
- // cycle through enclosing types in case marker is associated with a classfile (15568)
-// if (markerElement instanceof IClassFile){
-// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
-// if (enclosingType != null){
-// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
-// continue;
-// }
+ // cycle through enclosing types in case marker is associated with a classfile (15568)
+// if (markerElement instanceof IClassFile){
+// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
+// if (enclosingType != null){
+// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
+// continue;
// }
-// break;
// }
- return false;
- }
-
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
- * for the given path. The path of the container will be used during resolution so as to map this
- * container entry to a set of other classpath entries the container is acting for.
- * <p>
- * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
- * which can be interpreted differently for each Java project where it is used.
- * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
- * and updated with <code>JavaCore.classpathContainerChanged</code>
- * <p>
- * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
- * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A container path must be formed of at least one segment, where: <ul>
- * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
- * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
- * <li> the remaining segments will be passed onto the initializer, and can be used as additional
- * hints during the initialization phase. </li>
- * </ul>
- * <p>
- * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
- *
- * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
- *
- * <extension
- * point="org.eclipse.jdt.core.classpathContainerInitializer">
- * <containerInitializer
- * id="MyProvidedJDK"
- * class="com.example.MyInitializer"/>
- * <p>
- * Note that this operation does not attempt to validate classpath containers
- * or access the resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newContainerEntry(-,false)</code>.
- * <p>
- * @param containerPath the path identifying the container, it must be formed of two
- * segments
- * @return a new container classpath entry
- *
- * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
- * @see JavaCore#newContainerEntry(IPath, boolean)
- * @since 2.0
- */
-// public static IClasspathEntry newContainerEntry(IPath containerPath) {
-//
-// return newContainerEntry(containerPath, false);
+// break;
// }
+ return false;
+}
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
- * for the given path. The path of the container will be used during resolution so as to map this
- * container entry to a set of other classpath entries the container is acting for.
- * <p>
- * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
- * which can be interpreted differently for each Java project where it is used.
- * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
- * and updated with <code>JavaCore.classpathContainerChanged</code>
- * <p>
- * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
- * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A container path must be formed of at least one segment, where: <ul>
- * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
- * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
- * <li> the remaining segments will be passed onto the initializer, and can be used as additional
- * hints during the initialization phase. </li>
- * </ul>
- * <p>
- * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
- *
- * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
- *
- * <extension
- * point="org.eclipse.jdt.core.classpathContainerInitializer">
- * <containerInitializer
- * id="MyProvidedJDK"
- * class="com.example.MyInitializer"/>
- * <p>
- * Note that this operation does not attempt to validate classpath containers
- * or access the resources at the given paths.
- * <p>
- * @param containerPath the path identifying the container, it must be formed of at least
- * one segment (ID+hints)
- * @param isExported a boolean indicating whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new container classpath entry
- *
- * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
- * @see JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
- * @see JavaCore#newContainerEntry(IPath, boolean)
- * @since 2.0
- */
-// public static IClasspathEntry newContainerEntry(IPath containerPath, boolean isExported) {
-//
-// if (containerPath == null || containerPath.segmentCount() < 1) {
-// Assert.isTrue(
-// false,
-// "Illegal classpath container path: \'" + containerPath.makeRelative().toString() + "\', must have at least one segment (containerID+hints)"); //$NON-NLS-1$//$NON-NLS-2$
-// }
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_SOURCE,
-// IClasspathEntry.CPE_CONTAINER,
-// containerPath,
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// null, // source attachment
-// null, // source attachment root
-// null, // specific output folder
-// isExported);
-// }
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
+ * for the given path. The path of the container will be used during resolution so as to map this
+ * container entry to a set of other classpath entries the container is acting for.
+ * <p>
+ * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
+ * which can be interpreted differently for each Java project where it is used.
+ * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
+ * and updated with <code>JavaCore.classpathContainerChanged</code>
+ * <p>
+ * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
+ * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
+ * <p>
+ * A container path must be formed of at least one segment, where: <ul>
+ * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
+ * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
+ * <li> the remaining segments will be passed onto the initializer, and can be used as additional
+ * hints during the initialization phase. </li>
+ * </ul>
+ * <p>
+ * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
+ *
+ * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
+ *
+ * <extension
+ * point="org.eclipse.jdt.core.classpathContainerInitializer">
+ * <containerInitializer
+ * id="MyProvidedJDK"
+ * class="com.example.MyInitializer"/>
+ * <p>
+ * Note that this operation does not attempt to validate classpath containers
+ * or access the resources at the given paths.
+ * <p>
+ * The resulting entry is not exported to dependent projects. This method is equivalent to
+ * <code>newContainerEntry(-,false)</code>.
+ * <p>
+ * @param containerPath the path identifying the container, it must be formed of two
+ * segments
+ * @return a new container classpath entry
+ *
+ * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
+ * @see JavaCore#newContainerEntry(IPath, boolean)
+ * @since 2.0
+ */
+public static IClasspathEntry newContainerEntry(IPath containerPath) {
+
+ return newContainerEntry(containerPath, false);
+}
- /**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_LIBRARY</code> for the
- * JAR or folder identified by the given absolute path. This specifies that all package fragments
- * within the root will have children of type <code>IClassFile</code>.
- * <p>
- * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
- * The target JAR or folder can either be defined internally to the workspace (absolute path relative
- * to the workspace root) or externally to the workspace (absolute path in the file system).
- * <p>
- * e.g. Here are some examples of binary path usage<ul>
- * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
- * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
- * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
- * </ul>
- * Note that this operation does not attempt to validate or access the
- * resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newLibraryEntry(-,-,-,false)</code>.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
- * or <code>null</code> if none
- * @param sourceAttachmentRootPath the location of the root within the source archive or folder
- * or <code>null</code> if this location should be automatically detected.
- * @return a new library classpath entry
- *
- * @see #newLibraryEntry(IPath, IPath, IPath, boolean)
- */
-// public static IClasspathEntry newLibraryEntry(
-// IPath path,
-// IPath sourceAttachmentPath,
-// IPath sourceAttachmentRootPath) {
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
+ * for the given path. The path of the container will be used during resolution so as to map this
+ * container entry to a set of other classpath entries the container is acting for.
+ * <p>
+ * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
+ * which can be interpreted differently for each Java project where it is used.
+ * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
+ * and updated with <code>JavaCore.classpathContainerChanged</code>
+ * <p>
+ * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
+ * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
+ * <p>
+ * A container path must be formed of at least one segment, where: <ul>
+ * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
+ * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
+ * <li> the remaining segments will be passed onto the initializer, and can be used as additional
+ * hints during the initialization phase. </li>
+ * </ul>
+ * <p>
+ * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
+ *
+ * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
+ *
+ * <extension
+ * point="org.eclipse.jdt.core.classpathContainerInitializer">
+ * <containerInitializer
+ * id="MyProvidedJDK"
+ * class="com.example.MyInitializer"/>
+ * <p>
+ * Note that this operation does not attempt to validate classpath containers
+ * or access the resources at the given paths.
+ * <p>
+ * @param containerPath the path identifying the container, it must be formed of at least
+ * one segment (ID+hints)
+ * @param isExported a boolean indicating whether this entry is contributed to dependent
+ * projects in addition to the output location
+ * @return a new container classpath entry
+ *
+ * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
+ * @see JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
+ * @see JavaCore#newContainerEntry(IPath, boolean)
+ * @since 2.0
+ */
+public static IClasspathEntry newContainerEntry(IPath containerPath, boolean isExported) {
+
+ if (containerPath == null || containerPath.segmentCount() < 1) {
+ Assert.isTrue(
+ false,
+ "Illegal classpath container path: \'" + containerPath.makeRelative().toString() + "\', must have at least one segment (containerID+hints)"); //$NON-NLS-1$//$NON-NLS-2$
+ }
+ return new ClasspathEntry(
+ IPackageFragmentRoot.K_SOURCE,
+ IClasspathEntry.CPE_CONTAINER,
+ containerPath,
+ ClasspathEntry.NO_EXCLUSION_PATTERNS,
+ null, // source attachment
+ null, // source attachment root
+ null, // specific output folder
+ isExported);
+}
+
+/**
+ * Creates and returns a new non-exported classpath entry of kind <code>CPE_LIBRARY</code> for the
+ * JAR or folder identified by the given absolute path. This specifies that all package fragments
+ * within the root will have children of type <code>IClassFile</code>.
+ * <p>
+ * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
+ * The target JAR or folder can either be defined internally to the workspace (absolute path relative
+ * to the workspace root) or externally to the workspace (absolute path in the file system).
+ * <p>
+ * e.g. Here are some examples of binary path usage<ul>
+ * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
+ * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
+ * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
+ * </ul>
+ * Note that this operation does not attempt to validate or access the
+ * resources at the given paths.
+ * <p>
+ * The resulting entry is not exported to dependent projects. This method is equivalent to
+ * <code>newLibraryEntry(-,-,-,false)</code>.
+ * <p>
+ *
+ * @param path the absolute path of the binary archive
+ * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
+ * or <code>null</code> if none
+ * @param sourceAttachmentRootPath the location of the root within the source archive or folder
+ * or <code>null</code> if this location should be automatically detected.
+ * @return a new library classpath entry
+ *
+ * @see #newLibraryEntry(IPath, IPath, IPath, boolean)
+ */
+//public static IClasspathEntry newLibraryEntry(
+// IPath path,
+// IPath sourceAttachmentPath,
+// IPath sourceAttachmentRootPath) {
//
-// return newLibraryEntry(path, sourceAttachmentPath, sourceAttachmentRootPath, false);
-// }
+// return newLibraryEntry(path, sourceAttachmentPath, sourceAttachmentRootPath, false);
+//}
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_LIBRARY</code> for the JAR or folder
- * identified by the given absolute path. This specifies that all package fragments within the root
- * will have children of type <code>IClassFile</code>.
- * <p>
- * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
- * The target JAR or folder can either be defined internally to the workspace (absolute path relative
- * to the workspace root) or externally to the workspace (absolute path in the file system).
- * <p>
- * e.g. Here are some examples of binary path usage<ul>
- * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
- * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
- * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
- * </ul>
- * Note that this operation does not attempt to validate or access the
- * resources at the given paths.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
- * or <code>null</code> if none
- * @param sourceAttachmentRootPath the location of the root within the source archive or folder
- * or <code>null</code> if this location should be automatically detected.
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new library classpath entry
- * @since 2.0
- */
-// public static IClasspathEntry newLibraryEntry(
-// IPath path,
-// IPath sourceAttachmentPath,
-// IPath sourceAttachmentRootPath,
-// boolean isExported) {
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_LIBRARY</code> for the JAR or folder
+ * identified by the given absolute path. This specifies that all package fragments within the root
+ * will have children of type <code>IClassFile</code>.
+ * <p>
+ * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
+ * The target JAR or folder can either be defined internally to the workspace (absolute path relative
+ * to the workspace root) or externally to the workspace (absolute path in the file system).
+ * <p>
+ * e.g. Here are some examples of binary path usage<ul>
+ * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
+ * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
+ * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
+ * </ul>
+ * Note that this operation does not attempt to validate or access the
+ * resources at the given paths.
+ * <p>
+ *
+ * @param path the absolute path of the binary archive
+ * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
+ * or <code>null</code> if none
+ * @param sourceAttachmentRootPath the location of the root within the source archive or folder
+ * or <code>null</code> if this location should be automatically detected.
+ * @param isExported indicates whether this entry is contributed to dependent
+ * projects in addition to the output location
+ * @return a new library classpath entry
+ * @since 2.0
+ */
+//public static IClasspathEntry newLibraryEntry(
+// IPath path,
+// IPath sourceAttachmentPath,
+// IPath sourceAttachmentRootPath,
+// boolean isExported) {
//
-// if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
+// if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_BINARY,
-// IClasspathEntry.CPE_LIBRARY,
-// JavaProject.canonicalizedPath(path),
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// sourceAttachmentPath,
-// sourceAttachmentRootPath,
-// null, // specific output folder
-// isExported);
-// }
+// return new ClasspathEntry(
+// IPackageFragmentRoot.K_BINARY,
+// IClasspathEntry.CPE_LIBRARY,
+// JavaProject.canonicalizedPath(path),
+// ClasspathEntry.NO_EXCLUSION_PATTERNS,
+// sourceAttachmentPath,
+// sourceAttachmentRootPath,
+// null, // specific output folder
+// isExported);
+//}
- /**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_PROJECT</code>
- * for the project identified by the given absolute path.
- * <p>
- * A project entry is used to denote a prerequisite project on a classpath.
- * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
- * contributes all its package fragment roots) or as binaries (when building, it contributes its
- * whole output location).
- * <p>
- * A project reference allows to indirect through another project, independently from its internal layout.
- * <p>
- * The prerequisite project is referred to using an absolute path relative to the workspace root.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newProjectEntry(_,false)</code>.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @return a new project classpath entry
- *
- * @see JavaCore#newProjectEntry(IPath, boolean)
- */
-// public static IClasspathEntry newProjectEntry(IPath path) {
-// return newProjectEntry(path, false);
-// }
+/**
+ * Creates and returns a new non-exported classpath entry of kind <code>CPE_PROJECT</code>
+ * for the project identified by the given absolute path.
+ * <p>
+ * A project entry is used to denote a prerequisite project on a classpath.
+ * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
+ * contributes all its package fragment roots) or as binaries (when building, it contributes its
+ * whole output location).
+ * <p>
+ * A project reference allows to indirect through another project, independently from its internal layout.
+ * <p>
+ * The prerequisite project is referred to using an absolute path relative to the workspace root.
+ * <p>
+ * The resulting entry is not exported to dependent projects. This method is equivalent to
+ * <code>newProjectEntry(_,false)</code>.
+ * <p>
+ *
+ * @param path the absolute path of the binary archive
+ * @return a new project classpath entry
+ *
+ * @see JavaCore#newProjectEntry(IPath, boolean)
+ */
+public static IClasspathEntry newProjectEntry(IPath path) {
+ return newProjectEntry(path, false);
+}
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_PROJECT</code>
- * for the project identified by the given absolute path.
- * <p>
- * A project entry is used to denote a prerequisite project on a classpath.
- * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
- * contributes all its package fragment roots) or as binaries (when building, it contributes its
- * whole output location).
- * <p>
- * A project reference allows to indirect through another project, independently from its internal layout.
- * <p>
- * The prerequisite project is referred to using an absolute path relative to the workspace root.
- * <p>
- *
- * @param path the absolute path of the prerequisite project
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new project classpath entry
- * @since 2.0
- */
-// public static IClasspathEntry newProjectEntry(IPath path, boolean isExported) {
-//
-// if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
-//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_SOURCE,
-// IClasspathEntry.CPE_PROJECT,
-// path,
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// null, // source attachment
-// null, // source attachment root
-// null, // specific output folder
-// isExported);
-// }
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_PROJECT</code>
+ * for the project identified by the given absolute path.
+ * <p>
+ * A project entry is used to denote a prerequisite project on a classpath.
+ * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
+ * contributes all its package fragment roots) or as binaries (when building, it contributes its
+ * whole output location).
+ * <p>
+ * A project reference allows to indirect through another project, independently from its internal layout.
+ * <p>
+ * The prerequisite project is referred to using an absolute path relative to the workspace root.
+ * <p>
+ *
+ * @param path the absolute path of the prerequisite project
+ * @param isExported indicates whether this entry is contributed to dependent
+ * projects in addition to the output location
+ * @return a new project classpath entry
+ * @since 2.0
+ */
+public static IClasspathEntry newProjectEntry(IPath path, boolean isExported) {
+
+ if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
+
+ return new ClasspathEntry(
+ IPackageFragmentRoot.K_SOURCE,
+ IClasspathEntry.CPE_PROJECT,
+ path,
+ ClasspathEntry.NO_EXCLUSION_PATTERNS,
+ null, // source attachment
+ null, // source attachment root
+ null, // specific output folder
+ isExported);
+}
- /**
- * Returns a new empty region.
- *
- * @return a new empty region
- */
- public static IRegion newRegion() {
- return new Region();
- }
+/**
+ * Returns a new empty region.
+ *
+ * @return a new empty region
+ */
+public static IRegion newRegion() {
+ return new Region();
+}
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path. This specifies that all package fragments
- * within the root will have children of type <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path. To selectively exclude
- * some of these source files, use the factory method
- * <code>JavaCore.newSourceEntry(IPath,IPath[])</code> instead.
- * </p>
- * <p>
- * Note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @return a new source classpath entry with not exclusion patterns
- *
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath,org.eclipse.core.runtime.IPath[])
- */
-// public static IClasspathEntry newSourceEntry(IPath path) {
-//
-// return newSourceEntry(path, ClasspathEntry.NO_EXCLUSION_PATTERNS, null /*output location*/);
-// }
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
+ * for the project's source folder identified by the given absolute
+ * workspace-relative path. This specifies that all package fragments
+ * within the root will have children of type <code>ICompilationUnit</code>.
+ * <p>
+ * The source folder is referred to using an absolute path relative to the
+ * workspace root, e.g. <code>/Project/src</code>. A project's source
+ * folders are located with that project. That is, a source classpath
+ * entry specifying the path <code>/P1/src</code> is only usable for
+ * project <code>P1</code>.
+ * </p>
+ * <p>
+ * The source classpath entry created by this method includes all source
+ * files below the given workspace-relative path. To selectively exclude
+ * some of these source files, use the factory method
+ * <code>JavaCore.newSourceEntry(IPath,IPath[])</code> instead.
+ * </p>
+ * <p>
+ * Note that all sources/binaries inside a project are contributed as a whole through
+ * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
+ * source entries cannot be selectively exported.
+ * </p>
+ *
+ * @param path the absolute workspace-relative path of a source folder
+ * @return a new source classpath entry with not exclusion patterns
+ *
+ * @see #newSourceEntry(org.eclipse.core.runtime.IPath,org.eclipse.core.runtime.IPath[])
+ */
+public static IClasspathEntry newSourceEntry(IPath path) {
+
+ return newSourceEntry(path, ClasspathEntry.NO_EXCLUSION_PATTERNS, null /*output location*/);
+}
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path but excluding all source files with paths
- * matching any of the given patterns. This specifies that all package
- * fragments within the root will have children of type
- * <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path except for those matched
- * by one (or more) of the given exclusion patterns. Each exclusion pattern
- * is represented by a relative path, which is interpreted as relative to
- * the source folder. For example, if the source folder path is
- * <code>/Project/src</code> and the exclusion pattern is
- * <code>com/xyz/tests/**</code>, then source files
- * like <code>/Project/src/com/xyz/Foo.java</code>
- * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
- * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
- * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
- * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
- * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
- * for the full description of the syntax and semantics of exclusion
- * patterns.
- * </p>
- * If the empty list of exclusion patterns is specified, the source folder
- * will automatically include all resources located inside the source
- * folder. In that case, the result is entirely equivalent to using the
- * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
- * </p>
- * <p>
- * Note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @param exclusionPatterns the possibly empty list of exclusion patterns
- * represented as relative paths
- * @return a new source classpath entry with the given exclusion patterns
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
- * @see IClasspathEntry#getExclusionPatterns
- *
- * @since 2.1
- */
-// public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns) {
-//
-// return newSourceEntry(path, exclusionPatterns, null /*output location*/);
-// }
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
+ * for the project's source folder identified by the given absolute
+ * workspace-relative path but excluding all source files with paths
+ * matching any of the given patterns. This specifies that all package
+ * fragments within the root will have children of type
+ * <code>ICompilationUnit</code>.
+ * <p>
+ * The source folder is referred to using an absolute path relative to the
+ * workspace root, e.g. <code>/Project/src</code>. A project's source
+ * folders are located with that project. That is, a source classpath
+ * entry specifying the path <code>/P1/src</code> is only usable for
+ * project <code>P1</code>.
+ * </p>
+ * <p>
+ * The source classpath entry created by this method includes all source
+ * files below the given workspace-relative path except for those matched
+ * by one (or more) of the given exclusion patterns. Each exclusion pattern
+ * is represented by a relative path, which is interpreted as relative to
+ * the source folder. For example, if the source folder path is
+ * <code>/Project/src</code> and the exclusion pattern is
+ * <code>com/xyz/tests/**</code>, then source files
+ * like <code>/Project/src/com/xyz/Foo.java</code>
+ * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
+ * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
+ * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
+ * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
+ * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
+ * for the full description of the syntax and semantics of exclusion
+ * patterns.
+ * </p>
+ * If the empty list of exclusion patterns is specified, the source folder
+ * will automatically include all resources located inside the source
+ * folder. In that case, the result is entirely equivalent to using the
+ * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
+ * </p>
+ * <p>
+ * Note that all sources/binaries inside a project are contributed as a whole through
+ * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
+ * source entries cannot be selectively exported.
+ * </p>
+ *
+ * @param path the absolute workspace-relative path of a source folder
+ * @param exclusionPatterns the possibly empty list of exclusion patterns
+ * represented as relative paths
+ * @return a new source classpath entry with the given exclusion patterns
+ * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
+ * @see IClasspathEntry#getExclusionPatterns
+ *
+ * @since 2.1
+ */
+public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns) {
- /**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path but excluding all source files with paths
- * matching any of the given patterns, and associated with a specific output location
- * (that is, ".class" files are not going to the project default output location).
- * All package fragments within the root will have children of type
- * <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path except for those matched
- * by one (or more) of the given exclusion patterns. Each exclusion pattern
- * is represented by a relative path, which is interpreted as relative to
- * the source folder. For example, if the source folder path is
- * <code>/Project/src</code> and the exclusion pattern is
- * <code>com/xyz/tests/**</code>, then source files
- * like <code>/Project/src/com/xyz/Foo.java</code>
- * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
- * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
- * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
- * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
- * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
- * for the full description of the syntax and semantics of exclusion
- * patterns.
- * </p>
- * If the empty list of exclusion patterns is specified, the source folder
- * will automatically include all resources located inside the source
- * folder. In that case, the result is entirely equivalent to using the
- * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
- * </p>
- * <p>
- * Additionally, a source entry can be associated with a specific output location.
- * By doing so, the Java builder will ensure that the generated ".class" files will
- * be issued inside this output location, as opposed to be generated into the
- * project default output location (when output location is <code>null</code>).
- * Note that multiple source entries may target the same output location.
- * The output location is referred to using an absolute path relative to the
- * workspace root, e.g. <code>"/Project/bin"</code>, it must be located inside
- * the same project as the source folder.
- * </p>
- * <p>
- * Also note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @param exclusionPatterns the possibly empty list of exclusion patterns
- * represented as relative paths
- * @param outputLocation the specific output location for this source entry (<code>null</code> if using project default ouput location)
- * @return a new source classpath entry with the given exclusion patterns
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
- * @see IClasspathEntry#getExclusionPatterns
- * @see IClasspathEntry#getOutputLocation()
- *
- * @since 2.1
- */
-// public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns, IPath specificOutputLocation) {
-//
-// if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
-// if (exclusionPatterns == null) Assert.isTrue(false, "Exclusion pattern set cannot be null"); //$NON-NLS-1$
-//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_SOURCE,
-// IClasspathEntry.CPE_SOURCE,
-// path,
-// exclusionPatterns,
-// null, // source attachment
-// null, // source attachment root
-// specificOutputLocation, // custom output location
-// false);
-// }
+ return newSourceEntry(path, exclusionPatterns, null /*output location*/);
+}
+
+/**
+ * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
+ * for the project's source folder identified by the given absolute
+ * workspace-relative path but excluding all source files with paths
+ * matching any of the given patterns, and associated with a specific output location
+ * (that is, ".class" files are not going to the project default output location).
+ * All package fragments within the root will have children of type
+ * <code>ICompilationUnit</code>.
+ * <p>
+ * The source folder is referred to using an absolute path relative to the
+ * workspace root, e.g. <code>/Project/src</code>. A project's source
+ * folders are located with that project. That is, a source classpath
+ * entry specifying the path <code>/P1/src</code> is only usable for
+ * project <code>P1</code>.
+ * </p>
+ * <p>
+ * The source classpath entry created by this method includes all source
+ * files below the given workspace-relative path except for those matched
+ * by one (or more) of the given exclusion patterns. Each exclusion pattern
+ * is represented by a relative path, which is interpreted as relative to
+ * the source folder. For example, if the source folder path is
+ * <code>/Project/src</code> and the exclusion pattern is
+ * <code>com/xyz/tests/**</code>, then source files
+ * like <code>/Project/src/com/xyz/Foo.java</code>
+ * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
+ * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
+ * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
+ * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
+ * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
+ * for the full description of the syntax and semantics of exclusion
+ * patterns.
+ * </p>
+ * If the empty list of exclusion patterns is specified, the source folder
+ * will automatically include all resources located inside the source
+ * folder. In that case, the result is entirely equivalent to using the
+ * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
+ * </p>
+ * <p>
+ * Additionally, a source entry can be associated with a specific output location.
+ * By doing so, the Java builder will ensure that the generated ".class" files will
+ * be issued inside this output location, as opposed to be generated into the
+ * project default output location (when output location is <code>null</code>).
+ * Note that multiple source entries may target the same output location.
+ * The output location is referred to using an absolute path relative to the
+ * workspace root, e.g. <code>"/Project/bin"</code>, it must be located inside
+ * the same project as the source folder.
+ * </p>
+ * <p>
+ * Also note that all sources/binaries inside a project are contributed as a whole through
+ * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
+ * source entries cannot be selectively exported.
+ * </p>
+ *
+ * @param path the absolute workspace-relative path of a source folder
+ * @param exclusionPatterns the possibly empty list of exclusion patterns
+ * represented as relative paths
+ * @param outputLocation the specific output location for this source entry (<code>null</code> if using project default ouput location)
+ * @return a new source classpath entry with the given exclusion patterns
+ * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
+ * @see IClasspathEntry#getExclusionPatterns
+ * @see IClasspathEntry#getOutputLocation()
+ *
+ * @since 2.1
+ */
+public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns, IPath specificOutputLocation) {
+
+ if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
+ if (exclusionPatterns == null) Assert.isTrue(false, "Exclusion pattern set cannot be null"); //$NON-NLS-1$
+
+ return new ClasspathEntry(
+ IPackageFragmentRoot.K_SOURCE,
+ IClasspathEntry.CPE_SOURCE,
+ path,
+ exclusionPatterns,
+ null, // source attachment
+ null, // source attachment root
+ specificOutputLocation, // custom output location
+ false);
+}
- /**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
- * for the given path. The first segment of the path is the name of a classpath variable.
- * The trailing segments of the path will be appended to resolved variable path.
- * <p>
- * A variable entry allows to express indirect references on a classpath to other projects or libraries,
- * depending on what the classpath variable is referring.
- * <p>
- * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
- * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
- * <p>
- * e.g. Here are some examples of variable path usage<ul>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
- * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
- * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
- * </ul>
- * Note that this operation does not attempt to validate classpath variables
- * or access the resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newVariableEntry(-,-,-,false)</code>.
- * <p>
- *
- * @param variablePath the path of the binary archive; first segment is the
- * name of a classpath variable
- * @param variableSourceAttachmentPath the path of the corresponding source archive,
- * or <code>null</code> if none; if present, the first segment is the
- * name of a classpath variable (not necessarily the same variable
- * as the one that begins <code>variablePath</code>)
- * @param sourceAttachmentRootPath the location of the root within the source archive
- * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
- * @return a new library classpath entry
- *
- * @see JavaCore#newVariableEntry(IPath, IPath, IPath, boolean)
- */
-// public static IClasspathEntry newVariableEntry(
-// IPath variablePath,
-// IPath variableSourceAttachmentPath,
-// IPath sourceAttachmentRootPath) {
+/**
+ * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
+ * for the given path. The first segment of the path is the name of a classpath variable.
+ * The trailing segments of the path will be appended to resolved variable path.
+ * <p>
+ * A variable entry allows to express indirect references on a classpath to other projects or libraries,
+ * depending on what the classpath variable is referring.
+ * <p>
+ * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
+ * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
+ * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
+ * <p>
+ * e.g. Here are some examples of variable path usage<ul>
+ * <li> "JDTCORE" where variable <code>JDTCORE</code> is
+ * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
+ * <li> "JDTCORE" where variable <code>JDTCORE</code> is
+ * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
+ * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
+ * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
+ * </ul>
+ * Note that this operation does not attempt to validate classpath variables
+ * or access the resources at the given paths.
+ * <p>
+ * The resulting entry is not exported to dependent projects. This method is equivalent to
+ * <code>newVariableEntry(-,-,-,false)</code>.
+ * <p>
+ *
+ * @param variablePath the path of the binary archive; first segment is the
+ * name of a classpath variable
+ * @param variableSourceAttachmentPath the path of the corresponding source archive,
+ * or <code>null</code> if none; if present, the first segment is the
+ * name of a classpath variable (not necessarily the same variable
+ * as the one that begins <code>variablePath</code>)
+ * @param sourceAttachmentRootPath the location of the root within the source archive
+ * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
+ * @return a new library classpath entry
+ *
+ * @see JavaCore#newVariableEntry(IPath, IPath, IPath, boolean)
+ */
+//public static IClasspathEntry newVariableEntry(
+// IPath variablePath,
+// IPath variableSourceAttachmentPath,
+// IPath sourceAttachmentRootPath) {
//
-// return newVariableEntry(variablePath, variableSourceAttachmentPath, sourceAttachmentRootPath, false);
-// }
+// return newVariableEntry(variablePath, variableSourceAttachmentPath, sourceAttachmentRootPath, false);
+//}
- /**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
- * for the given path. The first segment of the path is the name of a classpath variable.
- * The trailing segments of the path will be appended to resolved variable path.
- * <p>
- * A variable entry allows to express indirect references on a classpath to other projects or libraries,
- * depending on what the classpath variable is referring.
- * <p>
- * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
- * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
- * <p>
- * e.g. Here are some examples of variable path usage<ul>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
- * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
- * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
- * </ul>
- * Note that this operation does not attempt to validate classpath variables
- * or access the resources at the given paths.
- * <p>
- *
- * @param variablePath the path of the binary archive; first segment is the
- * name of a classpath variable
- * @param variableSourceAttachmentPath the path of the corresponding source archive,
- * or <code>null</code> if none; if present, the first segment is the
- * name of a classpath variable (not necessarily the same variable
- * as the one that begins <code>variablePath</code>)
- * @param sourceAttachmentRootPath the location of the root within the source archive
- * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new variable classpath entry
- * @since 2.0
- */
-// public static IClasspathEntry newVariableEntry(
-// IPath variablePath,
-// IPath variableSourceAttachmentPath,
-// IPath variableSourceAttachmentRootPath,
-// boolean isExported) {
+/**
+ * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
+ * for the given path. The first segment of the path is the name of a classpath variable.
+ * The trailing segments of the path will be appended to resolved variable path.
+ * <p>
+ * A variable entry allows to express indirect references on a classpath to other projects or libraries,
+ * depending on what the classpath variable is referring.
+ * <p>
+ * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
+ * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
+ * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
+ * <p>
+ * e.g. Here are some examples of variable path usage<ul>
+ * <li> "JDTCORE" where variable <code>JDTCORE</code> is
+ * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
+ * <li> "JDTCORE" where variable <code>JDTCORE</code> is
+ * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
+ * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
+ * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
+ * </ul>
+ * Note that this operation does not attempt to validate classpath variables
+ * or access the resources at the given paths.
+ * <p>
+ *
+ * @param variablePath the path of the binary archive; first segment is the
+ * name of a classpath variable
+ * @param variableSourceAttachmentPath the path of the corresponding source archive,
+ * or <code>null</code> if none; if present, the first segment is the
+ * name of a classpath variable (not necessarily the same variable
+ * as the one that begins <code>variablePath</code>)
+ * @param sourceAttachmentRootPath the location of the root within the source archive
+ * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
+ * @param isExported indicates whether this entry is contributed to dependent
+ * projects in addition to the output location
+ * @return a new variable classpath entry
+ * @since 2.0
+ */
+//public static IClasspathEntry newVariableEntry(
+// IPath variablePath,
+// IPath variableSourceAttachmentPath,
+// IPath variableSourceAttachmentRootPath,
+// boolean isExported) {
//
-// if (variablePath == null || variablePath.segmentCount() < 1) {
-// Assert.isTrue(
-// false,
-// "Illegal classpath variable path: \'" + variablePath.makeRelative().toString() + "\', must have at least one segment"); //$NON-NLS-1$//$NON-NLS-2$
-// }
-//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_SOURCE,
-// IClasspathEntry.CPE_VARIABLE,
-// variablePath,
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// variableSourceAttachmentPath, // source attachment
-// variableSourceAttachmentRootPath, // source attachment root
-// null, // specific output folder
-// isExported);
+// if (variablePath == null || variablePath.segmentCount() < 1) {
+// Assert.isTrue(
+// false,
+// "Illegal classpath variable path: \'" + variablePath.makeRelative().toString() + "\', must have at least one segment"); //$NON-NLS-1$//$NON-NLS-2$
// }
+//
+// return new ClasspathEntry(
+// IPackageFragmentRoot.K_SOURCE,
+// IClasspathEntry.CPE_VARIABLE,
+// variablePath,
+// ClasspathEntry.NO_EXCLUSION_PATTERNS,
+// variableSourceAttachmentPath, // source attachment
+// variableSourceAttachmentRootPath, // source attachment root
+// null, // specific output folder
+// isExported);
+//}
- /**
- * Removed the given classpath variable. Does nothing if no value was
- * set for this classpath variable.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @see #setClasspathVariable
- *
- * @deprecated - use version with extra IProgressMonitor
- */
-// public static void removeClasspathVariable(String variableName) {
-// removeClasspathVariable(variableName, null);
-// }
+/**
+ * Removed the given classpath variable. Does nothing if no value was
+ * set for this classpath variable.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ *
+ * @param variableName the name of the classpath variable
+ * @see #setClasspathVariable
+ *
+ * @deprecated - use version with extra IProgressMonitor
+ */
+//public static void removeClasspathVariable(String variableName) {
+// removeClasspathVariable(variableName, null);
+//}
- /**
- * Removed the given classpath variable. Does nothing if no value was
- * set for this classpath variable.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @param monitor the progress monitor to report progress
- * @see #setClasspathVariable
- */
-// public static void removeClasspathVariable(
-// String variableName,
-// IProgressMonitor monitor) {
+/**
+ * Removed the given classpath variable. Does nothing if no value was
+ * set for this classpath variable.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ *
+ * @param variableName the name of the classpath variable
+ * @param monitor the progress monitor to report progress
+ * @see #setClasspathVariable
+ */
+//public static void removeClasspathVariable(
+// String variableName,
+// IProgressMonitor monitor) {
//
-// try {
-// updateVariableValues(new String[]{ variableName}, new IPath[]{ null }, monitor);
-// } catch (JavaModelException e) {
-// }
+// try {
+// updateVariableValues(new String[]{ variableName}, new IPath[]{ null }, monitor);
+// } catch (JavaModelException e) {
// }
+//}
- /**
- * Removes the given element changed listener.
- * Has no affect if an identical listener is not registered.
- *
- * @param listener the listener
- */
- public static void removeElementChangedListener(IElementChangedListener listener) {
- JavaModelManager.getJavaModelManager().removeElementChangedListener(listener);
- }
- /**
- * Runs the given action as an atomic Java model operation.
- * <p>
- * After running a method that modifies Java elements,
- * registered listeners receive after-the-fact notification of
- * what just transpired, in the form of a element changed event.
- * This method allows clients to call a number of
- * methods that modify java elements and only have element
- * changed event notifications reported at the end of the entire
- * batch.
- * </p>
- * <p>
- * If this method is called outside the dynamic scope of another such
- * call, this method runs the action and then reports a single
- * element changed event describing the net effect of all changes
- * done to java elements by the action.
- * </p>
- * <p>
- * If this method is called in the dynamic scope of another such
- * call, this method simply runs the action.
- * </p>
- *
- * @param action the action to perform
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting and cancellation are not desired
- * @exception CoreException if the operation failed.
- * @since 2.1
- */
- public static void run(IWorkspaceRunnable action, IProgressMonitor monitor) throws CoreException {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- if (workspace.isTreeLocked()) {
- new BatchOperation(action).run(monitor);
- } else {
- // use IWorkspace.run(...) to ensure that a build will be done in autobuild mode
- workspace.run(new BatchOperation(action), monitor);
- }
- }
- /**
- * Bind a container reference path to some actual containers (<code>IClasspathContainer</code>).
- * This API must be invoked whenever changes in container need to be reflected onto the JavaModel.
- * Containers can have distinct values in different projects, therefore this API considers a
- * set of projects with their respective containers.
- * <p>
- * <code>containerPath</code> is the path under which these values can be referenced through
- * container classpath entries (<code>IClasspathEntry#CPE_CONTAINER</code>). A container path
- * is formed by a first ID segment followed with extra segments, which can be used as additional hints
- * for the resolution. The container ID is used to identify a <code>ClasspathContainerInitializer</code>
- * registered on the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * There is no assumption that each individual container value passed in argument
- * (<code>respectiveContainers</code>) must answer the exact same path when requested
- * <code>IClasspathContainer#getPath</code>.
- * Indeed, the containerPath is just an indication for resolving it to an actual container object. It can be
- * delegated to a <code>ClasspathContainerInitializer</code>, which can be activated through the extension
- * point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * In reaction to changing container values, the JavaModel will be updated to reflect the new
- * state of the updated container.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath container values are persisted locally to the workspace, but
- * are not preserved from a session to another. It is thus highly recommended to register a
- * <code>ClasspathContainerInitializer</code> for each referenced container
- * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * Note: setting a container to <code>null</code> will cause it to be lazily resolved again whenever
- * its value is required. In particular, this will cause a registered initializer to be invoked
- * again.
- * <p>
- * @param containerPath - the name of the container reference, which is being updated
- * @param affectedProjects - the set of projects for which this container is being bound
- * @param respectiveContainers - the set of respective containers for the affected projects
- * @param monitor a monitor to report progress
- *
- * @see ClasspathContainerInitializer
- * @see #getClasspathContainer(IPath, IJavaProject)
- * @see IClasspathContainer
- * @since 2.0
- */
-// public static void setClasspathContainer(final IPath containerPath, IJavaProject[] affectedProjects, IClasspathContainer[] respectiveContainers, IProgressMonitor monitor) throws JavaModelException {
+/**
+ * Removes the given element changed listener.
+ * Has no affect if an identical listener is not registered.
+ *
+ * @param listener the listener
+ */
+public static void removeElementChangedListener(IElementChangedListener listener) {
+ JavaModelManager.getJavaModelManager().removeElementChangedListener(listener);
+}
+
+/**
+ * Bind a container reference path to some actual containers (<code>IClasspathContainer</code>).
+ * This API must be invoked whenever changes in container need to be reflected onto the JavaModel.
+ * Containers can have distinct values in different projects, therefore this API considers a
+ * set of projects with their respective containers.
+ * <p>
+ * <code>containerPath</code> is the path under which these values can be referenced through
+ * container classpath entries (<code>IClasspathEntry#CPE_CONTAINER</code>). A container path
+ * is formed by a first ID segment followed with extra segments, which can be used as additional hints
+ * for the resolution. The container ID is used to identify a <code>ClasspathContainerInitializer</code>
+ * registered on the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
+ * <p>
+ * There is no assumption that each individual container value passed in argument
+ * (<code>respectiveContainers</code>) must answer the exact same path when requested
+ * <code>IClasspathContainer#getPath</code>.
+ * Indeed, the containerPath is just an indication for resolving it to an actual container object. It can be
+ * delegated to a <code>ClasspathContainerInitializer</code>, which can be activated through the extension
+ * point "org.eclipse.jdt.core.ClasspathContainerInitializer").
+ * <p>
+ * In reaction to changing container values, the JavaModel will be updated to reflect the new
+ * state of the updated container.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath container values are persisted locally to the workspace, but
+ * are not preserved from a session to another. It is thus highly recommended to register a
+ * <code>ClasspathContainerInitializer</code> for each referenced container
+ * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
+ * <p>
+ * Note: setting a container to <code>null</code> will cause it to be lazily resolved again whenever
+ * its value is required. In particular, this will cause a registered initializer to be invoked
+ * again.
+ * <p>
+ * @param containerPath - the name of the container reference, which is being updated
+ * @param affectedProjects - the set of projects for which this container is being bound
+ * @param respectiveContainers - the set of respective containers for the affected projects
+ * @param monitor a monitor to report progress
+ *
+ * @see ClasspathContainerInitializer
+ * @see #getClasspathContainer(IPath, IJavaProject)
+ * @see IClasspathContainer
+ * @since 2.0
+ */
+//public static void setClasspathContainer(final IPath containerPath, IJavaProject[] affectedProjects, IClasspathContainer[] respectiveContainers, IProgressMonitor monitor) throws JavaModelException {
//
-// if (affectedProjects.length != respectiveContainers.length) Assert.isTrue(false, "Projects and containers collections should have the same size"); //$NON-NLS-1$
+// if (affectedProjects.length != respectiveContainers.length) Assert.isTrue(false, "Projects and containers collections should have the same size"); //$NON-NLS-1$
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - setting container: ["+containerPath+"] for projects: {" //$NON-NLS-1$ //$NON-NLS-2$
-// + (Util.toString(affectedProjects,
-// new Util.Displayable(){
-// public String displayString(Object o) { return ((IJavaProject) o).getElementName(); }
-// }))
-// + "} with values: " //$NON-NLS-1$
-// + (Util.toString(respectiveContainers,
-// new Util.Displayable(){
-// public String displayString(Object o) { return ((IClasspathContainer) o).getDescription(); }
-// }))
-// );
-// }
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPContainer SET - setting container: ["+containerPath+"] for projects: {" //$NON-NLS-1$ //$NON-NLS-2$
+// + (Util.toString(affectedProjects,
+// new Util.Displayable(){
+// public String displayString(Object o) { return ((IJavaProject) o).getElementName(); }
+// }))
+// + "} with values: " //$NON-NLS-1$
+// + (Util.toString(respectiveContainers,
+// new Util.Displayable(){
+// public String displayString(Object o) { return ((IClasspathContainer) o).getDescription(); }
+// }))
+// );
+// }
//
-// final int projectLength = affectedProjects.length;
-// final IJavaProject[] modifiedProjects;
-// System.arraycopy(affectedProjects, 0, modifiedProjects = new IJavaProject[projectLength], 0, projectLength);
-// final IClasspathEntry[][] oldResolvedPaths = new IClasspathEntry[projectLength][];
+// final int projectLength = affectedProjects.length;
+// final IJavaProject[] modifiedProjects;
+// System.arraycopy(affectedProjects, 0, modifiedProjects = new IJavaProject[projectLength], 0, projectLength);
+// final IClasspathEntry[][] oldResolvedPaths = new IClasspathEntry[projectLength][];
//
-// // filter out unmodified project containers
-// int remaining = 0;
-// for (int i = 0; i < projectLength; i++){
+// // filter out unmodified project containers
+// int remaining = 0;
+// for (int i = 0; i < projectLength; i++){
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// IJavaProject affectedProject = affectedProjects[i];
-// IClasspathContainer newContainer = respectiveContainers[i];
-// if (newContainer == null) newContainer = JavaModelManager.ContainerInitializationInProgress; // 30920 - prevent infinite loop
-// boolean found = false;
-// if (JavaProject.hasJavaNature(affectedProject.getProject())){
-// IClasspathEntry[] rawClasspath = affectedProject.getRawClasspath();
-// for (int j = 0, cpLength = rawClasspath.length; j <cpLength; j++) {
-// IClasspathEntry entry = rawClasspath[j];
-// if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getPath().equals(containerPath)){
-// found = true;
-// break;
-// }
+// IJavaProject affectedProject = affectedProjects[i];
+// IClasspathContainer newContainer = respectiveContainers[i];
+// if (newContainer == null) newContainer = JavaModelManager.ContainerInitializationInProgress; // 30920 - prevent infinite loop
+// boolean found = false;
+// if (JavaProject.hasJavaNature(affectedProject.getProject())){
+// IClasspathEntry[] rawClasspath = affectedProject.getRawClasspath();
+// for (int j = 0, cpLength = rawClasspath.length; j <cpLength; j++) {
+// IClasspathEntry entry = rawClasspath[j];
+// if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getPath().equals(containerPath)){
+// found = true;
+// break;
// }
// }
-// if (!found){
-// modifiedProjects[i] = null; // filter out this project - does not reference the container path, or isnt't yet Java project
-// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
-// continue;
-// }
-// IClasspathContainer oldContainer = JavaModelManager.containerGet(affectedProject, containerPath);
-// if (oldContainer == JavaModelManager.ContainerInitializationInProgress) {
-// Map previousContainerValues = (Map)JavaModelManager.PreviousSessionContainers.get(affectedProject);
-// if (previousContainerValues != null){
-// IClasspathContainer previousContainer = (IClasspathContainer)previousContainerValues.get(containerPath);
-// if (previousContainer != null) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - reentering access to project container: ["+affectedProject.getElementName()+"] " + containerPath + " during its initialization, will see previous value: "+ previousContainer.getDescription()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-// }
-// JavaModelManager.containerPut(affectedProject, containerPath, previousContainer);
+// }
+// if (!found){
+// modifiedProjects[i] = null; // filter out this project - does not reference the container path, or isnt't yet Java project
+// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
+// continue;
+// }
+// IClasspathContainer oldContainer = JavaModelManager.containerGet(affectedProject, containerPath);
+// if (oldContainer == JavaModelManager.ContainerInitializationInProgress) {
+// Map previousContainerValues = (Map)JavaModelManager.PreviousSessionContainers.get(affectedProject);
+// if (previousContainerValues != null){
+// IClasspathContainer previousContainer = (IClasspathContainer)previousContainerValues.get(containerPath);
+// if (previousContainer != null) {
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPContainer INIT - reentering access to project container: ["+affectedProject.getElementName()+"] " + containerPath + " during its initialization, will see previous value: "+ previousContainer.getDescription()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// }
-// oldContainer = null; //33695 - cannot filter out restored container, must update affected project to reset cached CP
-// } else {
-// oldContainer = null;
+// JavaModelManager.containerPut(affectedProject, containerPath, previousContainer);
// }
+// oldContainer = null; //33695 - cannot filter out restored container, must update affected project to reset cached CP
+// } else {
+// oldContainer = null;
// }
-// if (oldContainer != null && oldContainer.equals(respectiveContainers[i])){// TODO: could improve to only compare entries
-// modifiedProjects[i] = null; // filter out this project - container did not change
-// continue;
-// }
-// remaining++;
-// oldResolvedPaths[i] = affectedProject.getResolvedClasspath(true);
-// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
// }
+// if (oldContainer != null && oldContainer.equals(respectiveContainers[i])){// TODO: could improve to only compare entries
+// modifiedProjects[i] = null; // filter out this project - container did not change
+// continue;
+// }
+// remaining++;
+// oldResolvedPaths[i] = affectedProject.getResolvedClasspath(true);
+// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
+// }
//
-// if (remaining == 0) return;
+// if (remaining == 0) return;
//
-// // trigger model refresh
-// try {
-// JavaCore.run(new IWorkspaceRunnable() {
-// public void run(IProgressMonitor monitor) throws CoreException {
-// for(int i = 0; i < projectLength; i++){
+// // trigger model refresh
+// try {
+// JavaCore.run(new IWorkspaceRunnable() {
+// public void run(IProgressMonitor monitor) throws CoreException {
+// for(int i = 0; i < projectLength; i++){
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// JavaProject affectedProject = (JavaProject)modifiedProjects[i];
-// if (affectedProject == null) continue; // was filtered out
+// JavaProject affectedProject = (JavaProject)modifiedProjects[i];
+// if (affectedProject == null) continue; // was filtered out
//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - updating affected project: ["+affectedProject.getElementName()+"] due to setting container: " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-//
-// // force a refresh of the affected project (will compute deltas)
-// affectedProject.setRawClasspath(
-// affectedProject.getRawClasspath(),
-// SetClasspathOperation.ReuseOutputLocation,
-// monitor,
-// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can save resources
-// oldResolvedPaths[i],
-// false, // updating - no validation
-// false); // updating - no need to save
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPContainer SET - updating affected project: ["+affectedProject.getElementName()+"] due to setting container: " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
// }
+//
+// // force a refresh of the affected project (will compute deltas)
+// affectedProject.setRawClasspath(
+// affectedProject.getRawClasspath(),
+// SetClasspathOperation.ReuseOutputLocation,
+// monitor,
+// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can save resources
+// oldResolvedPaths[i],
+// false, // updating - no validation
+// false); // updating - no need to save
// }
-// },
-// monitor);
-// } catch(CoreException e) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - FAILED DUE TO EXCEPTION: "+containerPath); //$NON-NLS-1$
-// e.printStackTrace();
// }
-// if (e instanceof JavaModelException) {
-// throw (JavaModelException)e;
-// } else {
-// throw new JavaModelException(e);
-// }
-// } finally {
-// for (int i = 0; i < projectLength; i++) {
-// if (respectiveContainers[i] == null) {
-// JavaModelManager.containerPut(affectedProjects[i], containerPath, null); // reset init in progress marker
-// }
+// },
+// monitor);
+// } catch(CoreException e) {
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPContainer SET - FAILED DUE TO EXCEPTION: "+containerPath); //$NON-NLS-1$
+// e.printStackTrace();
+// }
+// if (e instanceof JavaModelException) {
+// throw (JavaModelException)e;
+// } else {
+// throw new JavaModelException(e);
+// }
+// } finally {
+// for (int i = 0; i < projectLength; i++) {
+// if (respectiveContainers[i] == null) {
+// JavaModelManager.containerPut(affectedProjects[i], containerPath, null); // reset init in progress marker
// }
// }
-//
// }
+//
+//}
- /**
- * Sets the value of the given classpath variable.
- * The path must have at least one segment.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @param path the path
- * @see #getClasspathVariable
- *
- * @deprecated - use API with IProgressMonitor
- */
-// public static void setClasspathVariable(String variableName, IPath path)
-// throws JavaModelException {
+/**
+ * Sets the value of the given classpath variable.
+ * The path must have at least one segment.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ *
+ * @param variableName the name of the classpath variable
+ * @param path the path
+ * @see #getClasspathVariable
+ *
+ * @deprecated - use API with IProgressMonitor
+ */
+//public static void setClasspathVariable(String variableName, IPath path)
+// throws JavaModelException {
//
-// setClasspathVariable(variableName, path, null);
-// }
+// setClasspathVariable(variableName, path, null);
+//}
- /**
- * Sets the value of the given classpath variable.
- * The path must not be null.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Updating a variable with the same value has no effect.
- *
- * @param variableName the name of the classpath variable
- * @param path the path
- * @param monitor a monitor to report progress
- * @see #getClasspathVariable
- */
-// public static void setClasspathVariable(
-// String variableName,
-// IPath path,
-// IProgressMonitor monitor)
-// throws JavaModelException {
+/**
+ * Sets the value of the given classpath variable.
+ * The path must not be null.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ * Updating a variable with the same value has no effect.
+ *
+ * @param variableName the name of the classpath variable
+ * @param path the path
+ * @param monitor a monitor to report progress
+ * @see #getClasspathVariable
+ */
+//public static void setClasspathVariable(
+// String variableName,
+// IPath path,
+// IProgressMonitor monitor)
+// throws JavaModelException {
//
-// if (path == null) Assert.isTrue(false, "Variable path cannot be null"); //$NON-NLS-1$
-// setClasspathVariables(new String[]{variableName}, new IPath[]{ path }, monitor);
-// }
+// if (path == null) Assert.isTrue(false, "Variable path cannot be null"); //$NON-NLS-1$
+// setClasspathVariables(new String[]{variableName}, new IPath[]{ path }, monitor);
+//}
- /**
- * Sets the values of all the given classpath variables at once.
- * Null paths can be used to request corresponding variable removal.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Updating a variable with the same value has no effect.
- *
- * @param variableNames an array of names for the updated classpath variables
- * @param paths an array of path updates for the modified classpath variables (null
- * meaning that the corresponding value will be removed
- * @param monitor a monitor to report progress
- * @see #getClasspathVariable
- * @since 2.0
- */
-// public static void setClasspathVariables(
-// String[] variableNames,
-// IPath[] paths,
-// IProgressMonitor monitor)
-// throws JavaModelException {
+/**
+ * Sets the values of all the given classpath variables at once.
+ * Null paths can be used to request corresponding variable removal.
+ * <p>
+ * This functionality cannot be used while the resource tree is locked.
+ * <p>
+ * Classpath variable values are persisted locally to the workspace, and
+ * are preserved from session to session.
+ * <p>
+ * Updating a variable with the same value has no effect.
+ *
+ * @param variableNames an array of names for the updated classpath variables
+ * @param paths an array of path updates for the modified classpath variables (null
+ * meaning that the corresponding value will be removed
+ * @param monitor a monitor to report progress
+ * @see #getClasspathVariable
+ * @since 2.0
+ */
+//public static void setClasspathVariables(
+// String[] variableNames,
+// IPath[] paths,
+// IProgressMonitor monitor)
+// throws JavaModelException {
//
-// if (variableNames.length != paths.length) Assert.isTrue(false, "Variable names and paths collections should have the same size"); //$NON-NLS-1$
-// //TODO: should check that null cannot be used as variable paths
-// updateVariableValues(variableNames, paths, monitor);
-// }
-
- /* (non-Javadoc)
- * Method declared on IExecutableExtension.
- * Record any necessary initialization data from the plugin.
- */
- public void setInitializationData(
- IConfigurationElement cfig,
- String propertyName,
- Object data)
- throws CoreException {
- }
+// if (variableNames.length != paths.length) Assert.isTrue(false, "Variable names and paths collections should have the same size"); //$NON-NLS-1$
+// //TODO: should check that null cannot be used as variable paths
+// updateVariableValues(variableNames, paths, monitor);
+//}
+
+/* (non-Javadoc)
+ * Method declared on IExecutableExtension.
+ * Record any necessary initialization data from the plugin.
+ */
+public void setInitializationData(
+ IConfigurationElement cfig,
+ String propertyName,
+ Object data)
+ throws CoreException {
+}
- /**
- * Sets the current table of options. All and only the options explicitly included in the given table
- * are remembered; all previous option settings are forgotten, including ones not explicitly
- * mentioned.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
- * or <code>null</code> to reset all options to their default values
- * @see JavaCore#getDefaultOptions
- */
- public static void setOptions(Hashtable newOptions) {
+/**
+ * Sets the current table of options. All and only the options explicitly included in the given table
+ * are remembered; all previous option settings are forgotten, including ones not explicitly
+ * mentioned.
+ * <p>
+ * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
+ * </p>
+ *
+ * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
+ * or <code>null</code> to reset all options to their default values
+ * @see JavaCore#getDefaultOptions
+ */
+public static void setOptions(Hashtable newOptions) {
- // see #initializeDefaultPluginPreferences() for changing default settings
- Preferences preferences = getPlugin().getPluginPreferences();
+ // see #initializeDefaultPluginPreferences() for changing default settings
+ Preferences preferences = getPlugin().getPluginPreferences();
- if (newOptions == null){
- newOptions = JavaCore.getDefaultOptions();
- }
- Enumeration keys = newOptions.keys();
- while (keys.hasMoreElements()){
- String key = (String)keys.nextElement();
- if (!JavaModelManager.OptionNames.contains(key)) continue; // unrecognized option
- if (key.equals(CORE_ENCODING)) continue; // skipped, contributed by resource prefs
- String value = (String)newOptions.get(key);
- preferences.setValue(key, value);
- }
-
- // persist options
- getPlugin().savePluginPreferences();
+ if (newOptions == null){
+ newOptions = JavaCore.getDefaultOptions();
}
-
- /**
- * Shutdown the JavaCore plug-in.
- * <p>
- * De-registers the JavaModelManager as a resource changed listener and save participant.
- * <p>
- * @see org.eclipse.core.runtime.Plugin#shutdown()
- */
- public void shutdown() {
-
- savePluginPreferences();
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- workspace.removeResourceChangeListener(JavaModelManager.getJavaModelManager().deltaProcessor);
- workspace.removeSaveParticipant(this);
-
- ((JavaModelManager) JavaModelManager.getJavaModelManager()).shutdown();
+ Enumeration keys = newOptions.keys();
+ while (keys.hasMoreElements()){
+ String key = (String)keys.nextElement();
+ if (!JavaModelManager.OptionNames.contains(key)) continue; // unrecognized option
+ if (key.equals(CORE_ENCODING)) continue; // skipped, contributed by resource prefs
+ String value = (String)newOptions.get(key);
+ preferences.setValue(key, value);
}
+
+ // persist options
+ getPlugin().savePluginPreferences();
+}
+
+/**
+ * Shutdown the JavaCore plug-in.
+ * <p>
+ * De-registers the JavaModelManager as a resource changed listener and save participant.
+ * <p>
+ * @see org.eclipse.core.runtime.Plugin#shutdown()
+ */
+// moved to PHPeclipsePlugin#shutdown()
+//public void shutdown() {
+//
+// //savePluginPreferences();
+// getPlugin().savePluginPreferences();
+// IWorkspace workspace = ResourcesPlugin.getWorkspace();
+// workspace.removeResourceChangeListener(JavaModelManager.getJavaModelManager().deltaProcessor);
+// workspace.removeSaveParticipant(PHPeclipsePlugin.getDefault());
+//
+// ((JavaModelManager) JavaModelManager.getJavaModelManager()).shutdown();
+//}
- /**
- * Initiate the background indexing process.
- * This should be deferred after the plugin activation.
- */
-// private void startIndexing() {
+/**
+ * Initiate the background indexing process.
+ * This should be deferred after the plugin activation.
+ */
+//private void startIndexing() {
//
-// JavaModelManager.getJavaModelManager().getIndexManager().reset();
-// }
+// JavaModelManager.getJavaModelManager().getIndexManager().reset();
+//}
- /**
- * Startup of the JavaCore plug-in.
- * <p>
- * Registers the JavaModelManager as a resource changed listener and save participant.
- * Starts the background indexing, and restore saved classpath variable values.
- * <p>
- * @see org.eclipse.core.runtime.Plugin#startup()
- */
- public void startup() {
-
- JavaModelManager manager = JavaModelManager.getJavaModelManager();
- try {
- manager.configurePluginDebugOptions();
-
- // request state folder creation (workaround 19885)
- JavaCore.getPlugin().getStateLocation();
-
- // retrieve variable values
- JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener());
-// TODO khartlage temp-del
-// manager.loadVariablesAndContainers();
-
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- workspace.addResourceChangeListener(
- manager.deltaProcessor,
- IResourceChangeEvent.PRE_AUTO_BUILD
- | IResourceChangeEvent.POST_AUTO_BUILD
- | IResourceChangeEvent.POST_CHANGE
- | IResourceChangeEvent.PRE_DELETE
- | IResourceChangeEvent.PRE_CLOSE);
-
-// startIndexing();
- workspace.addSaveParticipant(this, manager);
-
- } catch (CoreException e) {
- } catch (RuntimeException e) {
- manager.shutdown();
- throw e;
- }
- }
+/**
+ * Startup of the JavaCore plug-in.
+ * <p>
+ * Registers the JavaModelManager as a resource changed listener and save participant.
+ * Starts the background indexing, and restore saved classpath variable values.
+ * <p>
+ * @see org.eclipse.core.runtime.Plugin#startup()
+ */
+// moved to PHPeclipsePlugin#startup()
+//public void startup() {
+//
+// JavaModelManager manager = JavaModelManager.getJavaModelManager();
+// try {
+// manager.configurePluginDebugOptions();
+//
+// // request state folder creation (workaround 19885)
+// JavaCore.getPlugin().getStateLocation();
+//
+// // retrieve variable values
+// JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener());
+//// TODO khartlage temp-del
+//// manager.loadVariablesAndContainers();
+//
+// IWorkspace workspace = ResourcesPlugin.getWorkspace();
+// workspace.addResourceChangeListener(
+// manager.deltaProcessor,
+// IResourceChangeEvent.PRE_AUTO_BUILD
+// | IResourceChangeEvent.POST_AUTO_BUILD
+// | IResourceChangeEvent.POST_CHANGE
+// | IResourceChangeEvent.PRE_DELETE
+// | IResourceChangeEvent.PRE_CLOSE);
+//
+//// startIndexing();
+// workspace.addSaveParticipant(PHPeclipsePlugin.getDefault(), manager);
+//
+// } catch (CoreException e) {
+// } catch (RuntimeException e) {
+// manager.shutdown();
+// throw e;
+// }
+//}
- /**
- * Internal updating of a variable values (null path meaning removal), allowing to change multiple variable values at once.
- */
-// private static void updateVariableValues(
-// String[] variableNames,
-// IPath[] variablePaths,
-// IProgressMonitor monitor) throws JavaModelException {
+
+/**
+ * Internal updating of a variable values (null path meaning removal), allowing to change multiple variable values at once.
+ */
+//private static void updateVariableValues(
+// String[] variableNames,
+// IPath[] variablePaths,
+// IProgressMonitor monitor) throws JavaModelException {
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - setting variables: {" + Util.toString(variableNames) //$NON-NLS-1$
-// + "} with values: " + Util.toString(variablePaths)); //$NON-NLS-1$
-// }
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable SET - setting variables: {" + Util.toString(variableNames) //$NON-NLS-1$
+// + "} with values: " + Util.toString(variablePaths)); //$NON-NLS-1$
+// }
//
-// int varLength = variableNames.length;
+// int varLength = variableNames.length;
//
-// // gather classpath information for updating
-// final HashMap affectedProjects = new HashMap(5);
-// JavaModelManager manager = JavaModelManager.getJavaModelManager();
-// IJavaModel model = manager.getJavaModel();
+// // gather classpath information for updating
+// final HashMap affectedProjects = new HashMap(5);
+// JavaModelManager manager = JavaModelManager.getJavaModelManager();
+// IJavaModel model = manager.getJavaModel();
//
-// // filter out unmodified variables
-// int discardCount = 0;
-// for (int i = 0; i < varLength; i++){
-// String variableName = variableNames[i];
-// IPath oldPath = (IPath)JavaModelManager.variableGet(variableName); // if reentering will provide previous session value
-// if (oldPath == JavaModelManager.VariableInitializationInProgress){
-// IPath previousPath = (IPath)JavaModelManager.PreviousSessionVariables.get(variableName);
-// if (previousPath != null){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - reentering access to variable: " + variableName+ " during its initialization, will see previous value: "+ previousPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-// JavaModelManager.variablePut(variableName, previousPath); // replace value so reentering calls are seeing old value
+// // filter out unmodified variables
+// int discardCount = 0;
+// for (int i = 0; i < varLength; i++){
+// String variableName = variableNames[i];
+// IPath oldPath = (IPath)JavaModelManager.variableGet(variableName); // if reentering will provide previous session value
+// if (oldPath == JavaModelManager.VariableInitializationInProgress){
+// IPath previousPath = (IPath)JavaModelManager.PreviousSessionVariables.get(variableName);
+// if (previousPath != null){
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable INIT - reentering access to variable: " + variableName+ " during its initialization, will see previous value: "+ previousPath); //$NON-NLS-1$ //$NON-NLS-2$
// }
-// oldPath = null; //33695 - cannot filter out restored variable, must update affected project to reset cached CP
-// }
-// if (oldPath != null && oldPath.equals(variablePaths[i])){
-// variableNames[i] = null;
-// discardCount++;
+// JavaModelManager.variablePut(variableName, previousPath); // replace value so reentering calls are seeing old value
// }
+// oldPath = null; //33695 - cannot filter out restored variable, must update affected project to reset cached CP
// }
-// if (discardCount > 0){
-// if (discardCount == varLength) return;
-// int changedLength = varLength - discardCount;
-// String[] changedVariableNames = new String[changedLength];
-// IPath[] changedVariablePaths = new IPath[changedLength];
-// for (int i = 0, index = 0; i < varLength; i++){
-// if (variableNames[i] != null){
-// changedVariableNames[index] = variableNames[i];
-// changedVariablePaths[index] = variablePaths[i];
-// index++;
-// }
+// if (oldPath != null && oldPath.equals(variablePaths[i])){
+// variableNames[i] = null;
+// discardCount++;
+// }
+// }
+// if (discardCount > 0){
+// if (discardCount == varLength) return;
+// int changedLength = varLength - discardCount;
+// String[] changedVariableNames = new String[changedLength];
+// IPath[] changedVariablePaths = new IPath[changedLength];
+// for (int i = 0, index = 0; i < varLength; i++){
+// if (variableNames[i] != null){
+// changedVariableNames[index] = variableNames[i];
+// changedVariablePaths[index] = variablePaths[i];
+// index++;
// }
-// variableNames = changedVariableNames;
-// variablePaths = changedVariablePaths;
-// varLength = changedLength;
// }
+// variableNames = changedVariableNames;
+// variablePaths = changedVariablePaths;
+// varLength = changedLength;
+// }
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// if (model != null) {
-// IJavaProject[] projects = model.getJavaProjects();
-// nextProject : for (int i = 0, projectLength = projects.length; i < projectLength; i++){
-// IJavaProject project = projects[i];
+// if (model != null) {
+// IJavaProject[] projects = model.getJavaProjects();
+// nextProject : for (int i = 0, projectLength = projects.length; i < projectLength; i++){
+// IJavaProject project = projects[i];
//
-// // check to see if any of the modified variables is present on the classpath
-// IClasspathEntry[] classpath = project.getRawClasspath();
-// for (int j = 0, cpLength = classpath.length; j < cpLength; j++){
+// // check to see if any of the modified variables is present on the classpath
+// IClasspathEntry[] classpath = project.getRawClasspath();
+// for (int j = 0, cpLength = classpath.length; j < cpLength; j++){
//
-// IClasspathEntry entry = classpath[j];
-// for (int k = 0; k < varLength; k++){
+// IClasspathEntry entry = classpath[j];
+// for (int k = 0; k < varLength; k++){
//
-// String variableName = variableNames[k];
-// if (entry.getEntryKind() == IClasspathEntry.CPE_VARIABLE){
+// String variableName = variableNames[k];
+// if (entry.getEntryKind() == IClasspathEntry.CPE_VARIABLE){
//
-// if (variableName.equals(entry.getPath().segment(0))){
-// affectedProjects.put(project, project.getResolvedClasspath(true));
-// continue nextProject;
-// }
-// IPath sourcePath, sourceRootPath;
-// if (((sourcePath = entry.getSourceAttachmentPath()) != null && variableName.equals(sourcePath.segment(0)))
-// || ((sourceRootPath = entry.getSourceAttachmentRootPath()) != null && variableName.equals(sourceRootPath.segment(0)))) {
+// if (variableName.equals(entry.getPath().segment(0))){
+// affectedProjects.put(project, project.getResolvedClasspath(true));
+// continue nextProject;
+// }
+// IPath sourcePath, sourceRootPath;
+// if (((sourcePath = entry.getSourceAttachmentPath()) != null && variableName.equals(sourcePath.segment(0)))
+// || ((sourceRootPath = entry.getSourceAttachmentRootPath()) != null && variableName.equals(sourceRootPath.segment(0)))) {
//
-// affectedProjects.put(project, project.getResolvedClasspath(true));
-// continue nextProject;
-// }
-// }
-// }
+// affectedProjects.put(project, project.getResolvedClasspath(true));
+// continue nextProject;
+// }
+// }
// }
// }
// }
-// // update variables
-// for (int i = 0; i < varLength; i++){
-// JavaModelManager.variablePut(variableNames[i], variablePaths[i]);
-// }
-// final String[] dbgVariableNames = variableNames;
+// }
+// // update variables
+// for (int i = 0; i < varLength; i++){
+// JavaModelManager.variablePut(variableNames[i], variablePaths[i]);
+// }
+// final String[] dbgVariableNames = variableNames;
//
-// // update affected project classpaths
-// if (!affectedProjects.isEmpty()) {
-// try {
-// JavaCore.run(
-// new IWorkspaceRunnable() {
-// public void run(IProgressMonitor monitor) throws CoreException {
-// // propagate classpath change
-// Iterator projectsToUpdate = affectedProjects.keySet().iterator();
-// while (projectsToUpdate.hasNext()) {
+// // update affected project classpaths
+// if (!affectedProjects.isEmpty()) {
+// try {
+// JavaCore_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt.run(
+// new IWorkspaceRunnable() {
+// public void run(IProgressMonitor monitor) throws CoreException {
+// // propagate classpath change
+// Iterator projectsToUpdate = affectedProjects.keySet().iterator();
+// while (projectsToUpdate.hasNext()) {
//
-// if (monitor != null && monitor.isCanceled()) return;
+// if (monitor != null && monitor.isCanceled()) return;
//
-// JavaProject project = (JavaProject) projectsToUpdate.next();
+// JavaProject project = (JavaProject) projectsToUpdate.next();
//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - updating affected project: ["+project.getElementName()+"] due to setting variables: "+ Util.toString(dbgVariableNames)); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-//
-// project
-// .setRawClasspath(
-// project.getRawClasspath(),
-// SetClasspathOperation.ReuseOutputLocation,
-// null, // don't call beginTask on the monitor (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=3717)
-// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can change resources
-// (IClasspathEntry[]) affectedProjects.get(project),
-// false, // updating - no validation
-// false); // updating - no need to save
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable SET - updating affected project: ["+project.getElementName()+"] due to setting variables: "+ Util.toString(dbgVariableNames)); //$NON-NLS-1$ //$NON-NLS-2$
// }
+//
+// project
+// .setRawClasspath(
+// project.getRawClasspath(),
+// SetClasspathOperation.ReuseOutputLocation,
+// null, // don't call beginTask on the monitor (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=3717)
+// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can change resources
+// (IClasspathEntry[]) affectedProjects.get(project),
+// false, // updating - no validation
+// false); // updating - no need to save
// }
-// },
-// monitor);
-// } catch (CoreException e) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - FAILED DUE TO EXCEPTION: "+Util.toString(dbgVariableNames)); //$NON-NLS-1$
-// e.printStackTrace();
-// }
-// if (e instanceof JavaModelException) {
-// throw (JavaModelException)e;
-// } else {
-// throw new JavaModelException(e);
-// }
+// }
+// },
+// monitor);
+// } catch (CoreException e) {
+// if (JavaModelManager.CP_RESOLVE_VERBOSE){
+// System.out.println("CPVariable SET - FAILED DUE TO EXCEPTION: "+Util.toString(dbgVariableNames)); //$NON-NLS-1$
+// e.printStackTrace();
+// }
+// if (e instanceof JavaModelException) {
+// throw (JavaModelException)e;
+// } else {
+// throw new JavaModelException(e);
// }
// }
// }
+//}
}
\ No newline at end of file
* IBM Corporation - added #createScanner allowing to make comment check stricter
******************************************************************************/
package net.sourceforge.phpdt.core;
-
+
import java.util.Map;
import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
import net.sourceforge.phpdt.internal.formatter.CodeFormatter;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.runtime.Plugin;
*/
public static ICodeFormatter createCodeFormatter(){
- Plugin jdtCorePlugin = PHPCore.getPlugin();
+ Plugin jdtCorePlugin = JavaCore.getPlugin();
if (jdtCorePlugin == null) return null;
// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.FORMATTER_EXTPOINT_ID);
*/
public static ICodeFormatter createDefaultCodeFormatter(Map options){
- if (options == null) options = PHPCore.getOptions();
+ if (options == null) options = JavaCore.getOptions();
return new CodeFormatter(options);
}
final static int TokenNameEOF = 0;
final static int TokenNameERROR = 1;
- final static int TokenNameStopPHP = 2;
+ final static int TokenNameINLINE_HTML = 2;
final static int TokenNameREMAINDER = 30;
final static int TokenNameNOT = 31;
import net.sourceforge.phpeclipse.internal.compiler.ast.MethodDeclaration;
import net.sourceforge.phpeclipse.internal.compiler.ast.SingleTypeReference;
import net.sourceforge.phpeclipse.internal.compiler.ast.TypeDeclaration;
-import net.sourceforge.phpeclipse.phpeditor.PHPString;
+
import org.eclipse.core.resources.IFile;
public class Parser //extends PHPParserSuperclass
implements ITerminalSymbols, CompilerModifiers, ParserBasicInformation {
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after do-while statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'continue', 'break' or 'return'.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'echo' statement.");
}
getNextToken();
}
return;
+ } else if (token == TokenNameINLINE_HTML) {
+ getNextToken();
+ return;
// } else if (token == TokenNameprint) {
// getNextToken();
// expression();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'global' statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'static' statement.");
}
getNextToken();
if (token == TokenNameSEMICOLON) {
getNextToken();
} else {
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("';' expected after 'unset' statement.");
}
getNextToken();
}
return;
- // } else if (token == TokenNameexit || token == TokenNamedie) {
- // getNextToken();
- // if (token != TokenNameSEMICOLON) {
- // exitStatus();
- // }
- // if (token == TokenNameSEMICOLON) {
- // getNextToken();
- // } else {
- // if (token != TokenNameStopPHP) {
- // throwSyntaxError("';' expected after 'exit' or 'die'
- // statement.");
- // }
- // getNextToken();
- // }
- // return;
- // } else if (token == TokenNamedefine) {
- // getNextToken();
- // if (token == TokenNameLPAREN) {
- // getNextToken();
- // } else {
- // throwSyntaxError("'(' expected after 'define' keyword.");
- // }
- // expr();
- // if (token == TokenNameCOMMA) {
- // getNextToken();
- // } else {
- // throwSyntaxError("',' expected after first 'define' constant.");
- // }
- // expr();
- // if (token == TokenNameCOMMA) {
- // getNextToken();
- // expr();
- // }
- // if (token == TokenNameRPAREN) {
- // getNextToken();
- // } else {
- // throwSyntaxError("')' expected after 'define' statement.");
- // }
- // if (token == TokenNameSEMICOLON) {
- // getNextToken();
- // } else {
- // if (token != TokenNameStopPHP) {
- // throwSyntaxError("';' expected after 'define' statement.");
- // }
- // getNextToken();
- // }
- // return;
} else if (token == TokenNamefunction) {
MethodDeclaration methodDecl = new MethodDeclaration(
this.compilationUnit.compilationResult);
getNextToken();
functionDefinition(methodDecl);
return;
+ } else if (token == TokenNametry) {
+ getNextToken();
+if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'try' statement.");
+ }
+ getNextToken();
+ statementList();
+if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'try' statement.");
+ }
+getNextToken();
+ return;
+ } else if (token == TokenNamecatch) {
+getNextToken();
+if (token != TokenNameLPAREN) {
+ throwSyntaxError("'(' expected in 'catch' statement.");
+ }
+ getNextToken();
+ fully_qualified_class_name();
+ if (token != TokenNameVariable) {
+ throwSyntaxError("Variable expected in 'catch' statement.");
+ }
+ getNextToken();
+
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("')' expected in 'catch' statement.");
+ }
+ getNextToken();
+getNextToken();
+if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'catch' statement.");
+ }
+ getNextToken();
+ statementList();
+if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'catch' statement.");
+ }
+getNextToken();
+ additional_catches();
+ return;
+ } else if (token == TokenNamethrow) {
+ getNextToken();
+
+ expr();
+ if (token == TokenNameSEMICOLON) {
+ getNextToken();
+ } else {
+ throwSyntaxError("';' expected after 'throw' exxpression.");
+ }
+
+ return;
} else if (token == TokenNamefinal || token == TokenNameabstract
|| token == TokenNameclass || token == TokenNameinterface) {
TypeDeclaration typeDecl = new TypeDeclaration(
getNextToken();
return;
} else {
- if (token != TokenNameStopPHP && token != TokenNameEOF) {
+ if (token != TokenNameINLINE_HTML && token != TokenNameEOF) {
throwSyntaxError("';' expected after expression (Found token: "
+ scanner.toStringAction(token) + ")");
}
}
}
}
+ private void additional_catches() {
+ while (token == TokenNamecatch) {
+ getNextToken();
+ if (token != TokenNameLPAREN) {
+ throwSyntaxError("'(' expected in 'catch' statement.");
+ }
+ getNextToken();
+ fully_qualified_class_name();
+ if (token != TokenNameVariable) {
+ throwSyntaxError("Variable expected in 'catch' statement.");
+ }
+ getNextToken();
+
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("')' expected in 'catch' statement.");
+ }
+ getNextToken();
+ getNextToken();
+ if (token != TokenNameLBRACE) {
+ throwSyntaxError("'{' expected in 'catch' statement.");
+ }
+ getNextToken();
+ statementList();
+ if (token != TokenNameRBRACE) {
+ throwSyntaxError("'}' expected in 'catch' statement.");
+ }
+ getNextToken();
+ }
+ }
+
private void global_var_list() {
// global_var_list:
// global_var_list ',' global_var
}
break;
default :
- if (token != TokenNameStopPHP) {
+ if (token != TokenNameINLINE_HTML) {
throwSyntaxError("Error in expression (found token '"
+ scanner.toStringAction(token) + "').");
}
break;
}
getNextToken();
- if (token != TokenNameRPAREN) {
+ if (token == TokenNameRPAREN) {
break;
}
}
case '?' :
if (getNextChar('>')) {
phpMode = false;
- return TokenNameStopPHP;
+ return TokenNameINLINE_HTML;
}
return TokenNameQUESTION;
case ':' :
if (getNextChar('>')) {
startPosition = currentPosition - 2;
phpMode = false;
- return TokenNameStopPHP;
+ return TokenNameINLINE_HTML;
}
}
//get the next char
case TokenNameERROR :
return "ScannerError"; // + new String(getCurrentTokenSource()) + ")";
// //$NON-NLS-1$
- case TokenNameStopPHP :
+ case TokenNameINLINE_HTML :
return "StopPHP(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
case TokenNameIdentifier :
return "Identifier(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
import net.sourceforge.phpdt.core.IJavaProject;
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.internal.corext.Assert;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
switch (kind) {
case IClasspathEntry.CPE_PROJECT :
- return PHPCore.newProjectEntry(path, isExported);
+ return JavaCore.newProjectEntry(path, isExported);
// case IClasspathEntry.CPE_LIBRARY :
// return JavaCore.newLibraryEntry(
// must be an entry in this project or specify another project
String projSegment = path.segment(0);
if (projSegment != null && projSegment.equals(project.getElementName())) { // this project
- return PHPCore.newSourceEntry(path, exclusionPatterns, outputLocation);
+ return JavaCore.newSourceEntry(path, exclusionPatterns, outputLocation);
} else { // another project
- return PHPCore.newProjectEntry(path, isExported);
+ return JavaCore.newProjectEntry(path, isExported);
}
// case IClasspathEntry.CPE_VARIABLE :
// isExported);
case IClasspathEntry.CPE_CONTAINER :
- return PHPCore.newContainerEntry(
+ return JavaCore.newContainerEntry(
path,
isExported);
*/
public IClasspathEntry getResolvedEntry() {
- return PHPCore.getResolvedClasspathEntry(this);
+ return JavaCore.getResolvedClasspathEntry(this);
}
}
import net.sourceforge.phpdt.core.IPackageFragment;
import net.sourceforge.phpdt.core.IProblemRequestor;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.core.compiler.IProblem;
import net.sourceforge.phpdt.internal.compiler.CompilationResult;
import net.sourceforge.phpdt.internal.compiler.parser.SourceTypeConverter;
import net.sourceforge.phpdt.internal.compiler.problem.AbortCompilation;
import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
import org.eclipse.core.runtime.IProgressMonitor;
CompilationUnitDeclaration unit = null;
try {
- String encoding = project.getOption(PHPCore.CORE_ENCODING, true);
+ String encoding = project.getOption(JavaCore.CORE_ENCODING, true);
IPackageFragment packageFragment = (IPackageFragment)unitElement.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
char[][] expectedPackageName = null;
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.IType;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.jdom.DOMException;
import net.sourceforge.phpdt.core.jdom.DOMFactory;
import net.sourceforge.phpdt.core.jdom.IDOMCompilationUnit;
import net.sourceforge.phpdt.core.jdom.IDOMNode;
import net.sourceforge.phpdt.core.jdom.IDOMPackage;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
// update new resource content
try {
if (newContent != null){
- String encoding = source.getJavaProject().getOption(PHPCore.CORE_ENCODING, true);
+ String encoding = source.getJavaProject().getOption(JavaCore.CORE_ENCODING, true);
destFile.setContents(
new ByteArrayInputStream(encoding == null ? newContent.getBytes() : newContent.getBytes(encoding)),
fForce ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
// see http://dev.eclipse.org/bugs/show_bug.cgi?id=9351
try {
if (newContent != null){
- String encoding = source.getJavaProject().getOption(PHPCore.CORE_ENCODING, true);
+ String encoding = source.getJavaProject().getOption(JavaCore.CORE_ENCODING, true);
destFile.setContents(
new ByteArrayInputStream(encoding == null ? newContent.getBytes() : newContent.getBytes(encoding)),
fForce ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
import net.sourceforge.phpdt.core.IJavaModel;
import net.sourceforge.phpdt.core.IJavaProject;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IFile;
* to update.
*/
void addToProjectsToUpdateWithDependents(IProject project) {
- this.projectsToUpdate.add(PHPCore.create(project));
+ this.projectsToUpdate.add(JavaCore.create(project));
// this.addDependentProjects(project.getFullPath(), this.projectsToUpdate);
}
// source attachment path
if (entry.getEntryKind() != IClasspathEntry.CPE_LIBRARY) continue;
- QualifiedName qName = new QualifiedName(PHPCore.PLUGIN_ID, "sourceattachment: " + path.toOSString()); //$NON-NLS-1$;
+ QualifiedName qName = new QualifiedName(JavaCore.PLUGIN_ID, "sourceattachment: " + path.toOSString()); //$NON-NLS-1$;
String propertyString = null;
try {
propertyString = ResourcesPlugin.getWorkspace().getRoot().getPersistentProperty(qName);
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.IWorkingCopy;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpdt.internal.core.builder.PHPBuilder;
int type = resource.getType();
switch (type) {
case IResource.PROJECT :
- return PHPCore.create((IProject) resource);
+ return JavaCore.create((IProject) resource);
case IResource.FILE :
return create((IFile) resource, project);
case IResource.FOLDER :
return create((IFolder) resource, project);
case IResource.ROOT :
- return PHPCore.create((IWorkspaceRoot) resource);
+ return JavaCore.create((IWorkspaceRoot) resource);
default :
return null;
}
return null;
}
if (project == null) {
- project = PHPCore.create(file.getProject());
+ project = JavaCore.create(file.getProject());
}
if (file.getFileExtension() != null) {
return null;
}
if (project == null) {
- project = PHPCore.create(folder.getProject());
+ project = JavaCore.create(folder.getProject());
}
IJavaElement element = determineIfOnClasspath(folder, project);
if (conflictsWithOutputLocation(folder.getFullPath(), (JavaProject)project)
if (file == null) return null;
if (project == null) {
- project = PHPCore.create(file.getProject());
+ project = JavaCore.create(file.getProject());
}
IPackageFragment pkg = (IPackageFragment) determineIfOnClasspath(file, project);
if (pkg == null) {
* Configure the plugin with respect to option settings defined in ".options" file
*/
public void configurePluginDebugOptions(){
- if(PHPCore.getPlugin().isDebugging()){
+ if(JavaCore.getPlugin().isDebugging()){
// TODO khartlage temp-del
String option = Platform.getDebugOption(BUILDER_DEBUG);
// if(option != null) JavaBuilder.DEBUG = option.equalsIgnoreCase("true") ; //$NON-NLS-1$
JavaModelManager.PerProjectInfo info = getPerProjectInfo(project, false /* don't create info */);
if (info == null) {
if (!JavaProject.hasJavaNature(project)) {
- throw ((JavaProject)PHPCore.create(project)).newNotPresentException();
+ throw ((JavaProject)JavaCore.create(project)).newNotPresentException();
}
info = getPerProjectInfo(project, true /* create info */);
}
*/
public static String[] getRegisteredVariableNames(){
- Plugin jdtCorePlugin = PHPCore.getPlugin();
+ Plugin jdtCorePlugin = JavaCore.getPlugin();
if (jdtCorePlugin == null) return null;
ArrayList variableList = new ArrayList(5);
*/
private File getSerializationFile(IProject project) {
if (!project.exists()) return null;
- IPluginDescriptor descr= PHPCore.getJavaCore().getDescriptor();
+ IPluginDescriptor descr= JavaCore.getJavaCore().getDescriptor();
IPath workingLocation= project.getPluginWorkingLocation(descr);
return workingLocation.append("state.dat").toFile(); //$NON-NLS-1$
}
} else { // internal resource (not an IFile or not existing)
IPath location;
if (file.getType() != IResource.FILE || (location = file.getLocation()) == null) {
- throw new CoreException(new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
+ throw new CoreException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
}
fileSystemPath= location.toOSString();
}
} else if (!path.isAbsolute()) {
file= root.getFile(path);
if (file == null || file.getType() != IResource.FILE) {
- throw new CoreException(new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
+ throw new CoreException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
}
IPath location = file.getLocation();
if (location == null) {
- throw new CoreException(new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
+ throw new CoreException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Util.bind("file.notFound", path.toString()), null)); //$NON-NLS-1$
}
fileSystemPath= location.toOSString();
} else {
}
return zipFile;
} catch (IOException e) {
- throw new CoreException(new Status(Status.ERROR, PHPCore.PLUGIN_ID, -1, Util.bind("status.IOException"), e)); //$NON-NLS-1$
+ throw new CoreException(new Status(Status.ERROR, JavaCore.PLUGIN_ID, -1, Util.bind("status.IOException"), e)); //$NON-NLS-1$
}
}
}
DataInputStream in= new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
try {
String pluginID= in.readUTF();
- if (!pluginID.equals(PHPCore.PLUGIN_ID))
+ if (!pluginID.equals(JavaCore.PLUGIN_ID))
throw new IOException(Util.bind("build.wrongFileFormat")); //$NON-NLS-1$
String kind= in.readUTF();
if (!kind.equals("STATE")) //$NON-NLS-1$
}
} catch (Exception e) {
e.printStackTrace();
- throw new CoreException(new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, Platform.PLUGIN_ERROR, "Error reading last build state for project "+ project.getName(), e)); //$NON-NLS-1$
+ throw new CoreException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, Platform.PLUGIN_ERROR, "Error reading last build state for project "+ project.getName(), e)); //$NON-NLS-1$
}
}
return null;
try {
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
try {
- out.writeUTF(PHPCore.PLUGIN_ID);
+ out.writeUTF(JavaCore.PLUGIN_ID);
out.writeUTF("STATE"); //$NON-NLS-1$
if (info.savedState == null) {
out.writeBoolean(false);
} catch (RuntimeException e) {
try {file.delete();} catch(SecurityException se) {}
throw new CoreException(
- new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, Platform.PLUGIN_ERROR,
+ new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, Platform.PLUGIN_ERROR,
Util.bind("build.cannotSaveState", info.project.getName()), e)); //$NON-NLS-1$
} catch (IOException e) {
try {file.delete();} catch(SecurityException se) {}
throw new CoreException(
- new Status(IStatus.ERROR, PHPCore.PLUGIN_ID, Platform.PLUGIN_ERROR,
+ new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, Platform.PLUGIN_ERROR,
Util.bind("build.cannotSaveState", info.project.getName()), e)); //$NON-NLS-1$
}
if (PHPBuilder.DEBUG) {
if (vStats != null) {
IStatus[] stats= new IStatus[vStats.size()];
vStats.toArray(stats);
- throw new CoreException(new MultiStatus(PHPCore.PLUGIN_ID, IStatus.ERROR, stats, Util.bind("build.cannotSaveStates"), null)); //$NON-NLS-1$
+ throw new CoreException(new MultiStatus(JavaCore.PLUGIN_ID, IStatus.ERROR, stats, Util.bind("build.cannotSaveStates"), null)); //$NON-NLS-1$
}
}
// optional behaviour
// possible value of index 0 is Compute
- if (!PHPCore.COMPUTE.equals(PHPCore.getOption(PHPCore.CORE_JAVA_BUILD_ORDER))) return; // cannot be customized at project level
+ if (!JavaCore.COMPUTE.equals(JavaCore.getOption(JavaCore.CORE_JAVA_BUILD_ORDER))) return; // cannot be customized at project level
if (javaBuildOrder == null || javaBuildOrder.length <= 1) return;
if (variablePath == JavaModelManager.VariableInitializationInProgress){
return;
}
- Preferences preferences = PHPCore.getPlugin().getPluginPreferences();
+ Preferences preferences = JavaCore.getPlugin().getPluginPreferences();
String variableKey = CP_VARIABLE_PREFERENCES_PREFIX+variableName;
String variableString = variablePath == null ? CP_ENTRY_IGNORE : variablePath.toString();
preferences.setDefault(variableKey, CP_ENTRY_IGNORE); // use this default to get rid of removed ones
preferences.setValue(variableKey, variableString);
- PHPCore.getPlugin().savePluginPreferences();
+ JavaCore.getPlugin().savePluginPreferences();
}
}
import net.sourceforge.phpdt.core.IJavaElement;
import net.sourceforge.phpdt.core.IJavaModelStatus;
import net.sourceforge.phpdt.core.IJavaModelStatusConstants;
-import net.sourceforge.phpeclipse.PHPCore;
+import net.sourceforge.phpdt.core.JavaCore;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.runtime.CoreException;
*/
public JavaModelStatus() {
// no code for an multi-status
- super(ERROR, PHPCore.PLUGIN_ID, 0, "JavaModelStatus", null); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, 0, "JavaModelStatus", null); //$NON-NLS-1$
}
/**
* Constructs an Java model status with no corresponding elements.
*/
public JavaModelStatus(int code) {
- super(ERROR, PHPCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
// fElements= JavaElementInfo.fgEmptyChildren;
fElements = fgObjectEmptyChildren;
}
* elements.
*/
public JavaModelStatus(int code, IJavaElement[] elements) {
- super(ERROR, PHPCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
fElements = elements;
fPath = null;
}
* Constructs an Java model status with no corresponding elements.
*/
public JavaModelStatus(int severity, int code, String string) {
- super(severity, PHPCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
+ super(severity, JavaCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
// fElements= JavaElementInfo.fgEmptyChildren;
fElements = fgObjectEmptyChildren;
fPath = null;
* Constructs an Java model status with no corresponding elements.
*/
public JavaModelStatus(int code, Throwable throwable) {
- super(ERROR, PHPCore.PLUGIN_ID, code, "JavaModelStatus", throwable); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, code, "JavaModelStatus", throwable); //$NON-NLS-1$
// fElements= JavaElementInfo.fgEmptyChildren;
fElements = fgObjectEmptyChildren;
}
* Constructs an Java model status with no corresponding elements.
*/
public JavaModelStatus(int code, IPath path) {
- super(ERROR, PHPCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, code, "JavaModelStatus", null); //$NON-NLS-1$
// fElements= JavaElementInfo.fgEmptyChildren;
fElements = fgObjectEmptyChildren;
fPath = path;
* Constructs an Java model status with no corresponding elements.
*/
public JavaModelStatus(CoreException coreException) {
- super(ERROR, PHPCore.PLUGIN_ID, CORE_EXCEPTION, "JavaModelStatus", coreException); //$NON-NLS-1$
+ super(ERROR, JavaCore.PLUGIN_ID, CORE_EXCEPTION, "JavaModelStatus", coreException); //$NON-NLS-1$
// fElements= JavaElementInfo.fgEmptyChildren;
fElements = fgObjectEmptyChildren;
}
import net.sourceforge.phpdt.core.IPackageFragment;
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.codeassist.ISearchableNameEnvironment;
import net.sourceforge.phpdt.internal.compiler.util.ObjectVector;
import net.sourceforge.phpdt.internal.corext.Assert;
import net.sourceforge.phpeclipse.LoadPathEntry;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.apache.xerces.dom.DocumentImpl;
if (member != null && member.getType() == IResource.PROJECT){ // double check if bound to project (23977)
IProject projRsc = (IProject) member;
if (JavaProject.hasJavaNature(projRsc)) {
- JavaProject project = (JavaProject) PHPCore.create(projRsc);
+ JavaProject project = (JavaProject) JavaCore.create(projRsc);
project.computeExpandedClasspath(
initialProject,
ignoreUnresolvedVariable,
IProject requiredProjectRsc = (IProject) member;
if (JavaProject.hasJavaNature(requiredProjectRsc)){ // special builder binary output
rootIDs.add(rootID);
- JavaProject requiredProject = (JavaProject)PHPCore.create(requiredProjectRsc);
+ JavaProject requiredProject = (JavaProject)JavaCore.create(requiredProjectRsc);
requiredProject.computePackageFragmentRoots(
requiredProject.getResolvedClasspath(true),
accumulatedRoots,
case IJavaModelStatusConstants.CLASSPATH_CYCLE :
isCycleProblem = true;
- if (PHPCore.ERROR.equals(getOption(PHPCore.CORE_CIRCULAR_CLASSPATH, true))) {
+ if (JavaCore.ERROR.equals(getOption(JavaCore.CORE_CIRCULAR_CLASSPATH, true))) {
severity = IMarker.SEVERITY_ERROR;
} else {
severity = IMarker.SEVERITY_WARNING;
default:
IPath path = status.getPath();
if (path != null) arguments = new String[] { path.toString() };
- if (PHPCore.ERROR.equals(getOption(PHPCore.CORE_INCOMPLETE_CLASSPATH, true))) {
+ if (JavaCore.ERROR.equals(getOption(JavaCore.CORE_INCOMPLETE_CLASSPATH, true))) {
severity = IMarker.SEVERITY_ERROR;
} else {
severity = IMarker.SEVERITY_WARNING;
protected IClasspathEntry[] defaultClasspath() throws JavaModelException {
return new IClasspathEntry[] {
- PHPCore.newSourceEntry(getProject().getFullPath())};
+ JavaCore.newSourceEntry(getProject().getFullPath())};
}
/**
Preferences preferences = getPreferences();
if (preferences == null || preferences.isDefault(optionName)) {
- return inheritJavaCoreOptions ? PHPCore.getOption(optionName) : null;
+ return inheritJavaCoreOptions ? JavaCore.getOption(optionName) : null;
}
return preferences.getString(optionName).trim();
}
public Map getOptions(boolean inheritJavaCoreOptions) {
// initialize to the defaults from JavaCore options pool
- Map options = inheritJavaCoreOptions ? PHPCore.getOptions() : new Hashtable(5);
+ Map options = inheritJavaCoreOptions ? JavaCore.getOptions() : new Hashtable(5);
Preferences preferences = getPreferences();
if (preferences == null) return options; // cannot do better (non-Java project)
case IClasspathEntry.CPE_VARIABLE :
- IClasspathEntry resolvedEntry = PHPCore.getResolvedClasspathEntry(rawEntry);
+ IClasspathEntry resolvedEntry = JavaCore.getResolvedClasspathEntry(rawEntry);
if (resolvedEntry == null) {
if (!ignoreUnresolvedEntry) throw new JavaModelException(status);
} else {
Preferences preferences = new Preferences();
// File prefFile = getProject().getLocation().append(PREF_FILENAME).toFile();
- IPath projectMetaLocation = getProject().getPluginWorkingLocation(PHPCore.getPlugin().getDescriptor());
+ IPath projectMetaLocation = getProject().getPluginWorkingLocation(JavaCore.getPlugin().getDescriptor());
if (projectMetaLocation != null) {
File prefFile = projectMetaLocation.append(PREF_FILENAME).toFile();
if (prefFile.exists()) { // load preferences from file
// the preferences file is located in the plug-in's state area
// at a well-known name (.jprefs)
// File prefFile = getProject().getLocation().append(PREF_FILENAME).toFile();
- File prefFile = project.getPluginWorkingLocation(PHPCore.getPlugin().getDescriptor()).append(PREF_FILENAME).toFile();
+ File prefFile = project.getPluginWorkingLocation(JavaCore.getPlugin().getDescriptor()).append(PREF_FILENAME).toFile();
if (preferences.propertyNames().length == 0) {
// there are no preference settings
// rather than write an empty file, just delete any existing file
if (cycleParticipants.contains(project.getPath())){
IMarker cycleMarker = project.getCycleMarker();
- String circularCPOption = project.getOption(PHPCore.CORE_CIRCULAR_CLASSPATH, true);
- int circularCPSeverity = PHPCore.ERROR.equals(circularCPOption) ? IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING;
+ String circularCPOption = project.getOption(JavaCore.CORE_CIRCULAR_CLASSPATH, true);
+ int circularCPSeverity = JavaCore.ERROR.equals(circularCPOption) ? IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING;
if (cycleMarker != null) {
// update existing cycle marker if needed
try {
if (!traversed.contains(prereqProjectPath)) {
IResource member = workspaceRoot.findMember(prereqProjectPath);
if (member != null && member.getType() == IResource.PROJECT){
- JavaProject project = (JavaProject)PHPCore.create((IProject)member);
+ JavaProject project = (JavaProject)JavaCore.create((IProject)member);
project.updateCycleParticipants(null, prereqChain, cycleParticipants, workspaceRoot, traversed);
}
}
import net.sourceforge.phpdt.core.IWorkingCopy;
import net.sourceforge.phpdt.core.JavaModelException;
import net.sourceforge.phpdt.core.ICompilationUnit;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.core.util.PerThreadObject;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
}
}
} else {
- IJavaElement fromFactory = PHPCore.create(possibleFragment);
+ IJavaElement fromFactory = JavaCore.create(possibleFragment);
if (fromFactory == null) {
return null;
}
import net.sourceforge.phpdt.core.IPackageFragment;
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.CharOperation;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
* of this root.
*/
protected QualifiedName getSourceAttachmentPropertyName() throws JavaModelException {
- return new QualifiedName(PHPCore.PLUGIN_ID, "sourceattachment: " + this.getPath().toOSString()); //$NON-NLS-1$
+ return new QualifiedName(JavaCore.PLUGIN_ID, "sourceattachment: " + this.getPath().toOSString()); //$NON-NLS-1$
}
public void setSourceAttachmentProperty(String property) {
import net.sourceforge.phpdt.core.IJavaModelStatusConstants;
import net.sourceforge.phpdt.core.IPackageFragment;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.Signature;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.internal.core.util.CharArrayBuffer;
import net.sourceforge.phpdt.internal.corext.Assert;
import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
* Returns the given file's contents as a character array.
*/
public static char[] getResourceContentsAsCharArray(IFile file) throws JavaModelException {
- String encoding = PHPCore.create(file.getProject()).getOption(PHPCore.CORE_ENCODING, true);
+ String encoding = JavaCore.create(file.getProject()).getOption(JavaCore.CORE_ENCODING, true);
return getResourceContentsAsCharArray(file, encoding);
}
}
IStatus status= new Status(
IStatus.ERROR,
- PHPCore.getPlugin().getDescriptor().getUniqueIdentifier(),
+ JavaCore.getPlugin().getDescriptor().getUniqueIdentifier(),
IStatus.ERROR,
message,
e);
- PHPCore.getPlugin().getLog().log(status);
+ JavaCore.getPlugin().getLog().log(status);
}
/**
import net.sourceforge.phpdt.core.IProblemRequestor;
import net.sourceforge.phpdt.core.IType;
import net.sourceforge.phpdt.core.JavaModelException;
-import net.sourceforge.phpeclipse.PHPCore;
+import net.sourceforge.phpdt.core.JavaCore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
CommitWorkingCopyOperation op= new CommitWorkingCopyOperation(this, force);
runOperation(op, monitor);
} else {
- String encoding = this.getJavaProject().getOption(PHPCore.CORE_ENCODING, true);
+ String encoding = this.getJavaProject().getOption(JavaCore.CORE_ENCODING, true);
String contents = this.getSource();
if (contents == null) return;
try {
import net.sourceforge.phpdt.core.IJavaModelMarker;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.IProblem;
import net.sourceforge.phpdt.internal.compiler.Compiler;
import net.sourceforge.phpdt.internal.compiler.CompilationResult;
import net.sourceforge.phpdt.internal.compiler.ICompilerRequestor;
import net.sourceforge.phpdt.internal.compiler.problem.AbortCompilation;
import net.sourceforge.phpdt.internal.core.Util;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
this.sourceLocations = this.nameEnvironment.sourceLocations;
this.notifier = javaBuilder.notifier;
- this.encoding = javaBuilder.javaProject.getOption(PHPCore.CORE_ENCODING, true);
+ this.encoding = javaBuilder.javaProject.getOption(JavaCore.CORE_ENCODING, true);
this.compiler = newCompiler();
this.workQueue = new WorkQueue();
this.problemSourceFiles = new ArrayList(3);
IMarker marker = resource.createMarker(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER);
int severity = IMarker.SEVERITY_ERROR;
if (message.equals(Util.bind("build.duplicateResource"))) //$NON-NLS-1$
- if (PHPCore.WARNING.equals(javaBuilder.javaProject.getOption(PHPCore.CORE_JAVA_BUILD_DUPLICATE_RESOURCE, true)))
+ if (JavaCore.WARNING.equals(javaBuilder.javaProject.getOption(JavaCore.CORE_JAVA_BUILD_DUPLICATE_RESOURCE, true)))
severity = IMarker.SEVERITY_WARNING;
marker.setAttributes(
new String[] {IMarker.MESSAGE, IMarker.SEVERITY, IMarker.CHAR_START, IMarker.CHAR_END},
IMarker marker = resource.createMarker(IJavaModelMarker.TASK_MARKER);
int priority = IMarker.PRIORITY_NORMAL;
String compilerPriority = task.getArguments()[2];
- if (PHPCore.COMPILER_TASK_PRIORITY_HIGH.equals(compilerPriority))
+ if (JavaCore.COMPILER_TASK_PRIORITY_HIGH.equals(compilerPriority))
priority = IMarker.PRIORITY_HIGH;
- else if (PHPCore.COMPILER_TASK_PRIORITY_LOW.equals(compilerPriority))
+ else if (JavaCore.COMPILER_TASK_PRIORITY_LOW.equals(compilerPriority))
priority = IMarker.PRIORITY_LOW;
marker.setAttributes(
new String[] {
import java.util.ArrayList;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.core.JavaModelManager;
import net.sourceforge.phpdt.internal.core.Util;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
}
protected void cleanOutputFolders() throws CoreException {
- boolean deleteAll = PHPCore.CLEAN.equals(
- javaBuilder.javaProject.getOption(PHPCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, true));
+ boolean deleteAll = JavaCore.CLEAN.equals(
+ javaBuilder.javaProject.getOption(JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, true));
if (deleteAll) {
ArrayList visited = new ArrayList(sourceLocations.length);
for (int i = 0, l = sourceLocations.length; i < l; i++) {
/ allSourceFiles.length);
increment = increment / 2;
compile(allSourceFiles);
- removeSecondaryTypes();
+// removeSecondaryTypes();
addAffectedSourceFiles();
}
if (this.hasStructuralChanges && javaBuilder.javaProject.hasCycleMarker())
// if a well known name was found then we can skip over these
if (simpleNames.length < simpleStrings.size())
simpleNames = null;
- Object[] keyTable = newState.references.keyTable;
- Object[] valueTable = newState.references.valueTable;
- next : for (int i = 0, l = valueTable.length; i < l; i++) {
- ReferenceCollection refs = (ReferenceCollection) valueTable[i];
- if (refs != null && refs.includes(qualifiedNames, simpleNames)) {
- String typeLocator = (String) keyTable[i];
- IFile file = javaBuilder.currentProject.getFile(typeLocator);
- if (file.exists()) {
- ClasspathMultiDirectory md = sourceLocations[0];
- if (sourceLocations.length > 1) {
- IPath sourceFileFullPath = file.getFullPath();
- for (int j = 0, m = sourceLocations.length; j < m; j++) {
- if (sourceLocations[j].sourceFolder.getFullPath().isPrefixOf(
- sourceFileFullPath)) {
- md = sourceLocations[j];
- if (md.exclusionPatterns == null
- || !Util.isExcluded(file, md.exclusionPatterns))
- break;
- }
- }
- }
- SourceFile sourceFile = new SourceFile(file, md, encoding);
- if (sourceFiles.contains(sourceFile))
- continue next;
- if (compiledAllAtOnce && previousSourceFiles != null
- && previousSourceFiles.contains(sourceFile))
- continue next; // can skip previously compiled files since already
- // saw hierarchy related problems
- if (PHPBuilder.DEBUG)
- System.out.println(" adding affected source file " + typeLocator); //$NON-NLS-1$
- // // update indexfile for the project:
- sourceFiles.add(sourceFile);
- }
- }
- }
+// Object[] keyTable = newState.references.keyTable;
+// Object[] valueTable = newState.references.valueTable;
+// next : for (int i = 0, l = valueTable.length; i < l; i++) {
+// ReferenceCollection refs = (ReferenceCollection) valueTable[i];
+// if (refs != null && refs.includes(qualifiedNames, simpleNames)) {
+// String typeLocator = (String) keyTable[i];
+// IFile file = javaBuilder.currentProject.getFile(typeLocator);
+// if (file.exists()) {
+// ClasspathMultiDirectory md = sourceLocations[0];
+// if (sourceLocations.length > 1) {
+// IPath sourceFileFullPath = file.getFullPath();
+// for (int j = 0, m = sourceLocations.length; j < m; j++) {
+// if (sourceLocations[j].sourceFolder.getFullPath().isPrefixOf(
+// sourceFileFullPath)) {
+// md = sourceLocations[j];
+// if (md.exclusionPatterns == null
+// || !Util.isExcluded(file, md.exclusionPatterns))
+// break;
+// }
+// }
+// }
+// SourceFile sourceFile = new SourceFile(file, md, encoding);
+// if (sourceFiles.contains(sourceFile))
+// continue next;
+// if (compiledAllAtOnce && previousSourceFiles != null
+// && previousSourceFiles.contains(sourceFile))
+// continue next; // can skip previously compiled files since already
+// // saw hierarchy related problems
+// if (PHPBuilder.DEBUG)
+// System.out.println(" adding affected source file " + typeLocator); //$NON-NLS-1$
+// // // update indexfile for the project:
+// sourceFiles.add(sourceFile);
+// }
+// }
+// }
}
protected void addDependentsOf(IPath path, boolean hasStructuralChanges) {
if (hasStructuralChanges) {
if (binaryDelta.getKind() == IResourceDelta.ADDED) {
// see if any known source file is from the same package...
// classpath already includes new package
- if (!newState.isKnownPackage(packageName)) {
- if (PHPBuilder.DEBUG)
- System.out.println("Found added package " + packageName); //$NON-NLS-1$
- addDependentsOf(packagePath, false);
- return;
- }
+// if (!newState.isKnownPackage(packageName)) {
+// if (PHPBuilder.DEBUG)
+// System.out.println("Found added package " + packageName); //$NON-NLS-1$
+// addDependentsOf(packagePath, false);
+// return;
+// }
if (PHPBuilder.DEBUG)
System.out.println("Skipped dependents of added package "
+ packageName); //$NON-NLS-1$
+ typeLocator); //$NON-NLS-1$
sourceFiles.add(new SourceFile((IFile) resource, md, encoding));
String typeName = typePath.toString();
- if (!newState.isDuplicateLocator(typeName, typeLocator)) { // adding
- // dependents
- // results
- // in
- // 2
- // duplicate
- // errors
- if (PHPBuilder.DEBUG)
- System.out.println("Found added source file " + typeName); //$NON-NLS-1$
- addDependentsOf(typePath, true);
- }
+// if (!newState.isDuplicateLocator(typeName, typeLocator)) { // adding
+// // dependents
+// // results
+// // in
+// // 2
+// // duplicate
+// // errors
+// if (PHPBuilder.DEBUG)
+// System.out.println("Found added source file " + typeName); //$NON-NLS-1$
+// addDependentsOf(typePath, true);
+// }
return;
case IResourceDelta.REMOVED :
- char[][] definedTypeNames = newState
- .getDefinedTypeNamesFor(typeLocator);
- if (definedTypeNames == null) { // defined a single type matching
- // typePath
- removeClassFile(typePath, md.binaryFolder);
- if ((sourceDelta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
- // remove problems and tasks for a compilation unit that is
- // being moved (to another package or renamed)
- // if the target file is a compilation unit, the new cu will
- // be recompiled
- // if the target file is a non-java resource, then markers
- // are removed
- // see bug 2857
- IResource movedFile = javaBuilder.workspaceRoot
- .getFile(sourceDelta.getMovedToPath());
- PHPBuilder.removeProblemsAndTasksFor(movedFile);
- }
- } else {
+// char[][] definedTypeNames = newState
+// .getDefinedTypeNamesFor(typeLocator);
+// if (definedTypeNames == null) { // defined a single type matching
+// // typePath
+// removeClassFile(typePath, md.binaryFolder);
+// if ((sourceDelta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
+// // remove problems and tasks for a compilation unit that is
+// // being moved (to another package or renamed)
+// // if the target file is a compilation unit, the new cu will
+// // be recompiled
+// // if the target file is a non-java resource, then markers
+// // are removed
+// // see bug 2857
+// IResource movedFile = javaBuilder.workspaceRoot
+// .getFile(sourceDelta.getMovedToPath());
+// PHPBuilder.removeProblemsAndTasksFor(movedFile);
+// }
+// } else {
if (PHPBuilder.DEBUG)
System.out.println("Found removed source file "
+ typePath.toString()); //$NON-NLS-1$
// source file since it may be
// involved in a name
// collision
- if (definedTypeNames.length > 0) { // skip it if it failed to
- // successfully define a
- // type
- IPath packagePath = typePath.removeLastSegments(1);
- for (int i = 0, l = definedTypeNames.length; i < l; i++)
- removeClassFile(packagePath.append(new String(
- definedTypeNames[i])), md.binaryFolder);
- }
- }
- newState.removeLocator(typeLocator);
+// if (definedTypeNames.length > 0) { // skip it if it failed to
+// // successfully define a
+// // type
+// IPath packagePath = typePath.removeLastSegments(1);
+// for (int i = 0, l = definedTypeNames.length; i < l; i++)
+// removeClassFile(packagePath.append(new String(
+// definedTypeNames[i])), md.binaryFolder);
+// }
+// }
+// newState.removeLocator(typeLocator);
return;
case IResourceDelta.CHANGED :
if ((sourceDelta.getFlags() & IResourceDelta.CONTENT) == 0)
protected void finishedWith(String sourceLocator, CompilationResult result,
char[] mainTypeName, ArrayList definedTypeNames,
ArrayList duplicateTypeNames) throws CoreException {
- char[][] previousTypeNames = newState.getDefinedTypeNamesFor(sourceLocator);
- if (previousTypeNames == null)
- previousTypeNames = new char[][]{mainTypeName};
- IPath packagePath = null;
- next : for (int i = 0, l = previousTypeNames.length; i < l; i++) {
- char[] previous = previousTypeNames[i];
- for (int j = 0, m = definedTypeNames.size(); j < m; j++)
- if (CharOperation.equals(previous, (char[]) definedTypeNames.get(j)))
- continue next;
- SourceFile sourceFile = (SourceFile) result.getCompilationUnit();
- if (packagePath == null) {
- int count = sourceFile.sourceLocation.sourceFolder.getFullPath()
- .segmentCount();
- packagePath = sourceFile.resource.getFullPath().removeFirstSegments(
- count).removeLastSegments(1);
- }
- if (secondaryTypesToRemove == null)
- this.secondaryTypesToRemove = new SimpleLookupTable();
- ArrayList types = (ArrayList) secondaryTypesToRemove
- .get(sourceFile.sourceLocation.binaryFolder);
- if (types == null)
- types = new ArrayList(definedTypeNames.size());
- types.add(packagePath.append(new String(previous)));
- secondaryTypesToRemove.put(sourceFile.sourceLocation.binaryFolder, types);
- }
+// char[][] previousTypeNames = newState.getDefinedTypeNamesFor(sourceLocator);
+// if (previousTypeNames == null)
+// previousTypeNames = new char[][]{mainTypeName};
+// IPath packagePath = null;
+// next : for (int i = 0, l = previousTypeNames.length; i < l; i++) {
+// char[] previous = previousTypeNames[i];
+// for (int j = 0, m = definedTypeNames.size(); j < m; j++)
+// if (CharOperation.equals(previous, (char[]) definedTypeNames.get(j)))
+// continue next;
+// SourceFile sourceFile = (SourceFile) result.getCompilationUnit();
+// if (packagePath == null) {
+// int count = sourceFile.sourceLocation.sourceFolder.getFullPath()
+// .segmentCount();
+// packagePath = sourceFile.resource.getFullPath().removeFirstSegments(
+// count).removeLastSegments(1);
+// }
+// if (secondaryTypesToRemove == null)
+// this.secondaryTypesToRemove = new SimpleLookupTable();
+// ArrayList types = (ArrayList) secondaryTypesToRemove
+// .get(sourceFile.sourceLocation.binaryFolder);
+// if (types == null)
+// types = new ArrayList(definedTypeNames.size());
+// types.add(packagePath.append(new String(previous)));
+// secondaryTypesToRemove.put(sourceFile.sourceLocation.binaryFolder, types);
+// }
// super.finishedWith(sourceLocator, result, mainTypeName,
// definedTypeNames, duplicateTypeNames);
}
- protected void removeClassFile(IPath typePath, IContainer outputFolder)
- throws CoreException {
- if (typePath.lastSegment().indexOf('$') == -1) { // is not a nested type
- newState.removeQualifiedTypeName(typePath.toString());
- // add dependents even when the type thinks it does not exist to be on
- // the safe side
- if (PHPBuilder.DEBUG)
- System.out.println("Found removed type " + typePath); //$NON-NLS-1$
- addDependentsOf(typePath, true); // when member types are removed, their
- // enclosing type is structurally
- // changed
- }
- IFile classFile = outputFolder.getFile(typePath
- .addFileExtension(PHPBuilder.CLASS_EXTENSION));
- if (classFile.exists()) {
- if (PHPBuilder.DEBUG)
- System.out.println("Deleting class file of removed type " + typePath); //$NON-NLS-1$
- classFile.delete(IResource.FORCE, null);
- }
- }
- protected void removeSecondaryTypes() throws CoreException {
- if (secondaryTypesToRemove != null) { // delayed deleting secondary types
- // until the end of the compile loop
- Object[] keyTable = secondaryTypesToRemove.keyTable;
- Object[] valueTable = secondaryTypesToRemove.valueTable;
- for (int i = 0, l = keyTable.length; i < l; i++) {
- IContainer outputFolder = (IContainer) keyTable[i];
- if (outputFolder != null) {
- ArrayList paths = (ArrayList) valueTable[i];
- for (int j = 0, m = paths.size(); j < m; j++)
- removeClassFile((IPath) paths.get(j), outputFolder);
- }
- }
- this.secondaryTypesToRemove = null;
- if (previousSourceFiles != null && previousSourceFiles.size() > 1)
- this.previousSourceFiles = null; // cannot optimize recompile case when
- // a secondary type is deleted
- }
- }
+// protected void removeClassFile(IPath typePath, IContainer outputFolder)
+// throws CoreException {
+// if (typePath.lastSegment().indexOf('$') == -1) { // is not a nested type
+// newState.removeQualifiedTypeName(typePath.toString());
+// // add dependents even when the type thinks it does not exist to be on
+// // the safe side
+// if (PHPBuilder.DEBUG)
+// System.out.println("Found removed type " + typePath); //$NON-NLS-1$
+// addDependentsOf(typePath, true); // when member types are removed, their
+// // enclosing type is structurally
+// // changed
+// }
+// IFile classFile = outputFolder.getFile(typePath
+// .addFileExtension(PHPBuilder.CLASS_EXTENSION));
+// if (classFile.exists()) {
+// if (PHPBuilder.DEBUG)
+// System.out.println("Deleting class file of removed type " + typePath); //$NON-NLS-1$
+// classFile.delete(IResource.FORCE, null);
+// }
+// }
+// protected void removeSecondaryTypes() throws CoreException {
+// if (secondaryTypesToRemove != null) { // delayed deleting secondary types
+// // until the end of the compile loop
+// Object[] keyTable = secondaryTypesToRemove.keyTable;
+// Object[] valueTable = secondaryTypesToRemove.valueTable;
+// for (int i = 0, l = keyTable.length; i < l; i++) {
+// IContainer outputFolder = (IContainer) keyTable[i];
+// if (outputFolder != null) {
+// ArrayList paths = (ArrayList) valueTable[i];
+// for (int j = 0, m = paths.size(); j < m; j++)
+// removeClassFile((IPath) paths.get(j), outputFolder);
+// }
+// }
+// this.secondaryTypesToRemove = null;
+// if (previousSourceFiles != null && previousSourceFiles.size() > 1)
+// this.previousSourceFiles = null; // cannot optimize recompile case when
+// // a secondary type is deleted
+// }
+// }
protected void resetCollections() {
previousSourceFiles = sourceFiles.isEmpty()
? null
import net.sourceforge.phpdt.core.IClasspathEntry;
import net.sourceforge.phpdt.core.IJavaProject;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.internal.compiler.env.INameEnvironment;
import net.sourceforge.phpdt.internal.compiler.env.NameEnvironmentAnswer;
import net.sourceforge.phpdt.internal.core.JavaModel;
import net.sourceforge.phpdt.internal.core.JavaProject;
import net.sourceforge.phpdt.internal.core.util.SimpleLookupTable;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
/* Update cycle marker */
IMarker cycleMarker = javaProject.getCycleMarker();
if (cycleMarker != null) {
- int severity = PHPCore.ERROR.equals(javaProject.getOption(PHPCore.CORE_CIRCULAR_CLASSPATH, true))
+ int severity = JavaCore.ERROR.equals(javaProject.getOption(JavaCore.CORE_CIRCULAR_CLASSPATH, true))
? IMarker.SEVERITY_ERROR
: IMarker.SEVERITY_WARNING;
if (severity != ((Integer) cycleMarker.getAttribute(IMarker.SEVERITY)).intValue())
IProject prereqProject = (IProject) target;
if (!JavaProject.hasJavaNature(prereqProject)) continue nextEntry; // if project doesn't have java nature or is not accessible
- JavaProject prereqJavaProject = (JavaProject) PHPCore.create(prereqProject);
+ JavaProject prereqJavaProject = (JavaProject) JavaCore.create(prereqProject);
IClasspathEntry[] prereqClasspathEntries = prereqJavaProject.getRawClasspath();
ArrayList seen = new ArrayList();
nextPrereqEntry: for (int j = 0, m = prereqClasspathEntries.length; j < m; j++) {
import net.sourceforge.phpdt.core.IClasspathEntry;
import net.sourceforge.phpdt.core.IJavaModelMarker;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.CharOperation;
import net.sourceforge.phpdt.internal.core.JavaModel;
import net.sourceforge.phpdt.internal.core.JavaModelManager;
import net.sourceforge.phpdt.internal.core.Util;
import net.sourceforge.phpdt.internal.core.util.SimpleLookupTable;
import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
import net.sourceforge.phpeclipse.phpeditor.PHPParserAction;
return false;
}
private void initializeBuilder() throws CoreException {
- this.javaProject = (JavaProject) PHPCore.create(currentProject);
+ this.javaProject = (JavaProject) JavaCore.create(currentProject);
this.workspaceRoot = currentProject.getWorkspace().getRoot();
// Flush the existing external files cache if this is the beginning of a
// build cycle
this.nameEnvironment = new NameEnvironment(workspaceRoot, javaProject,
binaryLocationsPerProject);
String filterSequence = javaProject.getOption(
- PHPCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, true);
+ JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, true);
char[][] filters = filterSequence != null && filterSequence.length() > 0
? CharOperation.splitAndTrimOn(',', filterSequence.toCharArray())
: null;
return false;
}
private boolean isWorthBuilding() throws CoreException {
- boolean abortBuilds = PHPCore.ABORT.equals(javaProject.getOption(
- PHPCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, true));
+ boolean abortBuilds = JavaCore.ABORT.equals(javaProject.getOption(
+ JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, true));
if (!abortBuilds)
return true;
// Abort build only if there are classpath errors
if (getLastState(p) == null) {
// The prereq project has no build state: if this prereq project has a
// 'warning' cycle marker then allow build (see bug id 23357)
- JavaProject prereq = (JavaProject) PHPCore.create(p);
+ JavaProject prereq = (JavaProject) JavaCore.create(p);
if (prereq.hasCycleMarker()
- && PHPCore.WARNING.equals(javaProject.getOption(
- PHPCore.CORE_CIRCULAR_CLASSPATH, true)))
+ && JavaCore.WARNING.equals(javaProject.getOption(
+ JavaCore.CORE_CIRCULAR_CLASSPATH, true)))
continue;
if (DEBUG)
System.out.println("Aborted build because prereq project "
//ClasspathLocation[] binaryLocations;
// keyed by the project relative path of the type (ie. "src1/p1/p2/A.java"), value is a ReferenceCollection or an
// AdditionalTypeCollection
- SimpleLookupTable references;
+// SimpleLookupTable references;
// keyed by qualified type name "p1/p2/A", value is the project relative path which defines this type "src1/p1/p2/A.java"
- SimpleLookupTable typeLocators;
+// SimpleLookupTable typeLocators;
int buildNumber;
long lastStructuralBuildTime;
this.javaProjectName = javaBuilder.currentProject.getName();
this.sourceLocations = javaBuilder.nameEnvironment.sourceLocations;
// this.binaryLocations = javaBuilder.nameEnvironment.binaryLocations;
- this.references = new SimpleLookupTable(7);
- this.typeLocators = new SimpleLookupTable(7);
+// this.references = new SimpleLookupTable(7);
+// this.typeLocators = new SimpleLookupTable(7);
this.buildNumber = 0; // indicates a full build
this.lastStructuralBuildTime = System.currentTimeMillis();
}
void copyFrom(State lastState) {
- try {
+// try {
this.knownPackageNames = null;
this.buildNumber = lastState.buildNumber + 1;
this.lastStructuralBuildTime = lastState.lastStructuralBuildTime;
- this.references = (SimpleLookupTable) lastState.references.clone();
- this.typeLocators = (SimpleLookupTable) lastState.typeLocators.clone();
- } catch (CloneNotSupportedException e) {
- this.references = new SimpleLookupTable(lastState.references.elementSize);
- Object[] keyTable = lastState.references.keyTable;
- Object[] valueTable = lastState.references.valueTable;
- for (int i = 0, l = keyTable.length; i < l; i++)
- if (keyTable[i] != null)
- this.references.put(keyTable[i], valueTable[i]);
-
- this.typeLocators = new SimpleLookupTable(lastState.typeLocators.elementSize);
- keyTable = lastState.typeLocators.keyTable;
- valueTable = lastState.typeLocators.valueTable;
- for (int i = 0, l = keyTable.length; i < l; i++)
- if (keyTable[i] != null)
- this.typeLocators.put(keyTable[i], valueTable[i]);
- }
- }
-
- char[][] getDefinedTypeNamesFor(String typeLocator) {
- Object c = references.get(typeLocator);
- if (c instanceof AdditionalTypeCollection)
- return ((AdditionalTypeCollection) c).definedTypeNames;
- return null; // means only one type is defined with the same name as the file... saves space
- }
-
- boolean isDuplicateLocator(String qualifiedTypeName, String typeLocator) {
- String existing = (String) typeLocators.get(qualifiedTypeName);
- return existing != null && !existing.equals(typeLocator);
- }
-
- boolean isKnownPackage(String qualifiedPackageName) {
- if (knownPackageNames == null) {
- ArrayList names = new ArrayList(typeLocators.elementSize);
- Object[] keyTable = typeLocators.keyTable;
- for (int i = 0, l = keyTable.length; i < l; i++) {
- if (keyTable[i] != null) {
- String packageName = (String) keyTable[i]; // is a type name of the form p1/p2/A
- int last = packageName.lastIndexOf('/');
- packageName = last == -1 ? null : packageName.substring(0, last);
- while (packageName != null && !names.contains(packageName)) {
- names.add(packageName);
- last = packageName.lastIndexOf('/');
- packageName = last == -1 ? null : packageName.substring(0, last);
- }
- }
- }
- knownPackageNames = new String[names.size()];
- names.toArray(knownPackageNames);
- }
- for (int i = 0, l = knownPackageNames.length; i < l; i++)
- if (knownPackageNames[i].equals(qualifiedPackageName))
- return true;
- return false;
+// this.references = (SimpleLookupTable) lastState.references.clone();
+// this.typeLocators = (SimpleLookupTable) lastState.typeLocators.clone();
+// } catch (CloneNotSupportedException e) {
+// this.references = new SimpleLookupTable(lastState.references.elementSize);
+// Object[] keyTable = lastState.references.keyTable;
+// Object[] valueTable = lastState.references.valueTable;
+// for (int i = 0, l = keyTable.length; i < l; i++)
+// if (keyTable[i] != null)
+// this.references.put(keyTable[i], valueTable[i]);
+//
+// this.typeLocators = new SimpleLookupTable(lastState.typeLocators.elementSize);
+// keyTable = lastState.typeLocators.keyTable;
+// valueTable = lastState.typeLocators.valueTable;
+// for (int i = 0, l = keyTable.length; i < l; i++)
+// if (keyTable[i] != null)
+// this.typeLocators.put(keyTable[i], valueTable[i]);
+// }
}
- void record(String typeLocator, char[][][] qualifiedRefs, char[][] simpleRefs, char[] mainTypeName, ArrayList typeNames) {
- if (typeNames.size() == 1 && CharOperation.equals(mainTypeName, (char[]) typeNames.get(0))) {
- references.put(typeLocator, new ReferenceCollection(qualifiedRefs, simpleRefs));
- } else {
- char[][] definedTypeNames = new char[typeNames.size()][]; // can be empty when no types are defined
- typeNames.toArray(definedTypeNames);
- references.put(typeLocator, new AdditionalTypeCollection(definedTypeNames, qualifiedRefs, simpleRefs));
- }
- }
-
- void recordLocatorForType(String qualifiedTypeName, String typeLocator) {
- this.knownPackageNames = null;
- typeLocators.put(qualifiedTypeName, typeLocator);
- }
+// char[][] getDefinedTypeNamesFor(String typeLocator) {
+// Object c = references.get(typeLocator);
+// if (c instanceof AdditionalTypeCollection)
+// return ((AdditionalTypeCollection) c).definedTypeNames;
+// return null; // means only one type is defined with the same name as the file... saves space
+// }
+
+// boolean isDuplicateLocator(String qualifiedTypeName, String typeLocator) {
+// String existing = (String) typeLocators.get(qualifiedTypeName);
+// return existing != null && !existing.equals(typeLocator);
+// }
+
+// boolean isKnownPackage(String qualifiedPackageName) {
+// if (knownPackageNames == null) {
+// ArrayList names = new ArrayList(typeLocators.elementSize);
+// Object[] keyTable = typeLocators.keyTable;
+// for (int i = 0, l = keyTable.length; i < l; i++) {
+// if (keyTable[i] != null) {
+// String packageName = (String) keyTable[i]; // is a type name of the form p1/p2/A
+// int last = packageName.lastIndexOf('/');
+// packageName = last == -1 ? null : packageName.substring(0, last);
+// while (packageName != null && !names.contains(packageName)) {
+// names.add(packageName);
+// last = packageName.lastIndexOf('/');
+// packageName = last == -1 ? null : packageName.substring(0, last);
+// }
+// }
+// }
+// knownPackageNames = new String[names.size()];
+// names.toArray(knownPackageNames);
+// }
+// for (int i = 0, l = knownPackageNames.length; i < l; i++)
+// if (knownPackageNames[i].equals(qualifiedPackageName))
+// return true;
+// return false;
+// }
+
+// void record(String typeLocator, char[][][] qualifiedRefs, char[][] simpleRefs, char[] mainTypeName, ArrayList typeNames) {
+// if (typeNames.size() == 1 && CharOperation.equals(mainTypeName, (char[]) typeNames.get(0))) {
+// references.put(typeLocator, new ReferenceCollection(qualifiedRefs, simpleRefs));
+// } else {
+// char[][] definedTypeNames = new char[typeNames.size()][]; // can be empty when no types are defined
+// typeNames.toArray(definedTypeNames);
+// references.put(typeLocator, new AdditionalTypeCollection(definedTypeNames, qualifiedRefs, simpleRefs));
+// }
+// }
+//
+// void recordLocatorForType(String qualifiedTypeName, String typeLocator) {
+// this.knownPackageNames = null;
+// typeLocators.put(qualifiedTypeName, typeLocator);
+// }
void recordStructuralDependency(IProject prereqProject, State prereqState) {
if (prereqState != null)
structuralBuildTimes.put(prereqProject.getName(), new Long(prereqState.lastStructuralBuildTime));
}
- void removeLocator(String typeLocatorToRemove) {
- this.knownPackageNames = null;
- references.removeKey(typeLocatorToRemove);
- typeLocators.removeValue(typeLocatorToRemove);
- }
+// void removeLocator(String typeLocatorToRemove) {
+// this.knownPackageNames = null;
+// references.removeKey(typeLocatorToRemove);
+// typeLocators.removeValue(typeLocatorToRemove);
+// }
void removePackage(IResourceDelta sourceDelta) {
IResource resource = sourceDelta.getResource();
return;
case IResource.FILE :
IPath typeLocatorPath = resource.getProjectRelativePath();
- if (Util.isJavaFileName(typeLocatorPath.lastSegment()))
- removeLocator(typeLocatorPath.toString());
+// if (Util.isJavaFileName(typeLocatorPath.lastSegment()))
+// removeLocator(typeLocatorPath.toString());
}
}
- void removeQualifiedTypeName(String qualifiedTypeNameToRemove) {
- this.knownPackageNames = null;
- typeLocators.removeKey(qualifiedTypeNameToRemove);
- }
+// void removeQualifiedTypeName(String qualifiedTypeNameToRemove) {
+// this.knownPackageNames = null;
+// typeLocators.removeKey(qualifiedTypeNameToRemove);
+// }
static State read(IProject project, DataInputStream in) throws IOException {
if (PHPBuilder.DEBUG)
}
newState.buildNumber = in.readInt();
newState.lastStructuralBuildTime = in.readLong();
-
- int length = in.readInt();
- newState.sourceLocations = new ClasspathMultiDirectory[0];
+
+ int length;
+// int length = in.readInt();
+// newState.sourceLocations = new ClasspathMultiDirectory[0];
// newState.sourceLocations = new ClasspathMultiDirectory[length];
// for (int i = 0; i < length; i++) {
// IContainer sourceFolder = project, outputFolder = project;
// newState.sourceLocations[i] = md;
// }
- length = in.readInt();
+// length = in.readInt();
// newState.binaryLocations = new ClasspathLocation[length];
// IWorkspaceRoot root = project.getWorkspace().getRoot();
// for (int i = 0; i < length; i++) {
for (int i = 0; i < length; i++)
newState.structuralBuildTimes.put(in.readUTF(), new Long(in.readLong()));
- String[] internedTypeLocators = new String[length = in.readInt()];
- for (int i = 0; i < length; i++)
- internedTypeLocators[i] = in.readUTF();
-
- newState.typeLocators = new SimpleLookupTable(length = in.readInt());
- for (int i = 0; i < length; i++)
- newState.typeLocators.put(in.readUTF(), internedTypeLocators[in.readInt()]);
-
- char[][] internedSimpleNames = ReferenceCollection.internSimpleNames(readNames(in), false);
- char[][][] internedQualifiedNames = new char[length = in.readInt()][][];
- for (int i = 0; i < length; i++) {
- int qLength = in.readInt();
- char[][] qName = new char[qLength][];
- for (int j = 0; j < qLength; j++)
- qName[j] = internedSimpleNames[in.readInt()];
- internedQualifiedNames[i] = qName;
- }
- internedQualifiedNames = ReferenceCollection.internQualifiedNames(internedQualifiedNames);
-
- newState.references = new SimpleLookupTable(length = in.readInt());
- for (int i = 0; i < length; i++) {
- String typeLocator = internedTypeLocators[in.readInt()];
- ReferenceCollection collection = null;
- switch (in.readByte()) {
- case 1 :
- char[][] additionalTypeNames = readNames(in);
- char[][][] qualifiedNames = new char[in.readInt()][][];
- for (int j = 0, m = qualifiedNames.length; j < m; j++)
- qualifiedNames[j] = internedQualifiedNames[in.readInt()];
- char[][] simpleNames = new char[in.readInt()][];
- for (int j = 0, m = simpleNames.length; j < m; j++)
- simpleNames[j] = internedSimpleNames[in.readInt()];
- collection = new AdditionalTypeCollection(additionalTypeNames, qualifiedNames, simpleNames);
- break;
- case 2 :
- char[][][] qNames = new char[in.readInt()][][];
- for (int j = 0, m = qNames.length; j < m; j++)
- qNames[j] = internedQualifiedNames[in.readInt()];
- char[][] sNames = new char[in.readInt()][];
- for (int j = 0, m = sNames.length; j < m; j++)
- sNames[j] = internedSimpleNames[in.readInt()];
- collection = new ReferenceCollection(qNames, sNames);
- }
- newState.references.put(typeLocator, collection);
- }
+// String[] internedTypeLocators = new String[length = in.readInt()];
+// for (int i = 0; i < length; i++)
+// internedTypeLocators[i] = in.readUTF();
+
+// newState.typeLocators = new SimpleLookupTable(length = in.readInt());
+// for (int i = 0; i < length; i++)
+// newState.typeLocators.put(in.readUTF(), internedTypeLocators[in.readInt()]);
+
+// char[][] internedSimpleNames = ReferenceCollection.internSimpleNames(readNames(in), false);
+// char[][][] internedQualifiedNames = new char[length = in.readInt()][][];
+// for (int i = 0; i < length; i++) {
+// int qLength = in.readInt();
+// char[][] qName = new char[qLength][];
+// for (int j = 0; j < qLength; j++)
+// qName[j] = internedSimpleNames[in.readInt()];
+// internedQualifiedNames[i] = qName;
+// }
+// internedQualifiedNames = ReferenceCollection.internQualifiedNames(internedQualifiedNames);
+//
+// newState.references = new SimpleLookupTable(length = in.readInt());
+// for (int i = 0; i < length; i++) {
+// String typeLocator = internedTypeLocators[in.readInt()];
+// ReferenceCollection collection = null;
+// switch (in.readByte()) {
+// case 1 :
+// char[][] additionalTypeNames = readNames(in);
+// char[][][] qualifiedNames = new char[in.readInt()][][];
+// for (int j = 0, m = qualifiedNames.length; j < m; j++)
+// qualifiedNames[j] = internedQualifiedNames[in.readInt()];
+// char[][] simpleNames = new char[in.readInt()][];
+// for (int j = 0, m = simpleNames.length; j < m; j++)
+// simpleNames[j] = internedSimpleNames[in.readInt()];
+// collection = new AdditionalTypeCollection(additionalTypeNames, qualifiedNames, simpleNames);
+// break;
+// case 2 :
+// char[][][] qNames = new char[in.readInt()][][];
+// for (int j = 0, m = qNames.length; j < m; j++)
+// qNames[j] = internedQualifiedNames[in.readInt()];
+// char[][] sNames = new char[in.readInt()][];
+// for (int j = 0, m = sNames.length; j < m; j++)
+// sNames[j] = internedSimpleNames[in.readInt()];
+// collection = new ReferenceCollection(qNames, sNames);
+// }
+// newState.references.put(typeLocator, collection);
+// }
if (PHPBuilder.DEBUG)
System.out.println("Successfully read state for " + newState.javaProjectName); //$NON-NLS-1$
return newState;
/*
* ClasspathMultiDirectory[] int id String path(s)
*/
- out.writeInt(length = sourceLocations.length);
- for (int i = 0; i < length; i++) {
- ClasspathMultiDirectory md = sourceLocations[i];
- out.writeUTF(md.sourceFolder.getProjectRelativePath().toString());
- out.writeUTF(md.binaryFolder.getProjectRelativePath().toString());
- writeNames(md.exclusionPatterns, out);
- out.writeBoolean(md.hasIndependentOutputFolder);
- }
+// out.writeInt(length = sourceLocations.length);
+// for (int i = 0; i < length; i++) {
+// ClasspathMultiDirectory md = sourceLocations[i];
+// out.writeUTF(md.sourceFolder.getProjectRelativePath().toString());
+// out.writeUTF(md.binaryFolder.getProjectRelativePath().toString());
+// writeNames(md.exclusionPatterns, out);
+// out.writeBoolean(md.hasIndependentOutputFolder);
+// }
/*
* ClasspathLocation[] int id String path(s)
/*
* String[] Interned type locators
*/
- out.writeInt(length = references.elementSize);
- ArrayList internedTypeLocators = new ArrayList(length);
- if (length > 0) {
- keyTable = references.keyTable;
- for (int i = 0, l = keyTable.length; i < l; i++) {
- if (keyTable[i] != null) {
- length--;
- String key = (String) keyTable[i];
- out.writeUTF(key);
- internedTypeLocators.add(key);
- }
- }
- if (PHPBuilder.DEBUG && length != 0)
- System.out.println("references table is inconsistent"); //$NON-NLS-1$
- }
+// out.writeInt(length = references.elementSize);
+// ArrayList internedTypeLocators = new ArrayList(length);
+// if (length > 0) {
+// keyTable = references.keyTable;
+// for (int i = 0, l = keyTable.length; i < l; i++) {
+// if (keyTable[i] != null) {
+// length--;
+// String key = (String) keyTable[i];
+// out.writeUTF(key);
+// internedTypeLocators.add(key);
+// }
+// }
+// if (PHPBuilder.DEBUG && length != 0)
+// System.out.println("references table is inconsistent"); //$NON-NLS-1$
+// }
/*
* Type locators table String type name int interned locator id
*/
- out.writeInt(length = typeLocators.elementSize);
- if (length > 0) {
- keyTable = typeLocators.keyTable;
- valueTable = typeLocators.valueTable;
- for (int i = 0, l = keyTable.length; i < l; i++) {
- if (keyTable[i] != null) {
- length--;
- out.writeUTF((String) keyTable[i]);
- out.writeInt(internedTypeLocators.indexOf((String) valueTable[i]));
- }
- }
- if (PHPBuilder.DEBUG && length != 0)
- System.out.println("typeLocators table is inconsistent"); //$NON-NLS-1$
- }
+// out.writeInt(length = typeLocators.elementSize);
+// if (length > 0) {
+// keyTable = typeLocators.keyTable;
+// valueTable = typeLocators.valueTable;
+// for (int i = 0, l = keyTable.length; i < l; i++) {
+// if (keyTable[i] != null) {
+// length--;
+// out.writeUTF((String) keyTable[i]);
+// out.writeInt(internedTypeLocators.indexOf((String) valueTable[i]));
+// }
+// }
+// if (PHPBuilder.DEBUG && length != 0)
+// System.out.println("typeLocators table is inconsistent"); //$NON-NLS-1$
+// }
/*
* char[][][] Interned qualified names char[][] Interned simple names
*/
- ArrayList internedQualifiedNames = new ArrayList(31);
- ArrayList internedSimpleNames = new ArrayList(31);
- valueTable = references.valueTable;
- for (int i = 0, l = valueTable.length; i < l; i++) {
- if (valueTable[i] != null) {
- ReferenceCollection collection = (ReferenceCollection) valueTable[i];
- char[][][] qNames = collection.qualifiedNameReferences;
- for (int j = 0, m = qNames.length; j < m; j++) {
- char[][] qName = qNames[j];
- if (!internedQualifiedNames.contains(qName)) { // remember the names have been interned
- internedQualifiedNames.add(qName);
- for (int k = 0, n = qName.length; k < n; k++) {
- char[] sName = qName[k];
- if (!internedSimpleNames.contains(sName)) // remember the names have been interned
- internedSimpleNames.add(sName);
- }
- }
- }
- char[][] sNames = collection.simpleNameReferences;
- for (int j = 0, m = sNames.length; j < m; j++) {
- char[] sName = sNames[j];
- if (!internedSimpleNames.contains(sName)) // remember the names have been interned
- internedSimpleNames.add(sName);
- }
- }
- }
- char[][] internedArray = new char[internedSimpleNames.size()][];
- internedSimpleNames.toArray(internedArray);
- writeNames(internedArray, out);
- // now write the interned qualified names as arrays of interned simple names
- out.writeInt(length = internedQualifiedNames.size());
- for (int i = 0; i < length; i++) {
- char[][] qName = (char[][]) internedQualifiedNames.get(i);
- int qLength = qName.length;
- out.writeInt(qLength);
- for (int j = 0; j < qLength; j++)
- out.writeInt(internedSimpleNames.indexOf(qName[j]));
- }
-
- /*
- * References table int interned locator id ReferenceCollection
- */
- out.writeInt(length = references.elementSize);
- if (length > 0) {
- keyTable = references.keyTable;
- for (int i = 0, l = keyTable.length; i < l; i++) {
- if (keyTable[i] != null) {
- length--;
- out.writeInt(internedTypeLocators.indexOf((String) keyTable[i]));
- ReferenceCollection collection = (ReferenceCollection) valueTable[i];
- if (collection instanceof AdditionalTypeCollection) {
- out.writeByte(1);
- AdditionalTypeCollection atc = (AdditionalTypeCollection) collection;
- writeNames(atc.definedTypeNames, out);
- } else {
- out.writeByte(2);
- }
- char[][][] qNames = collection.qualifiedNameReferences;
- int qLength = qNames.length;
- out.writeInt(qLength);
- for (int j = 0; j < qLength; j++)
- out.writeInt(internedQualifiedNames.indexOf(qNames[j]));
- char[][] sNames = collection.simpleNameReferences;
- int sLength = sNames.length;
- out.writeInt(sLength);
- for (int j = 0; j < sLength; j++)
- out.writeInt(internedSimpleNames.indexOf(sNames[j]));
- }
- }
- if (PHPBuilder.DEBUG && length != 0)
- System.out.println("references table is inconsistent"); //$NON-NLS-1$
- }
+// ArrayList internedQualifiedNames = new ArrayList(31);
+// ArrayList internedSimpleNames = new ArrayList(31);
+// valueTable = references.valueTable;
+// for (int i = 0, l = valueTable.length; i < l; i++) {
+// if (valueTable[i] != null) {
+// ReferenceCollection collection = (ReferenceCollection) valueTable[i];
+// char[][][] qNames = collection.qualifiedNameReferences;
+// for (int j = 0, m = qNames.length; j < m; j++) {
+// char[][] qName = qNames[j];
+// if (!internedQualifiedNames.contains(qName)) { // remember the names have been interned
+// internedQualifiedNames.add(qName);
+// for (int k = 0, n = qName.length; k < n; k++) {
+// char[] sName = qName[k];
+// if (!internedSimpleNames.contains(sName)) // remember the names have been interned
+// internedSimpleNames.add(sName);
+// }
+// }
+// }
+// char[][] sNames = collection.simpleNameReferences;
+// for (int j = 0, m = sNames.length; j < m; j++) {
+// char[] sName = sNames[j];
+// if (!internedSimpleNames.contains(sName)) // remember the names have been interned
+// internedSimpleNames.add(sName);
+// }
+// }
+// }
+// char[][] internedArray = new char[internedSimpleNames.size()][];
+// internedSimpleNames.toArray(internedArray);
+// writeNames(internedArray, out);
+// // now write the interned qualified names as arrays of interned simple names
+// out.writeInt(length = internedQualifiedNames.size());
+// for (int i = 0; i < length; i++) {
+// char[][] qName = (char[][]) internedQualifiedNames.get(i);
+// int qLength = qName.length;
+// out.writeInt(qLength);
+// for (int j = 0; j < qLength; j++)
+// out.writeInt(internedSimpleNames.indexOf(qName[j]));
+// }
+//
+// /*
+// * References table int interned locator id ReferenceCollection
+// */
+// out.writeInt(length = references.elementSize);
+// if (length > 0) {
+// keyTable = references.keyTable;
+// for (int i = 0, l = keyTable.length; i < l; i++) {
+// if (keyTable[i] != null) {
+// length--;
+// out.writeInt(internedTypeLocators.indexOf((String) keyTable[i]));
+// ReferenceCollection collection = (ReferenceCollection) valueTable[i];
+// if (collection instanceof AdditionalTypeCollection) {
+// out.writeByte(1);
+// AdditionalTypeCollection atc = (AdditionalTypeCollection) collection;
+// writeNames(atc.definedTypeNames, out);
+// } else {
+// out.writeByte(2);
+// }
+// char[][][] qNames = collection.qualifiedNameReferences;
+// int qLength = qNames.length;
+// out.writeInt(qLength);
+// for (int j = 0; j < qLength; j++)
+// out.writeInt(internedQualifiedNames.indexOf(qNames[j]));
+// char[][] sNames = collection.simpleNameReferences;
+// int sLength = sNames.length;
+// out.writeInt(sLength);
+// for (int j = 0; j < sLength; j++)
+// out.writeInt(internedSimpleNames.indexOf(sNames[j]));
+// }
+// }
+// if (PHPBuilder.DEBUG && length != 0)
+// System.out.println("references table is inconsistent"); //$NON-NLS-1$
+// }
}
private void writeNames(char[][] names, DataOutputStream out) throws IOException {
import java.util.ArrayList;
import java.util.Map;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.IProblem;
import net.sourceforge.phpdt.core.jdom.IDOMCompilationUnit;
import net.sourceforge.phpdt.core.jdom.IDOMField;
import net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit;
import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
import net.sourceforge.phpdt.internal.core.util.CharArrayOps;
-import net.sourceforge.phpeclipse.PHPCore;
/**
* The DOMBuilder constructs each type of JDOM document fragment,
*/
protected ArrayList fFields;
- Map options = PHPCore.getOptions();
+ Map options = JavaCore.getOptions();
/**
* Creates a new DOMBuilder
import java.util.Map;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.jdom.IDOMCompilationUnit;
import net.sourceforge.phpdt.internal.compiler.ISourceElementRequestor;
import net.sourceforge.phpdt.internal.compiler.SourceElementParser;
import net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit;
import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
import net.sourceforge.phpdt.internal.core.util.CharArrayOps;
-import net.sourceforge.phpeclipse.PHPCore;
/**
* A DOM builder that uses the SourceElementParser
*/
public IDOMCompilationUnit createCompilationUnit(ICompilationUnit compilationUnit) {
initializeBuild(compilationUnit.getContents(), true, true);
- getParser(PHPCore.getOptions()).parseCompilationUnit(compilationUnit, false);
+ getParser(JavaCore.getOptions()).parseCompilationUnit(compilationUnit, false);
return super.createCompilationUnit(compilationUnit);
}
/**
import java.lang.reflect.InvocationTargetException;
-import net.sourceforge.phpeclipse.PHPCore;
+import net.sourceforge.phpdt.core.JavaCore;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.runtime.CoreException;
*/
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
- PHPCore.run(fWorkspaceRunnable, monitor);
+ JavaCore.run(fWorkspaceRunnable, monitor);
} catch (OperationCanceledException e) {
throw new InterruptedException(e.getMessage());
} catch (CoreException e) {
import java.util.Hashtable;
import net.sourceforge.phpdt.core.ICodeFormatter;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.ToolFactory;
import net.sourceforge.phpdt.internal.ui.PHPUIMessages;
import net.sourceforge.phpdt.internal.ui.dialog.StatusInfo;
import net.sourceforge.phpdt.internal.ui.dialog.StatusUtil;
import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.runtime.IStatus;
public class CodeFormatterPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
// Preference store keys, see PHPCore.getOptions
- private static final String PREF_NEWLINE_OPENING_BRACES= PHPCore.FORMATTER_NEWLINE_OPENING_BRACE;
- private static final String PREF_NEWLINE_CONTROL_STATEMENT= PHPCore.FORMATTER_NEWLINE_CONTROL;
- private static final String PREF_NEWLINE_CLEAR_ALL= PHPCore.FORMATTER_CLEAR_BLANK_LINES;
+ private static final String PREF_NEWLINE_OPENING_BRACES= JavaCore.FORMATTER_NEWLINE_OPENING_BRACE;
+ private static final String PREF_NEWLINE_CONTROL_STATEMENT= JavaCore.FORMATTER_NEWLINE_CONTROL;
+ private static final String PREF_NEWLINE_CLEAR_ALL= JavaCore.FORMATTER_CLEAR_BLANK_LINES;
// private static final String PREF_NEWLINE_ELSE_IF= PHPCore.FORMATTER_NEWLINE_ELSE_IF;
- private static final String PREF_NEWLINE_EMPTY_BLOCK= PHPCore.FORMATTER_NEWLINE_EMPTY_BLOCK;
- private static final String PREF_LINE_SPLIT= PHPCore.FORMATTER_LINE_SPLIT;
- private static final String PREF_STYLE_COMPACT_ASSIGNEMENT= PHPCore.FORMATTER_COMPACT_ASSIGNMENT;
- private static final String PREF_TAB_CHAR= PHPCore.FORMATTER_TAB_CHAR;
- private static final String PREF_TAB_SIZE= PHPCore.FORMATTER_TAB_SIZE;
+ private static final String PREF_NEWLINE_EMPTY_BLOCK= JavaCore.FORMATTER_NEWLINE_EMPTY_BLOCK;
+ private static final String PREF_LINE_SPLIT= JavaCore.FORMATTER_LINE_SPLIT;
+ private static final String PREF_STYLE_COMPACT_ASSIGNEMENT= JavaCore.FORMATTER_COMPACT_ASSIGNMENT;
+ private static final String PREF_TAB_CHAR= JavaCore.FORMATTER_TAB_CHAR;
+ private static final String PREF_TAB_SIZE= JavaCore.FORMATTER_TAB_SIZE;
// values
- private static final String INSERT= PHPCore.INSERT;
- private static final String DO_NOT_INSERT= PHPCore.DO_NOT_INSERT;
+ private static final String INSERT= JavaCore.INSERT;
+ private static final String DO_NOT_INSERT= JavaCore.DO_NOT_INSERT;
- private static final String COMPACT= PHPCore.COMPACT;
- private static final String NORMAL= PHPCore.NORMAL;
+ private static final String COMPACT= JavaCore.COMPACT;
+ private static final String NORMAL= JavaCore.NORMAL;
- private static final String TAB= PHPCore.TAB;
- private static final String SPACE= PHPCore.SPACE;
+ private static final String TAB= JavaCore.TAB;
+ private static final String SPACE= JavaCore.SPACE;
- private static final String CLEAR_ALL= PHPCore.CLEAR_ALL;
- private static final String PRESERVE_ONE= PHPCore.PRESERVE_ONE;
+ private static final String CLEAR_ALL= JavaCore.CLEAR_ALL;
+ private static final String PRESERVE_ONE= JavaCore.PRESERVE_ONE;
private static String[] getAllKeys() {
* @deprecated Inline to avoid reference to preference page
*/
public static int getTabSize() {
- String string= (String) PHPCore.getOptions().get(PREF_TAB_SIZE);
+ String string= (String) JavaCore.getOptions().get(PREF_TAB_SIZE);
return getPositiveIntValue(string, 4);
}
* @deprecated Inline to avoid reference to preference page
*/
public static boolean isCompactingAssignment() {
- return COMPACT.equals(PHPCore.getOptions().get(PREF_STYLE_COMPACT_ASSIGNEMENT));
+ return COMPACT.equals(JavaCore.getOptions().get(PREF_STYLE_COMPACT_ASSIGNEMENT));
}
/**
* @deprecated Inline to avoid reference to preference page
*/
public static boolean useSpaces() {
- return SPACE.equals(PHPCore.getOptions().get(PREF_TAB_CHAR));
+ return SPACE.equals(JavaCore.getOptions().get(PREF_TAB_CHAR));
}
setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
setDescription(PHPUIMessages.getString("CodeFormatterPreferencePage.description")); //$NON-NLS-1$
- fWorkingValues= PHPCore.getOptions();
+ fWorkingValues= JavaCore.getOptions();
fCheckBoxes= new ArrayList();
fTextBoxes= new ArrayList();
String[] allKeys= getAllKeys();
// preserve other options
// store in JCore
- Hashtable actualOptions= PHPCore.getOptions();
+ Hashtable actualOptions= JavaCore.getOptions();
for (int i= 0; i < allKeys.length; i++) {
String key= allKeys[i];
String val= (String) fWorkingValues.get(key);
actualOptions.put(key, val);
}
- PHPCore.setOptions(actualOptions);
+ JavaCore.setOptions(actualOptions);
PHPeclipsePlugin.getDefault().savePluginPreferences();
return super.performOk();
}
* @see PreferencePage#performDefaults()
*/
protected void performDefaults() {
- fWorkingValues= PHPCore.getDefaultOptions();
+ fWorkingValues= JavaCore.getDefaultOptions();
updateControls();
super.performDefaults();
}
import java.util.Iterator;
import java.util.Map;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.PHPUIMessages;
import net.sourceforge.phpdt.internal.ui.dialog.StatusInfo;
import net.sourceforge.phpdt.internal.ui.dialog.StatusUtil;
import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
import net.sourceforge.phpeclipse.IPreferenceConstants;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.PHPSourceViewerConfiguration;
import net.sourceforge.phpeclipse.preferences.ColorEditor;
public class PHPEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private static final String BOLD = PreferenceConstants.EDITOR_BOLD_SUFFIX;
- private static final String COMPILER_TASK_TAGS = PHPCore.COMPILER_TASK_TAGS;
+ private static final String COMPILER_TASK_TAGS = JavaCore.COMPILER_TASK_TAGS;
public final OverlayPreferenceStore.OverlayKey[] fKeys =
new OverlayPreferenceStore.OverlayKey[] {
package net.sourceforge.phpdt.internal.ui.util;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.dialog.ElementListSelectionDialog;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IProject;
ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), new WorkbenchLabelProvider());
dialog.setTitle(browseDialogTitle);
dialog.setMessage(browseDialogMessage);
- dialog.setElements(PHPCore.getPHPProjects());
+ dialog.setElements(JavaCore.getPHPProjects());
if (dialog.open() == ElementListSelectionDialog.OK) {
textField.setText(((IProject) dialog.getFirstResult()).getName());
import net.sourceforge.phpdt.core.IJavaElement;
import net.sourceforge.phpdt.core.IWorkingCopy;
import net.sourceforge.phpdt.core.JavaModelException;
-import net.sourceforge.phpeclipse.PHPCore;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.EditorUtility;
import net.sourceforge.phpeclipse.phpeditor.PHPDocumentProvider;
* @since 2.0
*/
public static IWorkingCopy[] getSharedWorkingCopies() {
- return PHPCore.getSharedWorkingCopies(getBufferFactory());
+ return JavaCore.getSharedWorkingCopies(getBufferFactory());
}
/**
import net.sourceforge.phpdt.core.IParent;
import net.sourceforge.phpdt.core.ISourceReference;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.corext.util.JavaModelUtil;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
// Included is a member of excluded, but since it is rendered as a source
// folder we have to exclude it as a normal child.
if (o instanceof IFolder) {
- IJavaElement element= PHPCore.create((IFolder)o);
+ IJavaElement element= JavaCore.create((IFolder)o);
if (element instanceof IPackageFragmentRoot && element.exists()) {
continue;
}
// try to map resources to the containing package fragment
if (element instanceof IResource) {
IResource parent= ((IResource)element).getParent();
- IJavaElement jParent= PHPCore.create(parent);
+ IJavaElement jParent= JavaCore.create(parent);
// http://bugs.eclipse.org/bugs/show_bug.cgi?id=31374
if (jParent != null && jParent.exists())
return jParent;
import net.sourceforge.phpdt.core.IJavaProject;
import net.sourceforge.phpdt.core.IPackageFragmentRoot;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.externaltools.internal.ui.StatusInfo;
import net.sourceforge.phpdt.internal.ui.viewsupport.IViewPartInputProvider;
import net.sourceforge.phpdt.internal.ui.wizards.NewWizardMessages;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IStringButtonAdapter;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.LayoutUtil;
import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.StringButtonDialogField;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IProject;
jelem= (IJavaElement) resource.getAdapter(IJavaElement.class);
}
if (jelem == null) {
- jelem= PHPCore.create(resource); // java project
+ jelem= JavaCore.create(resource); // java project
}
}
}
if (jelem == null || jelem.getElementType() == IJavaElement.JAVA_MODEL) {
try {
- IJavaProject[] projects= PHPCore.create(getWorkspaceRoot()).getJavaProjects();
+ IJavaProject[] projects= JavaCore.create(getWorkspaceRoot()).getJavaProjects();
if (projects.length == 1) {
jelem= projects[0];
}
status.setError(NewWizardMessages.getFormattedString("NewContainerWizardPage.error.ProjectClosed", proj.getFullPath().toString())); //$NON-NLS-1$
return status;
}
- IJavaProject jproject= PHPCore.create(proj);
+ IJavaProject jproject= JavaCore.create(proj);
// fCurrRoot= jproject.getPackageFragmentRoot(res);
// if (res.exists()) {
// try {
+++ /dev/null
-package net.sourceforge.phpeclipse;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import net.sourceforge.phpdt.core.ClasspathVariableInitializer;
-import net.sourceforge.phpdt.core.ElementChangedEvent;
-import net.sourceforge.phpdt.core.IBufferFactory;
-import net.sourceforge.phpdt.core.IClasspathEntry;
-import net.sourceforge.phpdt.core.ICompilationUnit;
-import net.sourceforge.phpdt.core.IElementChangedListener;
-import net.sourceforge.phpdt.core.IJavaElement;
-import net.sourceforge.phpdt.core.IJavaModel;
-import net.sourceforge.phpdt.core.IJavaProject;
-import net.sourceforge.phpdt.core.IMember;
-import net.sourceforge.phpdt.core.IPackageFragmentRoot;
-import net.sourceforge.phpdt.core.IRegion;
-import net.sourceforge.phpdt.core.IWorkingCopy;
-import net.sourceforge.phpdt.core.JavaModelException;
-import net.sourceforge.phpdt.internal.core.BatchOperation;
-import net.sourceforge.phpdt.internal.core.BufferManager;
-import net.sourceforge.phpdt.internal.core.ClasspathEntry;
-import net.sourceforge.phpdt.internal.core.JavaModel;
-import net.sourceforge.phpdt.internal.core.JavaModelManager;
-import net.sourceforge.phpdt.internal.core.Region;
-import net.sourceforge.phpdt.internal.corext.Assert;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Preferences;
-
-public class PHPCore {
-
-// public static HashSet OptionNames = new HashSet(20);
- /**
- * The plug-in identifier of the Java core support
- * (value <code>"org.phpeclipse.phpdt.core"</code>).
- */
-// public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.core"; //$NON-NLS-1$
- public static final String PLUGIN_ID = PHPeclipsePlugin.PLUGIN_ID;
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
-
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String INSERT = "insert"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
-
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String NORMAL = "normal"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPACT = "compact"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String TAB = "tab"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String SPACE = "space"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String ENABLED = "enabled"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String DISABLED = "disabled"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CLEAN = "clean"; //$NON-NLS-1$
-
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_TAGS = PLUGIN_ID + ".compiler.taskTags"; //$NON-NLS-1$
-
- /**
- * Name of the handle id attribute in a Java marker.
- */
- protected static final String ATT_HANDLE_ID =
- "net.sourceforge.phpdt.internal.core.JavaModelManager.handleId" ; //$NON-NLS-1$
-
- // *************** Possible IDs for configurable options. ********************
-
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_LOCAL_VARIABLE_ATTR = PLUGIN_ID + ".compiler.debug.localVariable"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions()
- */
- public static final String COMPILER_LINE_NUMBER_ATTR = PLUGIN_ID + ".compiler.debug.lineNumber"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_SOURCE_FILE_ATTR = PLUGIN_ID + ".compiler.debug.sourceFile"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_CODEGEN_UNUSED_LOCAL = PLUGIN_ID + ".compiler.codegen.unusedLocal"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_CODEGEN_TARGET_PLATFORM = PLUGIN_ID + ".compiler.codegen.targetPlatform"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_INVALID_IMPORT = PLUGIN_ID + ".compiler.problem.invalidImport"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD = PLUGIN_ID + ".compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME = PLUGIN_ID + ".compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_HIDDEN_CATCH_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT = PLUGIN_ID + ".compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE = PLUGIN_ID + ".compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_UNUSED_IMPORT = PLUGIN_ID + ".compiler.problem.unusedImport"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String COMPILER_PB_SYNTHETIC_ACCESS_EMULATION = PLUGIN_ID + ".compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_NON_NLS_STRING_LITERAL = PLUGIN_ID + ".compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_ASSERT_IDENTIFIER = PLUGIN_ID + ".compiler.problem.assertIdentifier"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_STATIC_ACCESS_RECEIVER = PLUGIN_ID + ".compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_NO_EFFECT_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.noEffectAssignment"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD = PLUGIN_ID + ".compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION = PLUGIN_ID + ".compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_PB_MAX_PER_UNIT = PLUGIN_ID + ".compiler.maxProblemPerUnit"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_SOURCE = PLUGIN_ID + ".compiler.source"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITIES = PLUGIN_ID + ".compiler.taskPriorities"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_HIGH = "HIGH"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_LOW = "LOW"; //$NON-NLS-1$
- /**
- * Possible configurable option value for COMPILER_TASK_PRIORITIES.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String COMPILER_TASK_PRIORITY_NORMAL = "NORMAL"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- */
- public static final String CORE_JAVA_BUILD_ORDER = PLUGIN_ID + ".computeJavaBuildOrder"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_JAVA_BUILD_RESOURCE_COPY_FILTER = PLUGIN_ID + ".builder.resourceCopyExclusionFilter"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_JAVA_BUILD_DUPLICATE_RESOURCE = PLUGIN_ID + ".builder.duplicateResourceTask"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.cleanOutputFolder"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_INCOMPLETE_CLASSPATH = PLUGIN_ID + ".incompleteClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_CIRCULAR_CLASSPATH = PLUGIN_ID + ".circularClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CORE_JAVA_BUILD_INVALID_CLASSPATH = PLUGIN_ID + ".builder.invalidClasspath"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS = PLUGIN_ID + ".classpath.exclusionPatterns"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS = PLUGIN_ID + ".classpath.multipleOutputLocations"; //$NON-NLS-1$
- /**
- * Default task tag
- * @since 2.1
- */
- public static final String DEFAULT_TASK_TAG = "TODO"; //$NON-NLS-1$
- /**
- * Default task priority
- * @since 2.1
- */
- public static final String DEFAULT_TASK_PRIORITY = "NORMAL"; //$NON-NLS-1$
- /**
- * Possible configurable option ID
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String FORMATTER_SPACE_CASTEXPRESSION = PLUGIN_ID + ".formatter.space.castexpression"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CODEASSIST_VISIBILITY_CHECK = PLUGIN_ID + ".codeComplete.visibilityCheck"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String CODEASSIST_IMPLICIT_QUALIFICATION = PLUGIN_ID + ".codeComplete.forceImplicitQualification"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.fieldPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_STATIC_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.staticFieldPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_LOCAL_PREFIXES = PLUGIN_ID + ".codeComplete.localPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_ARGUMENT_PREFIXES = PLUGIN_ID + ".codeComplete.argumentPrefixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.fieldSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_STATIC_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.staticFieldSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_LOCAL_SUFFIXES = PLUGIN_ID + ".codeComplete.localSuffixes"; //$NON-NLS-1$
- /**
- * Possible configurable option ID.
- * @see #getDefaultOptions
- * @since 2.1
- */
- public static final String CODEASSIST_ARGUMENT_SUFFIXES = PLUGIN_ID + ".codeComplete.argumentSuffixes"; //$NON-NLS-1$
-
- // *************** Possible values for configurable options. ********************
-
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String GENERATE = "generate"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String PRESERVE = "preserve"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
- public static final String ABORT = "abort"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String ERROR = "error"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String WARNING = "warning"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String IGNORE = "ignore"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- */
- public static final String COMPUTE = "compute"; //$NON-NLS-1$
- /**
- * Possible configurable option value.
- * @see #getDefaultOptions
- * @since 2.0
- */
-
-
- /**
- * Returns a table of all known configurable options with their default values.
- * These options allow to configure the behaviour of the underlying components.
- * The client may safely use the result as a template that they can modify and
- * then pass to <code>setOptions</code>.
- *
- * Helper constants have been defined on JavaCore for each of the option ID and
- * their possible constant values.
- *
- * Note: more options might be added in further releases.
- * <pre>
- * RECOGNIZED OPTIONS:
- * COMPILER / Generating Local Variable Debug Attribute
- * When generated, this attribute will enable local variable names
- * to be displayed in debugger, only in place where variables are
- * definitely assigned (.class file is then bigger)
- * - option id: "org.phpeclipse.phpdt.core.compiler.debug.localVariable"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Line Number Debug Attribute
- * When generated, this attribute will enable source code highlighting in debugger
- * (.class file is then bigger).
- * - option id: "org.phpeclipse.phpdt.core.compiler.debug.lineNumber"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Source Debug Attribute
- * When generated, this attribute will enable the debugger to present the
- * corresponding source code.
- * - option id: "org.phpeclipse.phpdt.core.compiler.debug.sourceFile"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Preserving Unused Local Variables
- * Unless requested to preserve unused local variables (i.e. never read), the
- * compiler will optimize them out, potentially altering debugging
- * - option id: "org.phpeclipse.phpdt.core.compiler.codegen.unusedLocal"
- * - possible values: { "preserve", "optimize out" }
- * - default: "preserve"
- *
- * COMPILER / Defining Target Java Platform
- * For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
- * Note that "1.4" target require to toggle compliance mode to "1.4" too.
- * - option id: "org.phpeclipse.phpdt.core.compiler.codegen.targetPlatform"
- * - possible values: { "1.1", "1.2", "1.3", "1.4" }
- * - default: "1.1"
- *
- * COMPILER / Reporting Unreachable Code
- * Unreachable code can optionally be reported as an error, warning or simply
- * ignored. The bytecode generation will always optimized it out.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unreachableCode"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Invalid Import
- * An import statement that cannot be resolved might optionally be reported
- * as an error, as a warning or ignored.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.invalidImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Attempt to Override Package-Default Method
- * A package default method is not visible in a different package, and thus
- * cannot be overridden. When enabling this option, the compiler will signal
- * such scenarii either as an error or a warning.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.overridingPackageDefaultMethod"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Method With Constructor Name
- * Naming a method with a constructor name is generally considered poor
- * style programming. When enabling this option, the compiler will signal such
- * scenarii either as an error or a warning.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.methodWithConstructorName"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation
- * When enabled, the compiler will signal use of deprecated API either as an
- * error or a warning.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.deprecation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation Inside Deprecated Code
- * When enabled, the compiler will signal use of deprecated API inside deprecated code.
- * The severity of the problem is controlled with option "org.phpeclipse.phpdt.core.compiler.problem.deprecation".
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.deprecationInDeprecatedCode"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Hidden Catch Block
- * Locally to a try statement, some catch blocks may hide others , e.g.
- * try { throw new java.io.CharConversionException();
- * } catch (java.io.CharConversionException e) {
- * } catch (java.io.IOException e) {}.
- * When enabling this option, the compiler will issue an error or a warning for hidden
- * catch blocks corresponding to checked exceptions
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.hiddenCatchBlock"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Unused Local
- * When enabled, the compiler will issue an error or a warning for unused local
- * variables (i.e. variables never read from)
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedLocal"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Parameter
- * When enabled, the compiler will issue an error or a warning for unused method
- * parameters (i.e. parameters never read from)
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedParameter"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Import
- * When enabled, the compiler will issue an error or a warning for unused import
- * reference
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.unusedImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Synthetic Access Emulation
- * When enabled, the compiler will issue an error or a warning whenever it emulates
- * access to a non-accessible member of an enclosing type. Such access can have
- * performance implications.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.syntheticAccessEmulation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Non-Externalized String Literal
- * When enabled, the compiler will issue an error or a warning for non externalized
- * String literal (i.e. non tagged with //$NON-NLS-<n>$).
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.nonExternalizedStringLiteral"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Usage of 'assert' Identifier
- * When enabled, the compiler will issue an error or a warning whenever 'assert' is
- * used as an identifier (reserved keyword in 1.4)
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.assertIdentifier"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Usage of expression receiver on static invocation/field access
- * When enabled, the compiler will issue an error or a warning whenever a static field
- * or method is accessed with an expression receiver.
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.staticAccessReceiver"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Assignment with no effect
- * When enabled, the compiler will issue an error or a warning whenever an assignment
- * has no effect (e.g 'x = x').
- * - option id: "org.phpeclipse.phpdt.core.compiler.problem.noEffectAssignment"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Setting Source Compatibility Mode
- * Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword
- * reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
- * level should be set to "1.4" and the compliance mode should be "1.4".
- * - option id: "org.phpeclipse.phpdt.core.compiler.source"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Setting Compliance Level
- * Select the compliance level for the compiler. In "1.3" mode, source and target settings
- * should not go beyond "1.3" level.
- * - option id: "org.phpeclipse.phpdt.core.compiler.compliance"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Maximum number of problems reported per compilation unit
- * Specify the maximum number of problems reported on each compilation unit.
- * - option id: "org.phpeclipse.phpdt.core.compiler.maxProblemPerUnit"
- * - possible values: "<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
- * - default: "100"
- *
- * COMPILER / Define the Automatic Task Tags
- * When the tag is non empty, the compiler will issue a task marker whenever it encounters
- * one of the corresponding tag inside any comment in Java source code.
- * Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
- * - option id: "org.phpeclipse.phpdt.core.compiler.taskTags"
- * - possible values: { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card
- * - default: ""
- * COMPILER / Define the Automatic Task Priorities
- * In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
- * of the task markers issued by the compiler.
- * If the default is specified, the priority of each task marker is "NORMAL".
- * - option id: "org.phpeclipse.phpdt.core.compiler.taskPriorities"
- * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW"
- * - default: ""
- *
- * BUILDER / Specifying Filters for Resource Copying Control
- * Allow to specify some filters to control the resource copy process.
- * - option id: "org.phpeclipse.phpdt.core.builder.resourceCopyExclusionFilter"
- * - possible values: { "<name>[,<name>]* } where <name> is a file name pattern (* and ? wild-cards allowed)
- * or the name of a folder which ends with '/'
- * - default: ""
- *
- * BUILDER / Abort if Invalid Classpath
- * Allow to toggle the builder to abort if the classpath is invalid
- * - option id: "org.phpeclipse.phpdt.core.builder.invalidClasspath"
- * - possible values: { "abort", "ignore" }
- * - default: "ignore"
- *
- * BUILDER / Cleaning Output Folder(s)
- * Indicate whether the JavaBuilder is allowed to clean the output folders
- * when performing full build operations.
- * - option id: "org.phpeclipse.phpdt.core.builder.cleanOutputFolder"
- * - possible values: { "clean", "ignore" }
- * - default: "clean"
- *
- * JAVACORE / Computing Project Build Order
- * Indicate whether JavaCore should enforce the project build order to be based on
- * the classpath prerequisite chain. When requesting to compute, this takes over
- * the platform default order (based on project references).
- * - option id: "org.phpeclipse.phpdt.core.computeJavaBuildOrder"
- * - possible values: { "compute", "ignore" }
- * - default: "ignore"
- *
- * JAVACORE / Specify Default Source Encoding Format
- * Get the encoding format for compiled sources. This setting is read-only, it is equivalent
- * to 'ResourcesPlugin.getEncoding()'.
- * - option id: "org.phpeclipse.phpdt.core.encoding"
- * - possible values: { any of the supported encoding name}.
- * - default: <platform default>
- *
- * JAVACORE / Reporting Incomplete Classpath
- * An entry on the classpath doesn't exist or is not visible (e.g. a referenced project is closed).
- * - option id: "org.phpeclipse.phpdt.core.incompleteClasspath"
- * - possible values: { "error", "warning"}
- * - default: "error"
- *
- * JAVACORE / Reporting Classpath Cycle
- * A project is involved in a cycle.
- * - option id: "org.phpeclipse.phpdt.core.circularClasspath"
- * - possible values: { "error", "warning" }
- * - default: "error"
- *
- * FORMATTER / Inserting New Line Before Opening Brace
- * When Insert, a new line is inserted before an opening brace, otherwise nothing
- * is inserted
- * - option id: "org.phpeclipse.phpdt.core.formatter.newline.openingBrace"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line Inside Control Statement
- * When Insert, a new line is inserted between } and following else, catch, finally
- * - option id: "org.phpeclipse.phpdt.core.formatter.newline.controlStatement"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Clearing Blank Lines
- * When Clear all, all blank lines are removed. When Preserve one, only one is kept
- * and all others removed.
- * - option id: "org.phpeclipse.phpdt.core.formatter.newline.clearAll"
- * - possible values: { "clear all", "preserve one" }
- * - default: "preserve one"
- *
- * FORMATTER / Inserting New Line Between Else/If
- * When Insert, a blank line is inserted between an else and an if when they are
- * contiguous. When choosing to not insert, else-if will be kept on the same
- * line when possible.
- * - option id: "org.phpeclipse.phpdt.core.formatter.newline.elseIf"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line In Empty Block
- * When insert, a line break is inserted between contiguous { and }, if } is not followed
- * by a keyword.
- * - option id: "org.phpeclipse.phpdt.core.formatter.newline.emptyBlock"
- * - possible values: { "insert", "do not insert" }
- * - default: "insert"
- *
- * FORMATTER / Splitting Lines Exceeding Length
- * Enable splitting of long lines (exceeding the configurable length). Length of 0 will
- * disable line splitting
- * - option id: "org.phpeclipse.phpdt.core.formatter.lineSplit"
- * - possible values: "<n>", where n is zero or a positive integer
- * - default: "80"
- *
- * FORMATTER / Compacting Assignment
- * Assignments can be formatted asymmetrically, e.g. 'int x= 2;', when Normal, a space
- * is inserted before the assignment operator
- * - option id: "org.phpeclipse.phpdt.core.formatter.style.assignment"
- * - possible values: { "compact", "normal" }
- * - default: "normal"
- *
- * FORMATTER / Defining Indentation Character
- * Either choose to indent with tab characters or spaces
- * - option id: "org.phpeclipse.phpdt.core.formatter.tabulation.char"
- * - possible values: { "tab", "space" }
- * - default: "tab"
- *
- * FORMATTER / Defining Space Indentation Length
- * When using spaces, set the amount of space characters to use for each
- * indentation mark.
- * - option id: "org.phpeclipse.phpdt.core.formatter.tabulation.size"
- * - possible values: "<n>", where n is a positive integer
- * - default: "4"
- *
- * CODEASSIST / Activate Visibility Sensitive Completion
- * When active, completion doesn't show that you can not see
- * (e.g. you can not see private methods of a super class).
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.visibilityCheck"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Automatic Qualification of Implicit Members
- * When active, completion automatically qualifies completion on implicit
- * field references and message expressions.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.forceImplicitQualification"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Define the Prefixes for Field Name
- * When the prefixes is non empty, completion for field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.fieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Static Field Name
- * When the prefixes is non empty, completion for static field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.staticFieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Local Variable Name
- * When the prefixes is non empty, completion for local variable name will begin with
- * one of the proposed prefixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.localPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Argument Name
- * When the prefixes is non empty, completion for argument name will begin with
- * one of the proposed prefixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.argumentPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Field Name
- * When the suffixes is non empty, completion for field name will end with
- * one of the proposed suffixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.fieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Static Field Name
- * When the suffixes is non empty, completion for static field name will end with
- * one of the proposed suffixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.staticFieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Local Variable Name
- * When the suffixes is non empty, completion for local variable name will end with
- * one of the proposed suffixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.localSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Argument Name
- * When the suffixes is non empty, completion for argument name will end with
- * one of the proposed suffixes.
- * - option id: "org.phpeclipse.phpdt.core.codeComplete.argumentSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- * </pre>
- *
- * @return a mutable table containing the default settings of all known options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see #setOptions
- */
-// public static Hashtable getDefaultOptions() {
-//
-// Hashtable defaultOptions = new Hashtable(10);
-//
-// // see #initializeDefaultPluginPreferences() for changing default settings
-// Preferences preferences = getPlugin().getPluginPreferences();
-// HashSet optionNames = OptionNames;
-//
-// // get preferences set to their default
-// String[] defaultPropertyNames = preferences.defaultPropertyNames();
-// for (int i = 0; i < defaultPropertyNames.length; i++) {
-// String propertyName = defaultPropertyNames[i];
-// if (optionNames.contains(propertyName)) {
-// defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
-// }
-// }
-// // get preferences not set to their default
-// String[] propertyNames = preferences.propertyNames();
-// for (int i = 0; i < propertyNames.length; i++) {
-// String propertyName = propertyNames[i];
-// if (optionNames.contains(propertyName)) {
-// defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
-// }
-// }
-// // get encoding through resource plugin
-// defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
-//
-// return defaultOptions;
-// }
- /**
- * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
- * Note that it may answer <code>null</code> if this option does not exist.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param optionName the name of an option
- * @return the String value of a given option
- * @see JavaCore#getDefaultOptions
- * @since 2.0
- */
-// public static String getOption(String optionName) {
-//
-// if (CORE_ENCODING.equals(optionName)) {
-// return ResourcesPlugin.getEncoding();
-// }
-// if (OptionNames.contains(optionName)) {
-// Preferences preferences = getPlugin().getPluginPreferences();
-// return preferences.getString(optionName).trim();
-// }
-// return null;
-// }
-
- /**
- * Returns the table of the current options. Initially, all options have their default values,
- * and this method returns a table that includes all known options.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @return table of current settings of all options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see JavaCore#getDefaultOptions
- */
-// public static Hashtable getOptions() {
-//
-// Hashtable options = new Hashtable(10);
-//
-// // see #initializeDefaultPluginPreferences() for changing default settings
-// Plugin plugin = getPlugin();
-// if (plugin != null) {
-// Preferences preferences = getPlugin().getPluginPreferences();
-// HashSet optionNames = OptionNames;
-//
-// // get preferences set to their default
-// String[] defaultPropertyNames = preferences.defaultPropertyNames();
-// for (int i = 0; i < defaultPropertyNames.length; i++) {
-// String propertyName = defaultPropertyNames[i];
-// if (optionNames.contains(propertyName)) {
-// options.put(propertyName, preferences.getDefaultString(propertyName));
-// }
-// }
-// // get preferences not set to their default
-// String[] propertyNames = preferences.propertyNames();
-// for (int i = 0; i < propertyNames.length; i++) {
-// String propertyName = propertyNames[i];
-// if (optionNames.contains(propertyName)) {
-// options.put(propertyName, preferences.getString(propertyName).trim());
-// }
-// }
-// // get encoding through resource plugin
-// options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
-// }
-// return options;
-// }
- /**
- * Sets the current table of options. All and only the options explicitly included in the given table
- * are remembered; all previous option settings are forgotten, including ones not explicitly
- * mentioned.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
- * or <code>null</code> to reset all options to their default values
- * @see JavaCore#getDefaultOptions
- */
-// public static void setOptions(Hashtable newOptions) {
-//
-// // see #initializeDefaultPluginPreferences() for changing default settings
-// Preferences preferences = getPlugin().getPluginPreferences();
-//
-// if (newOptions == null) {
-// newOptions = getDefaultOptions();
-// }
-// Enumeration keys = newOptions.keys();
-// while (keys.hasMoreElements()) {
-// String key = (String) keys.nextElement();
-// if (!OptionNames.contains(key))
-// continue; // unrecognized option
-// if (key.equals(CORE_ENCODING))
-// continue; // skipped, contributed by resource prefs
-// String value = (String) newOptions.get(key);
-// preferences.setValue(key, value);
-// }
-//
-// // persist options
-// getPlugin().savePluginPreferences();
-// }
- public static IProject[] getPHPProjects() {
- List phpProjectsList = new ArrayList();
- IProject[] workspaceProjects = PHPeclipsePlugin.getWorkspace().getRoot().getProjects();
-
- for (int i = 0; i < workspaceProjects.length; i++) {
- IProject iProject = workspaceProjects[i];
- if (isPHPProject(iProject))
- phpProjectsList.add(iProject);
- }
-
- IProject[] phpProjects = new IProject[phpProjectsList.size()];
- return (IProject[]) phpProjectsList.toArray(phpProjects);
- }
-
-// public static PHPProject getPHPProject(String name) {
-// IProject aProject = PHPeclipsePlugin.getWorkspace().getRoot().getProject(name);
-// if (isPHPProject(aProject)) {
-// PHPProject thePHPProject = new PHPProject();
-// thePHPProject.setProject(aProject);
-// return thePHPProject;
-// }
-// return null;
-// }
-
- public static boolean isPHPProject(IProject aProject) {
- try {
- return aProject.hasNature(PHPeclipsePlugin.PHP_NATURE_ID);
- } catch (CoreException e) {
- }
-
- return false;
- }
-
-// public static PHPFile create(IFile aFile) {
-// if (PHPFile.EXTENSION.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-// if (PHPFile.EXTENSION1.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-// if (PHPFile.EXTENSION2.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-// if (PHPFile.EXTENSION3.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-// if (PHPFile.EXTENSION4.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-// if (PHPFile.EXTENSION5.equalsIgnoreCase(aFile.getFileExtension()))
-// return new PHPFile(aFile);
-//
-// return null;
-// }
-
-// public static PHPProject create(IProject aProject) {
-//
-// try {
-// if (aProject.hasNature(PHPeclipsePlugin.PHP_NATURE_ID)) {
-// PHPProject project = new PHPProject();
-// project.setProject(aProject);
-// return project;
-// }
-// } catch (CoreException e) {
-// System.err.println("Exception occurred in PHPCore#create(IProject): " + e.toString());
-// }
-//
-// return null;
-// }
-
- public static void addPHPNature(IProject project, IProgressMonitor monitor) throws CoreException {
- if (!project.hasNature(PHPeclipsePlugin.PHP_NATURE_ID)) {
- IProjectDescription description = project.getDescription();
- String[] prevNatures = description.getNatureIds();
- String[] newNatures = new String[prevNatures.length + 1];
- System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
- newNatures[prevNatures.length] = PHPeclipsePlugin.PHP_NATURE_ID;
- description.setNatureIds(newNatures);
- project.setDescription(description, monitor);
- }
- }
-
- /**
- * Returns the single instance of the PHP core plug-in runtime class.
- *
- * @return the single instance of the PHP core plug-in runtime class
- */
- public static Plugin getPlugin() {
- return PHPeclipsePlugin.getDefault();
- }
-
- /**
- * Initializes the default preferences settings for this plug-in.
- */
-
- /**
- * Runs the given action as an atomic Java model operation.
- * <p>
- * After running a method that modifies Java elements,
- * registered listeners receive after-the-fact notification of
- * what just transpired, in the form of a element changed event.
- * This method allows clients to call a number of
- * methods that modify java elements and only have element
- * changed event notifications reported at the end of the entire
- * batch.
- * </p>
- * <p>
- * If this method is called outside the dynamic scope of another such
- * call, this method runs the action and then reports a single
- * element changed event describing the net effect of all changes
- * done to java elements by the action.
- * </p>
- * <p>
- * If this method is called in the dynamic scope of another such
- * call, this method simply runs the action.
- * </p>
- *
- * @param action the action to perform
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting and cancellation are not desired
- * @exception CoreException if the operation failed.
- * @since 2.1
- */
- public static void run(IWorkspaceRunnable action, IProgressMonitor monitor) throws CoreException {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- if (workspace.isTreeLocked()) {
- new BatchOperation(action).run(monitor);
- } else {
- // use IWorkspace.run(...) to ensure that a build will be done in autobuild mode
- workspace.run(new BatchOperation(action), monitor);
- }
- }
-
-/**
- * Adds the given listener for changes to Java elements.
- * Has no effect if an identical listener is already registered.
- *
- * This listener will only be notified during the POST_CHANGE resource change notification
- * and any reconcile operation (POST_RECONCILE).
- * For finer control of the notification, use <code>addElementChangedListener(IElementChangedListener,int)</code>,
- * which allows to specify a different eventMask.
- *
- * @see ElementChangedEvent
- * @param listener the listener
- */
-public static void addElementChangedListener(IElementChangedListener listener) {
- addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE | ElementChangedEvent.POST_RECONCILE);
-}
-
-/**
- * Adds the given listener for changes to Java elements.
- * Has no effect if an identical listener is already registered.
- * After completion of this method, the given listener will be registered for exactly
- * the specified events. If they were previously registered for other events, they
- * will be deregistered.
- * <p>
- * Once registered, a listener starts receiving notification of changes to
- * java elements in the model. The listener continues to receive
- * notifications until it is replaced or removed.
- * </p>
- * <p>
- * Listeners can listen for several types of event as defined in <code>ElementChangeEvent</code>.
- * Clients are free to register for any number of event types however if they register
- * for more than one, it is their responsibility to ensure they correctly handle the
- * case where the same java element change shows up in multiple notifications.
- * Clients are guaranteed to receive only the events for which they are registered.
- * </p>
- *
- * @param listener the listener
- * @param eventMask the bit-wise OR of all event types of interest to the listener
- * @see IElementChangedListener
- * @see ElementChangedEvent
- * @see #removeElementChangedListener(IElementChangedListener)
- * @since 2.0
- */
-public static void addElementChangedListener(IElementChangedListener listener, int eventMask) {
- JavaModelManager.getJavaModelManager().addElementChangedListener(listener, eventMask);
-}
-
-/**
- * Configures the given marker attribute map for the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param attributes the mutable marker attribute map (key type: <code>String</code>,
- * value type: <code>String</code>)
- * @param element the Java element for which the marker needs to be configured
- */
-public static void addJavaElementMarkerAttributes(
- Map attributes,
- IJavaElement element) {
-// if (element instanceof IMember)
-// element = ((IMember) element).getClassFile();
- if (attributes != null && element != null)
- attributes.put(ATT_HANDLE_ID, element.getHandleIdentifier());
-}
-
-/**
- * Configures the given marker for the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param marker the marker to be configured
- * @param element the Java element for which the marker needs to be configured
- * @exception CoreException if the <code>IMarker.setAttribute</code> on the marker fails
- */
-public void configureJavaElementMarker(IMarker marker, IJavaElement element)
- throws CoreException {
-// if (element instanceof IMember)
-// element = ((IMember) element).getClassFile();
- if (marker != null && element != null)
- marker.setAttribute(ATT_HANDLE_ID, element.getHandleIdentifier());
-}
-
-/**
- * Returns the Java model element corresponding to the given handle identifier
- * generated by <code>IJavaElement.getHandleIdentifier()</code>, or
- * <code>null</code> if unable to create the associated element.
- */
-public static IJavaElement create(String handleIdentifier) {
- if (handleIdentifier == null) {
- return null;
- }
- try {
- return JavaModelManager.getJavaModelManager().getHandleFromMemento(handleIdentifier);
- } catch (JavaModelException e) {
- return null;
- }
-}
-/**
- * Returns the Java element corresponding to the given file, or
- * <code>null</code> if unable to associate the given file
- * with a Java element.
- *
- * <p>The file must be one of:<ul>
- * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
- * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
- * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
- * </ul>
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param the given file
- * @return the Java element corresponding to the given file, or
- * <code>null</code> if unable to associate the given file
- * with a Java element
- */
-public static IJavaElement create(IFile file) {
- return JavaModelManager.create(file, null);
-}
-/**
- * Returns the package fragment or package fragment root corresponding to the given folder, or
- * <code>null</code> if unable to associate the given folder with a Java element.
- * <p>
- * Note that a package fragment root is returned rather than a default package.
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param the given folder
- * @return the package fragment or package fragment root corresponding to the given folder, or
- * <code>null</code> if unable to associate the given folder with a Java element
- */
-public static IJavaElement create(IFolder folder) {
- return JavaModelManager.create(folder, null);
-}
-/**
- * Returns the Java project corresponding to the given project.
- * <p>
- * Creating a Java Project has the side effect of creating and opening all of the
- * project's parents if they are not yet open.
- * <p>
- * Note that no check is done at this time on the existence or the java nature of this project.
- *
- * @param project the given project
- * @return the Java project corresponding to the given project, null if the given project is null
- */
-public static IJavaProject create(IProject project) {
- if (project == null) {
- return null;
- }
- JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
- return javaModel.getJavaProject(project);
-}
-/**
- * Returns the Java element corresponding to the given resource, or
- * <code>null</code> if unable to associate the given resource
- * with a Java element.
- * <p>
- * The resource must be one of:<ul>
- * <li>a project - the element returned is the corresponding <code>IJavaProject</code></li>
- * <li>a <code>.java</code> file - the element returned is the corresponding <code>ICompilationUnit</code></li>
- * <li>a <code>.class</code> file - the element returned is the corresponding <code>IClassFile</code></li>
- * <li>a <code>.jar</code> file - the element returned is the corresponding <code>IPackageFragmentRoot</code></li>
- * <li>a folder - the element returned is the corresponding <code>IPackageFragmentRoot</code>
- * or <code>IPackageFragment</code></li>
- * <li>the workspace root resource - the element returned is the <code>IJavaModel</code></li>
- * </ul>
- * <p>
- * Creating a Java element has the side effect of creating and opening all of the
- * element's parents if they are not yet open.
- *
- * @param resource the given resource
- * @return the Java element corresponding to the given resource, or
- * <code>null</code> if unable to associate the given resource
- * with a Java element
- */
-public static IJavaElement create(IResource resource) {
- return JavaModelManager.create(resource, null);
-}
-/**
- * Returns the Java model.
- *
- * @param root the given root
- * @return the Java model, or <code>null</code> if the root is null
- */
-public static IJavaModel create(IWorkspaceRoot root) {
- if (root == null) {
- return null;
- }
- return JavaModelManager.getJavaModelManager().getJavaModel();
-}
-/**
- * Creates and returns a class file element for
- * the given <code>.class</code> file. Returns <code>null</code> if unable
- * to recognize the class file.
- *
- * @param file the given <code>.class</code> file
- * @return a class file element for the given <code>.class</code> file, or <code>null</code> if unable
- * to recognize the class file
- */
-//public static IClassFile createClassFileFrom(IFile file) {
-// return JavaModelManager.createClassFileFrom(file, null);
-//}
-/**
- * Creates and returns a compilation unit element for
- * the given <code>.java</code> file. Returns <code>null</code> if unable
- * to recognize the compilation unit.
- *
- * @param file the given <code>.java</code> file
- * @return a compilation unit element for the given <code>.java</code> file, or <code>null</code> if unable
- * to recognize the compilation unit
- */
-public static ICompilationUnit createCompilationUnitFrom(IFile file) {
- return JavaModelManager.createCompilationUnitFrom(file, null);
-}
-/**
- * Creates and returns a handle for the given JAR file.
- * The Java model associated with the JAR's project may be
- * created as a side effect.
- *
- * @param file the given JAR file
- * @return a handle for the given JAR file, or <code>null</code> if unable to create a JAR package fragment root.
- * (for example, if the JAR file represents a non-Java resource)
- */
-//public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile file) {
-// return JavaModelManager.createJarPackageFragmentRootFrom(file, null);
-//}
-
-/**
- * Answers the project specific value for a given classpath container.
- * In case this container path could not be resolved, then will answer <code>null</code>.
- * Both the container path and the project context are supposed to be non-null.
- * <p>
- * The containerPath is a formed by a first ID segment followed with extra segments, which can be
- * used as additional hints for resolution. If no container was ever recorded for this container path
- * onto this project (using <code>setClasspathContainer</code>, then a
- * <code>ClasspathContainerInitializer</code> will be activated if any was registered for this container
- * ID onto the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * There is no assumption that the returned container must answer the exact same containerPath
- * when requested <code>IClasspathContainer#getPath</code>.
- * Indeed, the containerPath is just an indication for resolving it to an actual container object.
- * <p>
- * Classpath container values are persisted locally to the workspace, but
- * are not preserved from a session to another. It is thus highly recommended to register a
- * <code>ClasspathContainerInitializer</code> for each referenced container
- * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * @param containerPath the name of the container, which needs to be resolved
- * @param project a specific project in which the container is being resolved
- * @return the corresponding classpath container or <code>null</code> if unable to find one.
- *
- * @exception JavaModelException if an exception occurred while resolving the container, or if the resolved container
- * contains illegal entries (contains CPE_CONTAINER entries or null entries).
- *
- * @see ClasspathContainerInitializer
- * @see IClasspathContainer
- * @see #setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
- * @since 2.0
- */
-//public static IClasspathContainer getClasspathContainer(final IPath containerPath, final IJavaProject project) throws JavaModelException {
-//
-// IClasspathContainer container = JavaModelManager.containerGet(project, containerPath);
-// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
-//
-// if (container == null){
-// final ClasspathContainerInitializer initializer = JavaCore.getClasspathContainerInitializer(containerPath.segment(0));
-// if (initializer != null){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - triggering initialization of: ["+project.getElementName()+"] " + containerPath + " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
-// new Exception("FAKE exception for dumping current CPContainer (["+project.getElementName()+"] "+ containerPath+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-// }
-// JavaModelManager.containerPut(project, containerPath, JavaModelManager.ContainerInitializationInProgress); // avoid initialization cycles
-// boolean ok = false;
-// try {
-// // wrap initializer call with Safe runnable in case initializer would be causing some grief
-// Platform.run(new ISafeRunnable() {
-// public void handleException(Throwable exception) {
-// Util.log(exception, "Exception occurred in classpath container initializer: "+initializer); //$NON-NLS-1$
-// }
-// public void run() throws Exception {
-// initializer.initialize(containerPath, project);
-// }
-// });
-//
-// // retrieve value (if initialization was successful)
-// container = JavaModelManager.containerGet(project, containerPath);
-// if (container == JavaModelManager.ContainerInitializationInProgress) return null; // break cycle
-// ok = true;
-// } finally {
-// if (!ok) JavaModelManager.containerPut(project, containerPath, null); // flush cache
-// }
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.print("CPContainer INIT - after resolution: ["+project.getElementName()+"] " + containerPath + " --> "); //$NON-NLS-2$//$NON-NLS-1$//$NON-NLS-3$
-// if (container != null){
-// System.out.print("container: "+container.getDescription()+" {"); //$NON-NLS-2$//$NON-NLS-1$
-// IClasspathEntry[] entries = container.getClasspathEntries();
-// if (entries != null){
-// for (int i = 0; i < entries.length; i++){
-// if (i > 0) System.out.println(", ");//$NON-NLS-1$
-// System.out.println(entries[i]);
-// }
-// }
-// System.out.println("}");//$NON-NLS-1$
-// } else {
-// System.out.println("{unbound}");//$NON-NLS-1$
-// }
-// }
-// } else {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - no initializer found for: "+project.getElementName()+"] " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-// }
-// }
-// return container;
-//}
-
-/**
- * Helper method finding the classpath container initializer registered for a given classpath container ID
- * or <code>null</code> if none was found while iterating over the contributions to extension point to
- * the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A containerID is the first segment of any container path, used to identify the registered container initializer.
- * <p>
- * @param String - a containerID identifying a registered initializer
- * @return ClasspathContainerInitializer - the registered classpath container initializer or <code>null</code> if
- * none was found.
- * @since 2.1
- */
-//public static ClasspathContainerInitializer getClasspathContainerInitializer(String containerID){
-//
-// Plugin jdtCorePlugin = JavaCore.getPlugin();
-// if (jdtCorePlugin == null) return null;
-//
-// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPCONTAINER_INITIALIZER_EXTPOINT_ID);
-// if (extension != null) {
-// IExtension[] extensions = extension.getExtensions();
-// for(int i = 0; i < extensions.length; i++){
-// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
-// for(int j = 0; j < configElements.length; j++){
-// String initializerID = configElements[j].getAttribute("id"); //$NON-NLS-1$
-// if (initializerID != null && initializerID.equals(containerID)){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
-// System.out.println("CPContainer INIT - found initializer: "+containerID +" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-// }
-// try {
-// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
-// if (execExt instanceof ClasspathContainerInitializer){
-// return (ClasspathContainerInitializer)execExt;
-// }
-// } catch(CoreException e) {
-// }
-// }
-// }
-// }
-// }
-// return null;
-//}
-
-/**
- * Returns the path held in the given classpath variable.
- * Returns <node>null</code> if unable to bind.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Note that classpath variables can be contributed registered initializers for,
- * using the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * If an initializer is registered for a variable, its persisted value will be ignored:
- * its initializer will thus get the opportunity to rebind the variable differently on
- * each session.
- *
- * @param variableName the name of the classpath variable
- * @return the path, or <code>null</code> if none
- * @see #setClasspathVariable
- */
-public static IPath getClasspathVariable(final String variableName) {
-
- IPath variablePath = JavaModelManager.variableGet(variableName);
- if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle
-
- if (variablePath != null) {
- return variablePath;
- }
-
- // even if persisted value exists, initializer is given priority, only if no initializer is found the persisted value is reused
-// final ClasspathVariableInitializer initializer = PHPCore.getClasspathVariableInitializer(variableName);
-// if (initializer != null){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - triggering initialization of: " + variableName+ " using initializer: "+ initializer); //$NON-NLS-1$ //$NON-NLS-2$
-// new Exception("FAKE exception for dumping current CPVariable ("+variableName+ ")INIT invocation stack trace").printStackTrace(); //$NON-NLS-1$//$NON-NLS-2$
-// }
-// JavaModelManager.variablePut(variableName, JavaModelManager.VariableInitializationInProgress); // avoid initialization cycles
-// boolean ok = false;
-// try {
-// // wrap initializer call with Safe runnable in case initializer would be causing some grief
-// Platform.run(new ISafeRunnable() {
-// public void handleException(Throwable exception) {
-// Util.log(exception, "Exception occurred in classpath variable initializer: "+initializer+" while initializing variable: "+variableName); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-// public void run() throws Exception {
-// initializer.initialize(variableName);
-// }
-// });
-// variablePath = (IPath) JavaModelManager.variableGet(variableName); // initializer should have performed side-effect
-// if (variablePath == JavaModelManager.VariableInitializationInProgress) return null; // break cycle (initializer did not init or reentering call)
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - after initialization: " + variableName + " --> " + variablePath); //$NON-NLS-2$//$NON-NLS-1$
-// }
-// ok = true;
-// } finally {
-// if (!ok) JavaModelManager.variablePut(variableName, null); // flush cache
-// }
-// } else {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - no initializer found for: " + variableName); //$NON-NLS-1$
-// }
-// }
- return variablePath;
-}
-
-/**
- * Helper method finding the classpath variable initializer registered for a given classpath variable name
- * or <code>null</code> if none was found while iterating over the contributions to extension point to
- * the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * <p>
- * @param the given variable
- * @return ClasspathVariableInitializer - the registered classpath variable initializer or <code>null</code> if
- * none was found.
- * @since 2.1
- */
-public static ClasspathVariableInitializer getClasspathVariableInitializer(String variable){
-
- Plugin jdtCorePlugin = PHPCore.getPlugin();
- if (jdtCorePlugin == null) return null;
-
-// IExtensionPoint extension = jdtCorePlugin.getDescriptor().getExtensionPoint(JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
-// if (extension != null) {
-// IExtension[] extensions = extension.getExtensions();
-// for(int i = 0; i < extensions.length; i++){
-// IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
-// for(int j = 0; j < configElements.length; j++){
-// try {
-// String varAttribute = configElements[j].getAttribute("variable"); //$NON-NLS-1$
-// if (variable.equals(varAttribute)) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE) {
-// System.out.println("CPVariable INIT - found initializer: "+variable+" --> " + configElements[j].getAttribute("class"));//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-// }
-// Object execExt = configElements[j].createExecutableExtension("class"); //$NON-NLS-1$
-// if (execExt instanceof ClasspathVariableInitializer){
-// return (ClasspathVariableInitializer)execExt;
-// }
-// }
-// } catch(CoreException e){
-// }
-// }
-// }
-// }
- return null;
-}
-
-/**
- * Returns the names of all known classpath variables.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @return the list of classpath variable names
- * @see #setClasspathVariable
- */
-//public static String[] getClasspathVariableNames() {
-// return JavaModelManager.variableNames();
-//}
-
-/**
- * Returns a table of all known configurable options with their default values.
- * These options allow to configure the behaviour of the underlying components.
- * The client may safely use the result as a template that they can modify and
- * then pass to <code>setOptions</code>.
- *
- * Helper constants have been defined on JavaCore for each of the option ID and
- * their possible constant values.
- *
- * Note: more options might be added in further releases.
- * <pre>
- * RECOGNIZED OPTIONS:
- * COMPILER / Generating Local Variable Debug Attribute
- * When generated, this attribute will enable local variable names
- * to be displayed in debugger, only in place where variables are
- * definitely assigned (.class file is then bigger)
- * - option id: "org.eclipse.jdt.core.compiler.debug.localVariable"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Line Number Debug Attribute
- * When generated, this attribute will enable source code highlighting in debugger
- * (.class file is then bigger).
- * - option id: "org.eclipse.jdt.core.compiler.debug.lineNumber"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Generating Source Debug Attribute
- * When generated, this attribute will enable the debugger to present the
- * corresponding source code.
- * - option id: "org.eclipse.jdt.core.compiler.debug.sourceFile"
- * - possible values: { "generate", "do not generate" }
- * - default: "generate"
- *
- * COMPILER / Preserving Unused Local Variables
- * Unless requested to preserve unused local variables (that is, never read), the
- * compiler will optimize them out, potentially altering debugging
- * - option id: "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
- * - possible values: { "preserve", "optimize out" }
- * - default: "preserve"
- *
- * COMPILER / Defining Target Java Platform
- * For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
- * Note that "1.4" target require to toggle compliance mode to "1.4" too.
- * - option id: "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
- * - possible values: { "1.1", "1.2", "1.3", "1.4" }
- * - default: "1.1"
- *
- * COMPILER / Reporting Unreachable Code
- * Unreachable code can optionally be reported as an error, warning or simply
- * ignored. The bytecode generation will always optimized it out.
- * - option id: "org.eclipse.jdt.core.compiler.problem.unreachableCode"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Invalid Import
- * An import statement that cannot be resolved might optionally be reported
- * as an error, as a warning or ignored.
- * - option id: "org.eclipse.jdt.core.compiler.problem.invalidImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "error"
- *
- * COMPILER / Reporting Attempt to Override Package-Default Method
- * A package default method is not visible in a different package, and thus
- * cannot be overridden. When enabling this option, the compiler will signal
- * such scenarii either as an error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Method With Constructor Name
- * Naming a method with a constructor name is generally considered poor
- * style programming. When enabling this option, the compiler will signal such
- * scenarii either as an error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation
- * When enabled, the compiler will signal use of deprecated API either as an
- * error or a warning.
- * - option id: "org.eclipse.jdt.core.compiler.problem.deprecation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Deprecation Inside Deprecated Code
- * When enabled, the compiler will signal use of deprecated API inside deprecated code.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
- * - option id: "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Hidden Catch Block
- * Locally to a try statement, some catch blocks may hide others . For example,
- * try { throw new java.io.CharConversionException();
- * } catch (java.io.CharConversionException e) {
- * } catch (java.io.IOException e) {}.
- * When enabling this option, the compiler will issue an error or a warning for hidden
- * catch blocks corresponding to checked exceptions
- * - option id: "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Unused Local
- * When enabled, the compiler will issue an error or a warning for unused local
- * variables (that is, variables never read from)
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedLocal"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Parameter
- * When enabled, the compiler will issue an error or a warning for unused method
- * parameters (that is, parameters never read from)
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameter"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
- * When enabled, the compiler will signal unused parameters in abstract method implementations.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
- * When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
- * The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * COMPILER / Reporting Unused Import
- * When enabled, the compiler will issue an error or a warning for unused import
- * reference
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedImport"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Unused Private Members
- * When enabled, the compiler will issue an error or a warning whenever a private
- * method or field is declared but never used within the same unit.
- * - option id: "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Synthetic Access Emulation
- * When enabled, the compiler will issue an error or a warning whenever it emulates
- * access to a non-accessible member of an enclosing type. Such access can have
- * performance implications.
- * - option id: "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Non-Externalized String Literal
- * When enabled, the compiler will issue an error or a warning for non externalized
- * String literal (that is, not tagged with //$NON-NLS-<n>$).
- * - option id: "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Usage of 'assert' Identifier
- * When enabled, the compiler will issue an error or a warning whenever 'assert' is
- * used as an identifier (reserved keyword in 1.4)
- * - option id: "org.eclipse.jdt.core.compiler.problem.assertIdentifier"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "ignore"
- *
- * COMPILER / Reporting Non-Static Reference to a Static Member
- * When enabled, the compiler will issue an error or a warning whenever a static field
- * or method is accessed with an expression receiver. A reference to a static member should
- * be qualified with a type name.
- * - option id: "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Assignment with no Effect
- * When enabled, the compiler will issue an error or a warning whenever an assignment
- * has no effect (e.g 'x = x').
- * - option id: "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
- * When enabled, the compiler will issue an error or a warning whenever an interface
- * defines a method incompatible with a non-inherited Object method. Until this conflict
- * is resolved, such an interface cannot be implemented, For example,
- * interface I {
- * int clone();
- * }
- * - option id: "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
- * When enabled, the compiler will issue an error or a warning whenever a char[] expression
- * is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
- * - option id: "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
- * - possible values: { "error", "warning", "ignore" }
- * - default: "warning"
- *
- * COMPILER / Setting Source Compatibility Mode
- * Specify whether source is 1.3 or 1.4 compatible. From 1.4 on, 'assert' is a keyword
- * reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
- * level should be set to "1.4" and the compliance mode should be "1.4".
- * - option id: "org.eclipse.jdt.core.compiler.source"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Setting Compliance Level
- * Select the compliance level for the compiler. In "1.3" mode, source and target settings
- * should not go beyond "1.3" level.
- * - option id: "org.eclipse.jdt.core.compiler.compliance"
- * - possible values: { "1.3", "1.4" }
- * - default: "1.3"
- *
- * COMPILER / Maximum number of problems reported per compilation unit
- * Specify the maximum number of problems reported on each compilation unit.
- * - option id: "org.eclipse.jdt.core.compiler.maxProblemPerUnit"
- * - possible values: "<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
- * - default: "100"
- *
- * COMPILER / Define the Automatic Task Tags
- * When the tag list is not empty, the compiler will issue a task marker whenever it encounters
- * one of the corresponding tag inside any comment in Java source code.
- * Generated task messages will include the tag, and range until the next line separator or comment ending.
- * Note that tasks messages are trimmed.
- * - option id: "org.eclipse.jdt.core.compiler.taskTags"
- * - possible values: { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card or leading/trailing spaces
- * - default: ""
- *
- * COMPILER / Define the Automatic Task Priorities
- * In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
- * of the task markers issued by the compiler.
- * If the default is specified, the priority of each task marker is "NORMAL".
- * - option id: "org.eclipse.jdt.core.compiler.taskPriorities"
- * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW"
- * - default: ""
- *
- * BUILDER / Specifying Filters for Resource Copying Control
- * Allow to specify some filters to control the resource copy process.
- * - option id: "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"
- * - possible values: { "<name>[,<name>]* } where <name> is a file name pattern (* and ? wild-cards allowed)
- * or the name of a folder which ends with '/'
- * - default: ""
- *
- * BUILDER / Abort if Invalid Classpath
- * Allow to toggle the builder to abort if the classpath is invalid
- * - option id: "org.eclipse.jdt.core.builder.invalidClasspath"
- * - possible values: { "abort", "ignore" }
- * - default: "abort"
- *
- * BUILDER / Cleaning Output Folder(s)
- * Indicate whether the JavaBuilder is allowed to clean the output folders
- * when performing full build operations.
- * - option id: "org.eclipse.jdt.core.builder.cleanOutputFolder"
- * - possible values: { "clean", "ignore" }
- * - default: "clean"
- *
- * BUILDER / Reporting Duplicate Resources
- * Indicate the severity of the problem reported when more than one occurrence
- * of a resource is to be copied into the output location.
- * - option id: "org.eclipse.jdt.core.builder.duplicateResourceTask"
- * - possible values: { "error", "warning" }
- * - default: "warning"
- *
- * JAVACORE / Computing Project Build Order
- * Indicate whether JavaCore should enforce the project build order to be based on
- * the classpath prerequisite chain. When requesting to compute, this takes over
- * the platform default order (based on project references).
- * - option id: "org.eclipse.jdt.core.computeJavaBuildOrder"
- * - possible values: { "compute", "ignore" }
- * - default: "ignore"
- *
- * JAVACORE / Specify Default Source Encoding Format
- * Get the encoding format for compiled sources. This setting is read-only, it is equivalent
- * to 'ResourcesPlugin.getEncoding()'.
- * - option id: "org.eclipse.jdt.core.encoding"
- * - possible values: { any of the supported encoding name}.
- * - default: <platform default>
- *
- * JAVACORE / Reporting Incomplete Classpath
- * Indicate the severity of the problem reported when an entry on the classpath does not exist,
- * is not legite or is not visible (for example, a referenced project is closed).
- * - option id: "org.eclipse.jdt.core.incompleteClasspath"
- * - possible values: { "error", "warning"}
- * - default: "error"
- *
- * JAVACORE / Reporting Classpath Cycle
- * Indicate the severity of the problem reported when a project is involved in a cycle.
- * - option id: "org.eclipse.jdt.core.circularClasspath"
- * - possible values: { "error", "warning" }
- * - default: "error"
- *
- * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
- * When disabled, no entry on a project classpath can be associated with
- * an exclusion pattern.
- * - option id: "org.eclipse.jdt.core.classpath.exclusionPatterns"
- * - possible values: { "enabled", "disabled" }
- * - default: "enabled"
- *
- * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
- * When disabled, no entry on a project classpath can be associated with
- * a specific output location, preventing thus usage of multiple output locations.
- * - option id: "org.eclipse.jdt.core.classpath.multipleOutputLocations"
- * - possible values: { "enabled", "disabled" }
- * - default: "enabled"
- *
- * FORMATTER / Inserting New Line Before Opening Brace
- * When Insert, a new line is inserted before an opening brace, otherwise nothing
- * is inserted
- * - option id: "org.eclipse.jdt.core.formatter.newline.openingBrace"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line Inside Control Statement
- * When Insert, a new line is inserted between } and following else, catch, finally
- * - option id: "org.eclipse.jdt.core.formatter.newline.controlStatement"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Clearing Blank Lines
- * When Clear all, all blank lines are removed. When Preserve one, only one is kept
- * and all others removed.
- * - option id: "org.eclipse.jdt.core.formatter.newline.clearAll"
- * - possible values: { "clear all", "preserve one" }
- * - default: "preserve one"
- *
- * FORMATTER / Inserting New Line Between Else/If
- * When Insert, a blank line is inserted between an else and an if when they are
- * contiguous. When choosing to not insert, else-if will be kept on the same
- * line when possible.
- * - option id: "org.eclipse.jdt.core.formatter.newline.elseIf"
- * - possible values: { "insert", "do not insert" }
- * - default: "do not insert"
- *
- * FORMATTER / Inserting New Line In Empty Block
- * When insert, a line break is inserted between contiguous { and }, if } is not followed
- * by a keyword.
- * - option id: "org.eclipse.jdt.core.formatter.newline.emptyBlock"
- * - possible values: { "insert", "do not insert" }
- * - default: "insert"
- *
- * FORMATTER / Splitting Lines Exceeding Length
- * Enable splitting of long lines (exceeding the configurable length). Length of 0 will
- * disable line splitting
- * - option id: "org.eclipse.jdt.core.formatter.lineSplit"
- * - possible values: "<n>", where n is zero or a positive integer
- * - default: "80"
- *
- * FORMATTER / Compacting Assignment
- * Assignments can be formatted asymmetrically, for example 'int x= 2;', when Normal, a space
- * is inserted before the assignment operator
- * - option id: "org.eclipse.jdt.core.formatter.style.assignment"
- * - possible values: { "compact", "normal" }
- * - default: "normal"
- *
- * FORMATTER / Defining Indentation Character
- * Either choose to indent with tab characters or spaces
- * - option id: "org.eclipse.jdt.core.formatter.tabulation.char"
- * - possible values: { "tab", "space" }
- * - default: "tab"
- *
- * FORMATTER / Defining Space Indentation Length
- * When using spaces, set the amount of space characters to use for each
- * indentation mark.
- * - option id: "org.eclipse.jdt.core.formatter.tabulation.size"
- * - possible values: "<n>", where n is a positive integer
- * - default: "4"
- *
- * FORMATTER / Inserting space in cast expression
- * When Insert, a space is added between the type and the expression in a cast expression.
- * - option id: "org.eclipse.jdt.core.formatter.space.castexpression"
- * - possible values: { "insert", "do not insert" }
- * - default: "insert"
- *
- * CODEASSIST / Activate Visibility Sensitive Completion
- * When active, completion doesn't show that you can not see
- * (for example, you can not see private methods of a super class).
- * - option id: "org.eclipse.jdt.core.codeComplete.visibilityCheck"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Automatic Qualification of Implicit Members
- * When active, completion automatically qualifies completion on implicit
- * field references and message expressions.
- * - option id: "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"
- * - possible values: { "enabled", "disabled" }
- * - default: "disabled"
- *
- * CODEASSIST / Define the Prefixes for Field Name
- * When the prefixes is non empty, completion for field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Static Field Name
- * When the prefixes is non empty, completion for static field name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Local Variable Name
- * When the prefixes is non empty, completion for local variable name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Prefixes for Argument Name
- * When the prefixes is non empty, completion for argument name will begin with
- * one of the proposed prefixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
- * - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Field Name
- * When the suffixes is non empty, completion for field name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Static Field Name
- * When the suffixes is non empty, completion for static field name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Local Variable Name
- * When the suffixes is non empty, completion for local variable name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
- * - default: ""
- *
- * CODEASSIST / Define the Suffixes for Argument Name
- * When the suffixes is non empty, completion for argument name will end with
- * one of the proposed suffixes.
- * - option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
- * - possible values: { "<suffix>[,<suffix>]*" } where <prefix> is a String without any wild-card
- * - default: ""
- * </pre>
- *
- * @return a mutable table containing the default settings of all known options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see #setOptions
- */
-public static Hashtable getDefaultOptions(){
-
- Hashtable defaultOptions = new Hashtable(10);
-
- // see #initializeDefaultPluginPreferences() for changing default settings
- Preferences preferences = getPlugin().getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
-
- // get preferences set to their default
- String[] defaultPropertyNames = preferences.defaultPropertyNames();
- for (int i = 0; i < defaultPropertyNames.length; i++){
- String propertyName = defaultPropertyNames[i];
- if (optionNames.contains(propertyName)) {
- defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
- }
- }
- // get preferences not set to their default
- String[] propertyNames = preferences.propertyNames();
- for (int i = 0; i < propertyNames.length; i++){
- String propertyName = propertyNames[i];
- if (optionNames.contains(propertyName)) {
- defaultOptions.put(propertyName, preferences.getDefaultString(propertyName));
- }
- }
- // get encoding through resource plugin
- defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
-
- return defaultOptions;
-}
-
-/**
- * Returns the single instance of the Java core plug-in runtime class.
- * Equivalent to <code>(JavaCore) getPlugin()</code>.
- *
- * @return the single instance of the Java core plug-in runtime class
- */
-public static PHPeclipsePlugin getJavaCore() {
- return (PHPeclipsePlugin) getPlugin();
-}
-
-/**
- * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
- * Note that it may answer <code>null</code> if this option does not exist.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param optionName the name of an option
- * @return the String value of a given option
- * @see JavaCore#getDefaultOptions
- * @since 2.0
- */
-public static String getOption(String optionName) {
-
- if (CORE_ENCODING.equals(optionName)){
- return ResourcesPlugin.getEncoding();
- }
- if (JavaModelManager.OptionNames.contains(optionName)){
- Preferences preferences = getPlugin().getPluginPreferences();
- return preferences.getString(optionName).trim();
- }
- return null;
-}
-
-/**
- * Returns the table of the current options. Initially, all options have their default values,
- * and this method returns a table that includes all known options.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @return table of current settings of all options
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @see JavaCore#getDefaultOptions
- */
-public static Hashtable getOptions() {
-
- Hashtable options = new Hashtable(10);
-
- // see #initializeDefaultPluginPreferences() for changing default settings
- Plugin plugin = getPlugin();
- if (plugin != null) {
- Preferences preferences = getPlugin().getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
-
- // get preferences set to their default
- String[] defaultPropertyNames = preferences.defaultPropertyNames();
- for (int i = 0; i < defaultPropertyNames.length; i++){
- String propertyName = defaultPropertyNames[i];
- if (optionNames.contains(propertyName)){
- options.put(propertyName, preferences.getDefaultString(propertyName));
- }
- }
- // get preferences not set to their default
- String[] propertyNames = preferences.propertyNames();
- for (int i = 0; i < propertyNames.length; i++){
- String propertyName = propertyNames[i];
- if (optionNames.contains(propertyName)){
- options.put(propertyName, preferences.getString(propertyName).trim());
- }
- }
- // get encoding through resource plugin
- options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
- }
- return options;
-}
-
-/**
- * This is a helper method, which returns the resolved classpath entry denoted
- * by a given entry (if it is a variable entry). It is obtained by resolving the variable
- * reference in the first segment. Returns <node>null</code> if unable to resolve using
- * the following algorithm:
- * <ul>
- * <li> if variable segment cannot be resolved, returns <code>null</code></li>
- * <li> finds a project, JAR or binary folder in the workspace at the resolved path location</li>
- * <li> if none finds an external JAR file or folder outside the workspace at the resolved path location </li>
- * <li> if none returns <code>null</code></li>
- * </ul>
- * <p>
- * Variable source attachment path and root path are also resolved and recorded in the resulting classpath entry.
- * <p>
- * NOTE: This helper method does not handle classpath containers, for which should rather be used
- * <code>JavaCore#getClasspathContainer(IPath, IJavaProject)</code>.
- * <p>
- *
- * @param entry the given variable entry
- * @return the resolved library or project classpath entry, or <code>null</code>
- * if the given variable entry could not be resolved to a valid classpath entry
- */
-public static IClasspathEntry getResolvedClasspathEntry(IClasspathEntry entry) {
-
- if (entry.getEntryKind() != IClasspathEntry.CPE_VARIABLE)
- return entry;
-
- IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
- IPath resolvedPath = PHPCore.getResolvedVariablePath(entry.getPath());
- if (resolvedPath == null)
- return null;
-
- Object target = JavaModel.getTarget(workspaceRoot, resolvedPath, false);
- if (target == null)
- return null;
-
- // inside the workspace
- if (target instanceof IResource) {
- IResource resolvedResource = (IResource) target;
- if (resolvedResource != null) {
- switch (resolvedResource.getType()) {
-
- case IResource.PROJECT :
- // internal project
- return PHPCore.newProjectEntry(resolvedPath, entry.isExported());
-
- case IResource.FILE :
-// if (Util.isArchiveFileName(resolvedResource.getName())) {
-// // internal binary archive
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
-// }
- break;
-
- case IResource.FOLDER :
- // internal binary folder
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
- break;
- }
- }
- }
- // outside the workspace
- if (target instanceof File) {
- File externalFile = (File) target;
- if (externalFile.isFile()) {
- String fileName = externalFile.getName().toLowerCase();
-// if (fileName.endsWith(".jar" //$NON-NLS-1$
-// ) || fileName.endsWith(".zip" //$NON-NLS-1$
-// )) { // external binary archive
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
-// }
- } else { // external binary folder
- if (resolvedPath.isAbsolute()){
-// return JavaCore.newLibraryEntry(
-// resolvedPath,
-// getResolvedVariablePath(entry.getSourceAttachmentPath()),
-// getResolvedVariablePath(entry.getSourceAttachmentRootPath()),
-// entry.isExported());
- }
- }
- }
- return null;
-}
-
-
-/**
- * Resolve a variable path (helper method).
- *
- * @param variablePath the given variable path
- * @return the resolved variable path or <code>null</code> if none
- */
-public static IPath getResolvedVariablePath(IPath variablePath) {
-
- if (variablePath == null)
- return null;
- int count = variablePath.segmentCount();
- if (count == 0)
- return null;
-
- // lookup variable
- String variableName = variablePath.segment(0);
- IPath resolvedPath = PHPCore.getClasspathVariable(variableName);
- if (resolvedPath == null)
- return null;
-
- // append path suffix
- if (count > 1) {
- resolvedPath = resolvedPath.append(variablePath.removeFirstSegments(1));
- }
- return resolvedPath;
-}
-
-/**
- * Answers the shared working copies currently registered for this buffer factory.
- * Working copies can be shared by several clients using the same buffer factory,see
- * <code>IWorkingCopy.getSharedWorkingCopy</code>.
- *
- * @param factory the given buffer factory
- * @return the list of shared working copies for a given buffer factory
- * @see IWorkingCopy
- * @since 2.0
- */
-public static IWorkingCopy[] getSharedWorkingCopies(IBufferFactory factory){
-
- // if factory is null, default factory must be used
- if (factory == null) factory = BufferManager.getDefaultBufferManager().getDefaultBufferFactory();
- Map sharedWorkingCopies = JavaModelManager.getJavaModelManager().sharedWorkingCopies;
-
- Map perFactoryWorkingCopies = (Map) sharedWorkingCopies.get(factory);
- if (perFactoryWorkingCopies == null) return JavaModelManager.NoWorkingCopy;
- Collection copies = perFactoryWorkingCopies.values();
- IWorkingCopy[] result = new IWorkingCopy[copies.size()];
- copies.toArray(result);
- return result;
-}
-
-/**
- * Initializes the default preferences settings for this plug-in.
- */
-protected static void initializeDefaultPluginPreferences() {
-
- Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences();
- HashSet optionNames = JavaModelManager.OptionNames;
-
- // Compiler settings
- preferences.setDefault(COMPILER_LOCAL_VARIABLE_ATTR, GENERATE);
- optionNames.add(COMPILER_LOCAL_VARIABLE_ATTR);
-
- preferences.setDefault(COMPILER_LINE_NUMBER_ATTR, GENERATE);
- optionNames.add(COMPILER_LINE_NUMBER_ATTR);
-
- preferences.setDefault(COMPILER_SOURCE_FILE_ATTR, GENERATE);
- optionNames.add(COMPILER_SOURCE_FILE_ATTR);
-
- preferences.setDefault(COMPILER_CODEGEN_UNUSED_LOCAL, PRESERVE);
- optionNames.add(COMPILER_CODEGEN_UNUSED_LOCAL);
-
- preferences.setDefault(COMPILER_CODEGEN_TARGET_PLATFORM, VERSION_1_1);
- optionNames.add(COMPILER_CODEGEN_TARGET_PLATFORM);
-
- preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, ERROR);
- optionNames.add(COMPILER_PB_UNREACHABLE_CODE);
-
- preferences.setDefault(COMPILER_PB_INVALID_IMPORT, ERROR);
- optionNames.add(COMPILER_PB_INVALID_IMPORT);
-
- preferences.setDefault(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, WARNING);
- optionNames.add(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD);
-
- preferences.setDefault(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME, WARNING);
- optionNames.add(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME);
-
- preferences.setDefault(COMPILER_PB_DEPRECATION, WARNING);
- optionNames.add(COMPILER_PB_DEPRECATION);
-
- preferences.setDefault(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE, DISABLED);
- optionNames.add(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE);
-
- preferences.setDefault(COMPILER_PB_HIDDEN_CATCH_BLOCK, WARNING);
- optionNames.add(COMPILER_PB_HIDDEN_CATCH_BLOCK);
-
- preferences.setDefault(COMPILER_PB_UNUSED_LOCAL, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_LOCAL);
-
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER);
-
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT, DISABLED);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT);
-
- preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE, DISABLED);
- optionNames.add(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE);
-
- preferences.setDefault(COMPILER_PB_UNUSED_IMPORT, WARNING);
- optionNames.add(COMPILER_PB_UNUSED_IMPORT);
-
- preferences.setDefault(COMPILER_PB_UNUSED_PRIVATE_MEMBER, IGNORE);
- optionNames.add(COMPILER_PB_UNUSED_PRIVATE_MEMBER);
-
- preferences.setDefault(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, IGNORE);
- optionNames.add(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION);
-
- preferences.setDefault(COMPILER_PB_NON_NLS_STRING_LITERAL, IGNORE);
- optionNames.add(COMPILER_PB_NON_NLS_STRING_LITERAL);
-
- preferences.setDefault(COMPILER_PB_ASSERT_IDENTIFIER, IGNORE);
- optionNames.add(COMPILER_PB_ASSERT_IDENTIFIER);
-
- preferences.setDefault(COMPILER_PB_STATIC_ACCESS_RECEIVER, WARNING);
- optionNames.add(COMPILER_PB_STATIC_ACCESS_RECEIVER);
-
- preferences.setDefault(COMPILER_PB_NO_EFFECT_ASSIGNMENT, WARNING);
- optionNames.add(COMPILER_PB_NO_EFFECT_ASSIGNMENT);
-
- preferences.setDefault(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD, WARNING);
- optionNames.add(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD);
-
- preferences.setDefault(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION, WARNING);
- optionNames.add(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION);
-
- preferences.setDefault(COMPILER_TASK_TAGS, DEFAULT_TASK_TAG); //$NON-NLS-1$
- optionNames.add(COMPILER_TASK_TAGS);
-
- preferences.setDefault(COMPILER_TASK_PRIORITIES, DEFAULT_TASK_PRIORITY); //$NON-NLS-1$
- optionNames.add(COMPILER_TASK_PRIORITIES);
-
- preferences.setDefault(COMPILER_SOURCE, VERSION_1_3);
- optionNames.add(COMPILER_SOURCE);
-
- preferences.setDefault(COMPILER_COMPLIANCE, VERSION_1_3);
- optionNames.add(COMPILER_COMPLIANCE);
-
- preferences.setDefault(COMPILER_PB_MAX_PER_UNIT, "100"); //$NON-NLS-1$
- optionNames.add(COMPILER_PB_MAX_PER_UNIT);
-
- // Builder settings
- preferences.setDefault(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, ""); //$NON-NLS-1$
- optionNames.add(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER);
-
- preferences.setDefault(CORE_JAVA_BUILD_INVALID_CLASSPATH, ABORT);
- optionNames.add(CORE_JAVA_BUILD_INVALID_CLASSPATH);
-
- preferences.setDefault(CORE_JAVA_BUILD_DUPLICATE_RESOURCE, WARNING);
- optionNames.add(CORE_JAVA_BUILD_DUPLICATE_RESOURCE);
-
- preferences.setDefault(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, CLEAN);
- optionNames.add(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER);
-
- // JavaCore settings
- preferences.setDefault(CORE_JAVA_BUILD_ORDER, IGNORE);
- optionNames.add(CORE_JAVA_BUILD_ORDER);
-
- preferences.setDefault(CORE_CIRCULAR_CLASSPATH, ERROR);
- optionNames.add(CORE_CIRCULAR_CLASSPATH);
-
- preferences.setDefault(CORE_INCOMPLETE_CLASSPATH, ERROR);
- optionNames.add(CORE_INCOMPLETE_CLASSPATH);
-
- preferences.setDefault(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS, ENABLED);
- optionNames.add(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS);
-
- preferences.setDefault(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS, ENABLED);
- optionNames.add(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS);
-
- // encoding setting comes from resource plug-in
- optionNames.add(CORE_ENCODING);
-
- // Formatter settings
- preferences.setDefault(FORMATTER_NEWLINE_OPENING_BRACE, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_OPENING_BRACE);
-
- preferences.setDefault(FORMATTER_NEWLINE_CONTROL, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_CONTROL);
-
- preferences.setDefault(FORMATTER_CLEAR_BLANK_LINES, PRESERVE_ONE);
- optionNames.add(FORMATTER_CLEAR_BLANK_LINES);
-
- preferences.setDefault(FORMATTER_NEWLINE_ELSE_IF, DO_NOT_INSERT);
- optionNames.add(FORMATTER_NEWLINE_ELSE_IF);
-
- preferences.setDefault(FORMATTER_NEWLINE_EMPTY_BLOCK, INSERT);
- optionNames.add(FORMATTER_NEWLINE_EMPTY_BLOCK);
-
- preferences.setDefault(FORMATTER_LINE_SPLIT, "80"); //$NON-NLS-1$
- optionNames.add(FORMATTER_LINE_SPLIT);
-
- preferences.setDefault(FORMATTER_COMPACT_ASSIGNMENT, NORMAL);
- optionNames.add(FORMATTER_COMPACT_ASSIGNMENT);
-
- preferences.setDefault(FORMATTER_TAB_CHAR, TAB);
- optionNames.add(FORMATTER_TAB_CHAR);
-
- preferences.setDefault(FORMATTER_TAB_SIZE, "4"); //$NON-NLS-1$
- optionNames.add(FORMATTER_TAB_SIZE);
-
- preferences.setDefault(FORMATTER_SPACE_CASTEXPRESSION, INSERT); //$NON-NLS-1$
- optionNames.add(FORMATTER_SPACE_CASTEXPRESSION);
-
- // CodeAssist settings
- preferences.setDefault(CODEASSIST_VISIBILITY_CHECK, DISABLED); //$NON-NLS-1$
- optionNames.add(CODEASSIST_VISIBILITY_CHECK);
-
- preferences.setDefault(CODEASSIST_IMPLICIT_QUALIFICATION, DISABLED); //$NON-NLS-1$
- optionNames.add(CODEASSIST_IMPLICIT_QUALIFICATION);
-
- preferences.setDefault(CODEASSIST_FIELD_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_FIELD_PREFIXES);
-
- preferences.setDefault(CODEASSIST_STATIC_FIELD_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_STATIC_FIELD_PREFIXES);
-
- preferences.setDefault(CODEASSIST_LOCAL_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_LOCAL_PREFIXES);
-
- preferences.setDefault(CODEASSIST_ARGUMENT_PREFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_ARGUMENT_PREFIXES);
-
- preferences.setDefault(CODEASSIST_FIELD_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_FIELD_SUFFIXES);
-
- preferences.setDefault(CODEASSIST_STATIC_FIELD_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_STATIC_FIELD_SUFFIXES);
-
- preferences.setDefault(CODEASSIST_LOCAL_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_LOCAL_SUFFIXES);
-
- preferences.setDefault(CODEASSIST_ARGUMENT_SUFFIXES, ""); //$NON-NLS-1$
- optionNames.add(CODEASSIST_ARGUMENT_SUFFIXES);
-}
-
-/**
- * Returns whether the given marker references the given Java element.
- * Used for markers, which denote a Java element rather than a resource.
- *
- * @param element the element
- * @param marker the marker
- * @return <code>true</code> if the marker references the element, false otherwise
- * @exception CoreException if the <code>IMarker.getAttribute</code> on the marker fails
- */
-public static boolean isReferencedBy(IJavaElement element, IMarker marker) throws CoreException {
-
- // only match units or classfiles
- if (element instanceof IMember){
- IMember member = (IMember) element;
- if (member.isBinary()){
- element = null; //member.getClassFile();
- } else {
- element = member.getCompilationUnit();
- }
- }
- if (element == null) return false;
- if (marker == null) return false;
-
- String markerHandleId = (String)marker.getAttribute(ATT_HANDLE_ID);
- if (markerHandleId == null) return false;
-
- IJavaElement markerElement = PHPCore.create(markerHandleId);
-// while (true){
- if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
-
- // cycle through enclosing types in case marker is associated with a classfile (15568)
-// if (markerElement instanceof IClassFile){
-// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
-// if (enclosingType != null){
-// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
-// continue;
-// }
-// }
-// break;
-// }
- return false;
-}
-
-/**
- * Returns whether the given marker delta references the given Java element.
- * Used for markers deltas, which denote a Java element rather than a resource.
- *
- * @param element the element
- * @param markerDelta the marker delta
- * @return <code>true</code> if the marker delta references the element
- * @exception CoreException if the <code>IMarkerDelta.getAttribute</code> on the marker delta fails
- */
-public static boolean isReferencedBy(IJavaElement element, IMarkerDelta markerDelta) throws CoreException {
-
- // only match units or classfiles
- if (element instanceof IMember){
- IMember member = (IMember) element;
- if (member.isBinary()){
- element = null; //member.getClassFile();
- } else {
- element = member.getCompilationUnit();
- }
- }
- if (element == null) return false;
- if (markerDelta == null) return false;
-
- String markerDeltarHandleId = (String)markerDelta.getAttribute(ATT_HANDLE_ID);
- if (markerDeltarHandleId == null) return false;
-
- IJavaElement markerElement = PHPCore.create(markerDeltarHandleId);
-// while (true){
- if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
-
- // cycle through enclosing types in case marker is associated with a classfile (15568)
-// if (markerElement instanceof IClassFile){
-// IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
-// if (enclosingType != null){
-// markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
-// continue;
-// }
-// }
-// break;
-// }
- return false;
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
- * for the given path. The path of the container will be used during resolution so as to map this
- * container entry to a set of other classpath entries the container is acting for.
- * <p>
- * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
- * which can be interpreted differently for each Java project where it is used.
- * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
- * and updated with <code>JavaCore.classpathContainerChanged</code>
- * <p>
- * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
- * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A container path must be formed of at least one segment, where: <ul>
- * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
- * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
- * <li> the remaining segments will be passed onto the initializer, and can be used as additional
- * hints during the initialization phase. </li>
- * </ul>
- * <p>
- * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
- *
- * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
- *
- * <extension
- * point="org.eclipse.jdt.core.classpathContainerInitializer">
- * <containerInitializer
- * id="MyProvidedJDK"
- * class="com.example.MyInitializer"/>
- * <p>
- * Note that this operation does not attempt to validate classpath containers
- * or access the resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newContainerEntry(-,false)</code>.
- * <p>
- * @param containerPath the path identifying the container, it must be formed of two
- * segments
- * @return a new container classpath entry
- *
- * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
- * @see JavaCore#newContainerEntry(IPath, boolean)
- * @since 2.0
- */
-public static IClasspathEntry newContainerEntry(IPath containerPath) {
-
- return newContainerEntry(containerPath, false);
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_CONTAINER</code>
- * for the given path. The path of the container will be used during resolution so as to map this
- * container entry to a set of other classpath entries the container is acting for.
- * <p>
- * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
- * which can be interpreted differently for each Java project where it is used.
- * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
- * and updated with <code>JavaCore.classpathContainerChanged</code>
- * <p>
- * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
- * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * A container path must be formed of at least one segment, where: <ul>
- * <li> the first segment is a unique ID identifying the target container, there must be a container initializer registered
- * onto this ID through the extension point "org.eclipse.jdt.core.classpathContainerInitializer". </li>
- * <li> the remaining segments will be passed onto the initializer, and can be used as additional
- * hints during the initialization phase. </li>
- * </ul>
- * <p>
- * Example of an ClasspathContainerInitializer for a classpath container denoting a default JDK container:
- *
- * containerEntry = JavaCore.newContainerEntry(new Path("MyProvidedJDK/default"));
- *
- * <extension
- * point="org.eclipse.jdt.core.classpathContainerInitializer">
- * <containerInitializer
- * id="MyProvidedJDK"
- * class="com.example.MyInitializer"/>
- * <p>
- * Note that this operation does not attempt to validate classpath containers
- * or access the resources at the given paths.
- * <p>
- * @param containerPath the path identifying the container, it must be formed of at least
- * one segment (ID+hints)
- * @param isExported a boolean indicating whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new container classpath entry
- *
- * @see JavaCore#getClasspathContainer(IPath, IJavaProject)
- * @see JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
- * @see JavaCore#newContainerEntry(IPath, boolean)
- * @since 2.0
- */
-public static IClasspathEntry newContainerEntry(IPath containerPath, boolean isExported) {
-
- if (containerPath == null || containerPath.segmentCount() < 1) {
- Assert.isTrue(
- false,
- "Illegal classpath container path: \'" + containerPath.makeRelative().toString() + "\', must have at least one segment (containerID+hints)"); //$NON-NLS-1$//$NON-NLS-2$
- }
- return new ClasspathEntry(
- IPackageFragmentRoot.K_SOURCE,
- IClasspathEntry.CPE_CONTAINER,
- containerPath,
- ClasspathEntry.NO_EXCLUSION_PATTERNS,
- null, // source attachment
- null, // source attachment root
- null, // specific output folder
- isExported);
-}
-
-/**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_LIBRARY</code> for the
- * JAR or folder identified by the given absolute path. This specifies that all package fragments
- * within the root will have children of type <code>IClassFile</code>.
- * <p>
- * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
- * The target JAR or folder can either be defined internally to the workspace (absolute path relative
- * to the workspace root) or externally to the workspace (absolute path in the file system).
- * <p>
- * e.g. Here are some examples of binary path usage<ul>
- * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
- * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
- * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
- * </ul>
- * Note that this operation does not attempt to validate or access the
- * resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newLibraryEntry(-,-,-,false)</code>.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
- * or <code>null</code> if none
- * @param sourceAttachmentRootPath the location of the root within the source archive or folder
- * or <code>null</code> if this location should be automatically detected.
- * @return a new library classpath entry
- *
- * @see #newLibraryEntry(IPath, IPath, IPath, boolean)
- */
-//public static IClasspathEntry newLibraryEntry(
-// IPath path,
-// IPath sourceAttachmentPath,
-// IPath sourceAttachmentRootPath) {
-//
-// return newLibraryEntry(path, sourceAttachmentPath, sourceAttachmentRootPath, false);
-//}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_LIBRARY</code> for the JAR or folder
- * identified by the given absolute path. This specifies that all package fragments within the root
- * will have children of type <code>IClassFile</code>.
- * <p>
- * A library entry is used to denote a prerequisite JAR or root folder containing binaries.
- * The target JAR or folder can either be defined internally to the workspace (absolute path relative
- * to the workspace root) or externally to the workspace (absolute path in the file system).
- * <p>
- * e.g. Here are some examples of binary path usage<ul>
- * <li><code> "c:/jdk1.2.2/jre/lib/rt.jar" </code> - reference to an external JAR</li>
- * <li><code> "/Project/someLib.jar" </code> - reference to an internal JAR </li>
- * <li><code> "c:/classes/" </code> - reference to an external binary folder</li>
- * </ul>
- * Note that this operation does not attempt to validate or access the
- * resources at the given paths.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
- * or <code>null</code> if none
- * @param sourceAttachmentRootPath the location of the root within the source archive or folder
- * or <code>null</code> if this location should be automatically detected.
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new library classpath entry
- * @since 2.0
- */
-//public static IClasspathEntry newLibraryEntry(
-// IPath path,
-// IPath sourceAttachmentPath,
-// IPath sourceAttachmentRootPath,
-// boolean isExported) {
-//
-// if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
-//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_BINARY,
-// IClasspathEntry.CPE_LIBRARY,
-// JavaProject.canonicalizedPath(path),
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// sourceAttachmentPath,
-// sourceAttachmentRootPath,
-// null, // specific output folder
-// isExported);
-//}
-
-/**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_PROJECT</code>
- * for the project identified by the given absolute path.
- * <p>
- * A project entry is used to denote a prerequisite project on a classpath.
- * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
- * contributes all its package fragment roots) or as binaries (when building, it contributes its
- * whole output location).
- * <p>
- * A project reference allows to indirect through another project, independently from its internal layout.
- * <p>
- * The prerequisite project is referred to using an absolute path relative to the workspace root.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newProjectEntry(_,false)</code>.
- * <p>
- *
- * @param path the absolute path of the binary archive
- * @return a new project classpath entry
- *
- * @see JavaCore#newProjectEntry(IPath, boolean)
- */
-public static IClasspathEntry newProjectEntry(IPath path) {
- return newProjectEntry(path, false);
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_PROJECT</code>
- * for the project identified by the given absolute path.
- * <p>
- * A project entry is used to denote a prerequisite project on a classpath.
- * The referenced project will be contributed as a whole, either as sources (in the Java Model, it
- * contributes all its package fragment roots) or as binaries (when building, it contributes its
- * whole output location).
- * <p>
- * A project reference allows to indirect through another project, independently from its internal layout.
- * <p>
- * The prerequisite project is referred to using an absolute path relative to the workspace root.
- * <p>
- *
- * @param path the absolute path of the prerequisite project
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new project classpath entry
- * @since 2.0
- */
-public static IClasspathEntry newProjectEntry(IPath path, boolean isExported) {
-
- if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
-
- return new ClasspathEntry(
- IPackageFragmentRoot.K_SOURCE,
- IClasspathEntry.CPE_PROJECT,
- path,
- ClasspathEntry.NO_EXCLUSION_PATTERNS,
- null, // source attachment
- null, // source attachment root
- null, // specific output folder
- isExported);
-}
-
-/**
- * Returns a new empty region.
- *
- * @return a new empty region
- */
-public static IRegion newRegion() {
- return new Region();
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path. This specifies that all package fragments
- * within the root will have children of type <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path. To selectively exclude
- * some of these source files, use the factory method
- * <code>JavaCore.newSourceEntry(IPath,IPath[])</code> instead.
- * </p>
- * <p>
- * Note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @return a new source classpath entry with not exclusion patterns
- *
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath,org.eclipse.core.runtime.IPath[])
- */
-public static IClasspathEntry newSourceEntry(IPath path) {
-
- return newSourceEntry(path, ClasspathEntry.NO_EXCLUSION_PATTERNS, null /*output location*/);
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path but excluding all source files with paths
- * matching any of the given patterns. This specifies that all package
- * fragments within the root will have children of type
- * <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path except for those matched
- * by one (or more) of the given exclusion patterns. Each exclusion pattern
- * is represented by a relative path, which is interpreted as relative to
- * the source folder. For example, if the source folder path is
- * <code>/Project/src</code> and the exclusion pattern is
- * <code>com/xyz/tests/**</code>, then source files
- * like <code>/Project/src/com/xyz/Foo.java</code>
- * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
- * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
- * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
- * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
- * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
- * for the full description of the syntax and semantics of exclusion
- * patterns.
- * </p>
- * If the empty list of exclusion patterns is specified, the source folder
- * will automatically include all resources located inside the source
- * folder. In that case, the result is entirely equivalent to using the
- * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
- * </p>
- * <p>
- * Note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @param exclusionPatterns the possibly empty list of exclusion patterns
- * represented as relative paths
- * @return a new source classpath entry with the given exclusion patterns
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
- * @see IClasspathEntry#getExclusionPatterns
- *
- * @since 2.1
- */
-public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns) {
-
- return newSourceEntry(path, exclusionPatterns, null /*output location*/);
-}
-
-/**
- * Creates and returns a new classpath entry of kind <code>CPE_SOURCE</code>
- * for the project's source folder identified by the given absolute
- * workspace-relative path but excluding all source files with paths
- * matching any of the given patterns, and associated with a specific output location
- * (that is, ".class" files are not going to the project default output location).
- * All package fragments within the root will have children of type
- * <code>ICompilationUnit</code>.
- * <p>
- * The source folder is referred to using an absolute path relative to the
- * workspace root, e.g. <code>/Project/src</code>. A project's source
- * folders are located with that project. That is, a source classpath
- * entry specifying the path <code>/P1/src</code> is only usable for
- * project <code>P1</code>.
- * </p>
- * <p>
- * The source classpath entry created by this method includes all source
- * files below the given workspace-relative path except for those matched
- * by one (or more) of the given exclusion patterns. Each exclusion pattern
- * is represented by a relative path, which is interpreted as relative to
- * the source folder. For example, if the source folder path is
- * <code>/Project/src</code> and the exclusion pattern is
- * <code>com/xyz/tests/**</code>, then source files
- * like <code>/Project/src/com/xyz/Foo.java</code>
- * and <code>/Project/src/com/xyz/utils/Bar.java</code> would be included,
- * whereas <code>/Project/src/com/xyz/tests/T1.java</code>
- * and <code>/Project/src/com/xyz/tests/quick/T2.java</code> would be
- * excluded. Exclusion patterns can contain can contain '**', '*' or '?'
- * wildcards; see <code>IClasspathEntry.getExclusionPatterns</code>
- * for the full description of the syntax and semantics of exclusion
- * patterns.
- * </p>
- * If the empty list of exclusion patterns is specified, the source folder
- * will automatically include all resources located inside the source
- * folder. In that case, the result is entirely equivalent to using the
- * factory method <code>JavaCore.newSourceEntry(IPath)</code>.
- * </p>
- * <p>
- * Additionally, a source entry can be associated with a specific output location.
- * By doing so, the Java builder will ensure that the generated ".class" files will
- * be issued inside this output location, as opposed to be generated into the
- * project default output location (when output location is <code>null</code>).
- * Note that multiple source entries may target the same output location.
- * The output location is referred to using an absolute path relative to the
- * workspace root, e.g. <code>"/Project/bin"</code>, it must be located inside
- * the same project as the source folder.
- * </p>
- * <p>
- * Also note that all sources/binaries inside a project are contributed as a whole through
- * a project entry (see <code>JavaCore.newProjectEntry</code>). Particular
- * source entries cannot be selectively exported.
- * </p>
- *
- * @param path the absolute workspace-relative path of a source folder
- * @param exclusionPatterns the possibly empty list of exclusion patterns
- * represented as relative paths
- * @param outputLocation the specific output location for this source entry (<code>null</code> if using project default ouput location)
- * @return a new source classpath entry with the given exclusion patterns
- * @see #newSourceEntry(org.eclipse.core.runtime.IPath)
- * @see IClasspathEntry#getExclusionPatterns
- * @see IClasspathEntry#getOutputLocation()
- *
- * @since 2.1
- */
-public static IClasspathEntry newSourceEntry(IPath path, IPath[] exclusionPatterns, IPath specificOutputLocation) {
-
- if (!path.isAbsolute()) Assert.isTrue(false, "Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
- if (exclusionPatterns == null) Assert.isTrue(false, "Exclusion pattern set cannot be null"); //$NON-NLS-1$
-
- return new ClasspathEntry(
- IPackageFragmentRoot.K_SOURCE,
- IClasspathEntry.CPE_SOURCE,
- path,
- exclusionPatterns,
- null, // source attachment
- null, // source attachment root
- specificOutputLocation, // custom output location
- false);
-}
-
-/**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
- * for the given path. The first segment of the path is the name of a classpath variable.
- * The trailing segments of the path will be appended to resolved variable path.
- * <p>
- * A variable entry allows to express indirect references on a classpath to other projects or libraries,
- * depending on what the classpath variable is referring.
- * <p>
- * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
- * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
- * <p>
- * e.g. Here are some examples of variable path usage<ul>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
- * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
- * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
- * </ul>
- * Note that this operation does not attempt to validate classpath variables
- * or access the resources at the given paths.
- * <p>
- * The resulting entry is not exported to dependent projects. This method is equivalent to
- * <code>newVariableEntry(-,-,-,false)</code>.
- * <p>
- *
- * @param variablePath the path of the binary archive; first segment is the
- * name of a classpath variable
- * @param variableSourceAttachmentPath the path of the corresponding source archive,
- * or <code>null</code> if none; if present, the first segment is the
- * name of a classpath variable (not necessarily the same variable
- * as the one that begins <code>variablePath</code>)
- * @param sourceAttachmentRootPath the location of the root within the source archive
- * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
- * @return a new library classpath entry
- *
- * @see JavaCore#newVariableEntry(IPath, IPath, IPath, boolean)
- */
-//public static IClasspathEntry newVariableEntry(
-// IPath variablePath,
-// IPath variableSourceAttachmentPath,
-// IPath sourceAttachmentRootPath) {
-//
-// return newVariableEntry(variablePath, variableSourceAttachmentPath, sourceAttachmentRootPath, false);
-//}
-
-/**
- * Creates and returns a new non-exported classpath entry of kind <code>CPE_VARIABLE</code>
- * for the given path. The first segment of the path is the name of a classpath variable.
- * The trailing segments of the path will be appended to resolved variable path.
- * <p>
- * A variable entry allows to express indirect references on a classpath to other projects or libraries,
- * depending on what the classpath variable is referring.
- * <p>
- * It is possible to register an automatic initializer (<code>ClasspathVariableInitializer</code>),
- * which will be invoked through the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
- * After resolution, a classpath variable entry may either correspond to a project or a library entry. </li>
- * <p>
- * e.g. Here are some examples of variable path usage<ul>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the library "c:\jars\jdtcore.jar"</li>
- * <li> "JDTCORE" where variable <code>JDTCORE</code> is
- * bound to "/Project_JDTCORE". The resolved classpath entry is denoting the project "/Project_JDTCORE"</li>
- * <li> "PLUGINS/com.example/example.jar" where variable <code>PLUGINS</code>
- * is bound to "c:/eclipse/plugins". The resolved classpath entry is denoting the library "c:/eclipse/plugins/com.example/example.jar"</li>
- * </ul>
- * Note that this operation does not attempt to validate classpath variables
- * or access the resources at the given paths.
- * <p>
- *
- * @param variablePath the path of the binary archive; first segment is the
- * name of a classpath variable
- * @param variableSourceAttachmentPath the path of the corresponding source archive,
- * or <code>null</code> if none; if present, the first segment is the
- * name of a classpath variable (not necessarily the same variable
- * as the one that begins <code>variablePath</code>)
- * @param sourceAttachmentRootPath the location of the root within the source archive
- * or <code>null</code> if <code>archivePath</code> is also <code>null</code>
- * @param isExported indicates whether this entry is contributed to dependent
- * projects in addition to the output location
- * @return a new variable classpath entry
- * @since 2.0
- */
-//public static IClasspathEntry newVariableEntry(
-// IPath variablePath,
-// IPath variableSourceAttachmentPath,
-// IPath variableSourceAttachmentRootPath,
-// boolean isExported) {
-//
-// if (variablePath == null || variablePath.segmentCount() < 1) {
-// Assert.isTrue(
-// false,
-// "Illegal classpath variable path: \'" + variablePath.makeRelative().toString() + "\', must have at least one segment"); //$NON-NLS-1$//$NON-NLS-2$
-// }
-//
-// return new ClasspathEntry(
-// IPackageFragmentRoot.K_SOURCE,
-// IClasspathEntry.CPE_VARIABLE,
-// variablePath,
-// ClasspathEntry.NO_EXCLUSION_PATTERNS,
-// variableSourceAttachmentPath, // source attachment
-// variableSourceAttachmentRootPath, // source attachment root
-// null, // specific output folder
-// isExported);
-//}
-
-/**
- * Removed the given classpath variable. Does nothing if no value was
- * set for this classpath variable.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @see #setClasspathVariable
- *
- * @deprecated - use version with extra IProgressMonitor
- */
-//public static void removeClasspathVariable(String variableName) {
-// removeClasspathVariable(variableName, null);
-//}
-
-/**
- * Removed the given classpath variable. Does nothing if no value was
- * set for this classpath variable.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @param monitor the progress monitor to report progress
- * @see #setClasspathVariable
- */
-//public static void removeClasspathVariable(
-// String variableName,
-// IProgressMonitor monitor) {
-//
-// try {
-// updateVariableValues(new String[]{ variableName}, new IPath[]{ null }, monitor);
-// } catch (JavaModelException e) {
-// }
-//}
-
-/**
- * Removes the given element changed listener.
- * Has no affect if an identical listener is not registered.
- *
- * @param listener the listener
- */
-public static void removeElementChangedListener(IElementChangedListener listener) {
- JavaModelManager.getJavaModelManager().removeElementChangedListener(listener);
-}
-
-/**
- * Bind a container reference path to some actual containers (<code>IClasspathContainer</code>).
- * This API must be invoked whenever changes in container need to be reflected onto the JavaModel.
- * Containers can have distinct values in different projects, therefore this API considers a
- * set of projects with their respective containers.
- * <p>
- * <code>containerPath</code> is the path under which these values can be referenced through
- * container classpath entries (<code>IClasspathEntry#CPE_CONTAINER</code>). A container path
- * is formed by a first ID segment followed with extra segments, which can be used as additional hints
- * for the resolution. The container ID is used to identify a <code>ClasspathContainerInitializer</code>
- * registered on the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- * <p>
- * There is no assumption that each individual container value passed in argument
- * (<code>respectiveContainers</code>) must answer the exact same path when requested
- * <code>IClasspathContainer#getPath</code>.
- * Indeed, the containerPath is just an indication for resolving it to an actual container object. It can be
- * delegated to a <code>ClasspathContainerInitializer</code>, which can be activated through the extension
- * point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * In reaction to changing container values, the JavaModel will be updated to reflect the new
- * state of the updated container.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath container values are persisted locally to the workspace, but
- * are not preserved from a session to another. It is thus highly recommended to register a
- * <code>ClasspathContainerInitializer</code> for each referenced container
- * (through the extension point "org.eclipse.jdt.core.ClasspathContainerInitializer").
- * <p>
- * Note: setting a container to <code>null</code> will cause it to be lazily resolved again whenever
- * its value is required. In particular, this will cause a registered initializer to be invoked
- * again.
- * <p>
- * @param containerPath - the name of the container reference, which is being updated
- * @param affectedProjects - the set of projects for which this container is being bound
- * @param respectiveContainers - the set of respective containers for the affected projects
- * @param monitor a monitor to report progress
- *
- * @see ClasspathContainerInitializer
- * @see #getClasspathContainer(IPath, IJavaProject)
- * @see IClasspathContainer
- * @since 2.0
- */
-//public static void setClasspathContainer(final IPath containerPath, IJavaProject[] affectedProjects, IClasspathContainer[] respectiveContainers, IProgressMonitor monitor) throws JavaModelException {
-//
-// if (affectedProjects.length != respectiveContainers.length) Assert.isTrue(false, "Projects and containers collections should have the same size"); //$NON-NLS-1$
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - setting container: ["+containerPath+"] for projects: {" //$NON-NLS-1$ //$NON-NLS-2$
-// + (Util.toString(affectedProjects,
-// new Util.Displayable(){
-// public String displayString(Object o) { return ((IJavaProject) o).getElementName(); }
-// }))
-// + "} with values: " //$NON-NLS-1$
-// + (Util.toString(respectiveContainers,
-// new Util.Displayable(){
-// public String displayString(Object o) { return ((IClasspathContainer) o).getDescription(); }
-// }))
-// );
-// }
-//
-// final int projectLength = affectedProjects.length;
-// final IJavaProject[] modifiedProjects;
-// System.arraycopy(affectedProjects, 0, modifiedProjects = new IJavaProject[projectLength], 0, projectLength);
-// final IClasspathEntry[][] oldResolvedPaths = new IClasspathEntry[projectLength][];
-//
-// // filter out unmodified project containers
-// int remaining = 0;
-// for (int i = 0; i < projectLength; i++){
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// IJavaProject affectedProject = affectedProjects[i];
-// IClasspathContainer newContainer = respectiveContainers[i];
-// if (newContainer == null) newContainer = JavaModelManager.ContainerInitializationInProgress; // 30920 - prevent infinite loop
-// boolean found = false;
-// if (JavaProject.hasJavaNature(affectedProject.getProject())){
-// IClasspathEntry[] rawClasspath = affectedProject.getRawClasspath();
-// for (int j = 0, cpLength = rawClasspath.length; j <cpLength; j++) {
-// IClasspathEntry entry = rawClasspath[j];
-// if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getPath().equals(containerPath)){
-// found = true;
-// break;
-// }
-// }
-// }
-// if (!found){
-// modifiedProjects[i] = null; // filter out this project - does not reference the container path, or isnt't yet Java project
-// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
-// continue;
-// }
-// IClasspathContainer oldContainer = JavaModelManager.containerGet(affectedProject, containerPath);
-// if (oldContainer == JavaModelManager.ContainerInitializationInProgress) {
-// Map previousContainerValues = (Map)JavaModelManager.PreviousSessionContainers.get(affectedProject);
-// if (previousContainerValues != null){
-// IClasspathContainer previousContainer = (IClasspathContainer)previousContainerValues.get(containerPath);
-// if (previousContainer != null) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer INIT - reentering access to project container: ["+affectedProject.getElementName()+"] " + containerPath + " during its initialization, will see previous value: "+ previousContainer.getDescription()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-// }
-// JavaModelManager.containerPut(affectedProject, containerPath, previousContainer);
-// }
-// oldContainer = null; //33695 - cannot filter out restored container, must update affected project to reset cached CP
-// } else {
-// oldContainer = null;
-// }
-// }
-// if (oldContainer != null && oldContainer.equals(respectiveContainers[i])){// TODO: could improve to only compare entries
-// modifiedProjects[i] = null; // filter out this project - container did not change
-// continue;
-// }
-// remaining++;
-// oldResolvedPaths[i] = affectedProject.getResolvedClasspath(true);
-// JavaModelManager.containerPut(affectedProject, containerPath, newContainer);
-// }
-//
-// if (remaining == 0) return;
-//
-// // trigger model refresh
-// try {
-// JavaCore.run(new IWorkspaceRunnable() {
-// public void run(IProgressMonitor monitor) throws CoreException {
-// for(int i = 0; i < projectLength; i++){
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// JavaProject affectedProject = (JavaProject)modifiedProjects[i];
-// if (affectedProject == null) continue; // was filtered out
-//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - updating affected project: ["+affectedProject.getElementName()+"] due to setting container: " + containerPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-//
-// // force a refresh of the affected project (will compute deltas)
-// affectedProject.setRawClasspath(
-// affectedProject.getRawClasspath(),
-// SetClasspathOperation.ReuseOutputLocation,
-// monitor,
-// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can save resources
-// oldResolvedPaths[i],
-// false, // updating - no validation
-// false); // updating - no need to save
-// }
-// }
-// },
-// monitor);
-// } catch(CoreException e) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPContainer SET - FAILED DUE TO EXCEPTION: "+containerPath); //$NON-NLS-1$
-// e.printStackTrace();
-// }
-// if (e instanceof JavaModelException) {
-// throw (JavaModelException)e;
-// } else {
-// throw new JavaModelException(e);
-// }
-// } finally {
-// for (int i = 0; i < projectLength; i++) {
-// if (respectiveContainers[i] == null) {
-// JavaModelManager.containerPut(affectedProjects[i], containerPath, null); // reset init in progress marker
-// }
-// }
-// }
-//
-//}
-
-/**
- * Sets the value of the given classpath variable.
- * The path must have at least one segment.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- *
- * @param variableName the name of the classpath variable
- * @param path the path
- * @see #getClasspathVariable
- *
- * @deprecated - use API with IProgressMonitor
- */
-//public static void setClasspathVariable(String variableName, IPath path)
-// throws JavaModelException {
-//
-// setClasspathVariable(variableName, path, null);
-//}
-
-/**
- * Sets the value of the given classpath variable.
- * The path must not be null.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Updating a variable with the same value has no effect.
- *
- * @param variableName the name of the classpath variable
- * @param path the path
- * @param monitor a monitor to report progress
- * @see #getClasspathVariable
- */
-//public static void setClasspathVariable(
-// String variableName,
-// IPath path,
-// IProgressMonitor monitor)
-// throws JavaModelException {
-//
-// if (path == null) Assert.isTrue(false, "Variable path cannot be null"); //$NON-NLS-1$
-// setClasspathVariables(new String[]{variableName}, new IPath[]{ path }, monitor);
-//}
-
-/**
- * Sets the values of all the given classpath variables at once.
- * Null paths can be used to request corresponding variable removal.
- * <p>
- * This functionality cannot be used while the resource tree is locked.
- * <p>
- * Classpath variable values are persisted locally to the workspace, and
- * are preserved from session to session.
- * <p>
- * Updating a variable with the same value has no effect.
- *
- * @param variableNames an array of names for the updated classpath variables
- * @param paths an array of path updates for the modified classpath variables (null
- * meaning that the corresponding value will be removed
- * @param monitor a monitor to report progress
- * @see #getClasspathVariable
- * @since 2.0
- */
-//public static void setClasspathVariables(
-// String[] variableNames,
-// IPath[] paths,
-// IProgressMonitor monitor)
-// throws JavaModelException {
-//
-// if (variableNames.length != paths.length) Assert.isTrue(false, "Variable names and paths collections should have the same size"); //$NON-NLS-1$
-// //TODO: should check that null cannot be used as variable paths
-// updateVariableValues(variableNames, paths, monitor);
-//}
-
-/* (non-Javadoc)
- * Method declared on IExecutableExtension.
- * Record any necessary initialization data from the plugin.
- */
-public void setInitializationData(
- IConfigurationElement cfig,
- String propertyName,
- Object data)
- throws CoreException {
-}
-
-/**
- * Sets the current table of options. All and only the options explicitly included in the given table
- * are remembered; all previous option settings are forgotten, including ones not explicitly
- * mentioned.
- * <p>
- * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
- * </p>
- *
- * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
- * or <code>null</code> to reset all options to their default values
- * @see JavaCore#getDefaultOptions
- */
-public static void setOptions(Hashtable newOptions) {
-
- // see #initializeDefaultPluginPreferences() for changing default settings
- Preferences preferences = getPlugin().getPluginPreferences();
-
- if (newOptions == null){
- newOptions = PHPCore.getDefaultOptions();
- }
- Enumeration keys = newOptions.keys();
- while (keys.hasMoreElements()){
- String key = (String)keys.nextElement();
- if (!JavaModelManager.OptionNames.contains(key)) continue; // unrecognized option
- if (key.equals(CORE_ENCODING)) continue; // skipped, contributed by resource prefs
- String value = (String)newOptions.get(key);
- preferences.setValue(key, value);
- }
-
- // persist options
- getPlugin().savePluginPreferences();
-}
-
-/**
- * Shutdown the JavaCore plug-in.
- * <p>
- * De-registers the JavaModelManager as a resource changed listener and save participant.
- * <p>
- * @see org.eclipse.core.runtime.Plugin#shutdown()
- */
-public void shutdown() {
-
- //savePluginPreferences();
- getPlugin().savePluginPreferences();
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- workspace.removeResourceChangeListener(JavaModelManager.getJavaModelManager().deltaProcessor);
- workspace.removeSaveParticipant(PHPeclipsePlugin.getDefault());
-
- ((JavaModelManager) JavaModelManager.getJavaModelManager()).shutdown();
-}
-
-/**
- * Initiate the background indexing process.
- * This should be deferred after the plugin activation.
- */
-//private void startIndexing() {
-//
-// JavaModelManager.getJavaModelManager().getIndexManager().reset();
-//}
-
-/**
- * Startup of the JavaCore plug-in.
- * <p>
- * Registers the JavaModelManager as a resource changed listener and save participant.
- * Starts the background indexing, and restore saved classpath variable values.
- * <p>
- * @see org.eclipse.core.runtime.Plugin#startup()
- */
-public void startup() {
-
- JavaModelManager manager = JavaModelManager.getJavaModelManager();
- try {
- manager.configurePluginDebugOptions();
-
- // request state folder creation (workaround 19885)
- PHPCore.getPlugin().getStateLocation();
-
- // retrieve variable values
- PHPCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener());
-// TODO khartlage temp-del
-// manager.loadVariablesAndContainers();
-
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- workspace.addResourceChangeListener(
- manager.deltaProcessor,
- IResourceChangeEvent.PRE_AUTO_BUILD
- | IResourceChangeEvent.POST_AUTO_BUILD
- | IResourceChangeEvent.POST_CHANGE
- | IResourceChangeEvent.PRE_DELETE
- | IResourceChangeEvent.PRE_CLOSE);
-
-// startIndexing();
- workspace.addSaveParticipant(PHPeclipsePlugin.getDefault(), manager);
-
- } catch (CoreException e) {
- } catch (RuntimeException e) {
- manager.shutdown();
- throw e;
- }
-}
-
-
-/**
- * Internal updating of a variable values (null path meaning removal), allowing to change multiple variable values at once.
- */
-//private static void updateVariableValues(
-// String[] variableNames,
-// IPath[] variablePaths,
-// IProgressMonitor monitor) throws JavaModelException {
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - setting variables: {" + Util.toString(variableNames) //$NON-NLS-1$
-// + "} with values: " + Util.toString(variablePaths)); //$NON-NLS-1$
-// }
-//
-// int varLength = variableNames.length;
-//
-// // gather classpath information for updating
-// final HashMap affectedProjects = new HashMap(5);
-// JavaModelManager manager = JavaModelManager.getJavaModelManager();
-// IJavaModel model = manager.getJavaModel();
-//
-// // filter out unmodified variables
-// int discardCount = 0;
-// for (int i = 0; i < varLength; i++){
-// String variableName = variableNames[i];
-// IPath oldPath = (IPath)JavaModelManager.variableGet(variableName); // if reentering will provide previous session value
-// if (oldPath == JavaModelManager.VariableInitializationInProgress){
-// IPath previousPath = (IPath)JavaModelManager.PreviousSessionVariables.get(variableName);
-// if (previousPath != null){
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable INIT - reentering access to variable: " + variableName+ " during its initialization, will see previous value: "+ previousPath); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-// JavaModelManager.variablePut(variableName, previousPath); // replace value so reentering calls are seeing old value
-// }
-// oldPath = null; //33695 - cannot filter out restored variable, must update affected project to reset cached CP
-// }
-// if (oldPath != null && oldPath.equals(variablePaths[i])){
-// variableNames[i] = null;
-// discardCount++;
-// }
-// }
-// if (discardCount > 0){
-// if (discardCount == varLength) return;
-// int changedLength = varLength - discardCount;
-// String[] changedVariableNames = new String[changedLength];
-// IPath[] changedVariablePaths = new IPath[changedLength];
-// for (int i = 0, index = 0; i < varLength; i++){
-// if (variableNames[i] != null){
-// changedVariableNames[index] = variableNames[i];
-// changedVariablePaths[index] = variablePaths[i];
-// index++;
-// }
-// }
-// variableNames = changedVariableNames;
-// variablePaths = changedVariablePaths;
-// varLength = changedLength;
-// }
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// if (model != null) {
-// IJavaProject[] projects = model.getJavaProjects();
-// nextProject : for (int i = 0, projectLength = projects.length; i < projectLength; i++){
-// IJavaProject project = projects[i];
-//
-// // check to see if any of the modified variables is present on the classpath
-// IClasspathEntry[] classpath = project.getRawClasspath();
-// for (int j = 0, cpLength = classpath.length; j < cpLength; j++){
-//
-// IClasspathEntry entry = classpath[j];
-// for (int k = 0; k < varLength; k++){
-//
-// String variableName = variableNames[k];
-// if (entry.getEntryKind() == IClasspathEntry.CPE_VARIABLE){
-//
-// if (variableName.equals(entry.getPath().segment(0))){
-// affectedProjects.put(project, project.getResolvedClasspath(true));
-// continue nextProject;
-// }
-// IPath sourcePath, sourceRootPath;
-// if (((sourcePath = entry.getSourceAttachmentPath()) != null && variableName.equals(sourcePath.segment(0)))
-// || ((sourceRootPath = entry.getSourceAttachmentRootPath()) != null && variableName.equals(sourceRootPath.segment(0)))) {
-//
-// affectedProjects.put(project, project.getResolvedClasspath(true));
-// continue nextProject;
-// }
-// }
-// }
-// }
-// }
-// }
-// // update variables
-// for (int i = 0; i < varLength; i++){
-// JavaModelManager.variablePut(variableNames[i], variablePaths[i]);
-// }
-// final String[] dbgVariableNames = variableNames;
-//
-// // update affected project classpaths
-// if (!affectedProjects.isEmpty()) {
-// try {
-// JavaCore_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt_DeleteIt.run(
-// new IWorkspaceRunnable() {
-// public void run(IProgressMonitor monitor) throws CoreException {
-// // propagate classpath change
-// Iterator projectsToUpdate = affectedProjects.keySet().iterator();
-// while (projectsToUpdate.hasNext()) {
-//
-// if (monitor != null && monitor.isCanceled()) return;
-//
-// JavaProject project = (JavaProject) projectsToUpdate.next();
-//
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - updating affected project: ["+project.getElementName()+"] due to setting variables: "+ Util.toString(dbgVariableNames)); //$NON-NLS-1$ //$NON-NLS-2$
-// }
-//
-// project
-// .setRawClasspath(
-// project.getRawClasspath(),
-// SetClasspathOperation.ReuseOutputLocation,
-// null, // don't call beginTask on the monitor (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=3717)
-// !ResourcesPlugin.getWorkspace().isTreeLocked(), // can change resources
-// (IClasspathEntry[]) affectedProjects.get(project),
-// false, // updating - no validation
-// false); // updating - no need to save
-// }
-// }
-// },
-// monitor);
-// } catch (CoreException e) {
-// if (JavaModelManager.CP_RESOLVE_VERBOSE){
-// System.out.println("CPVariable SET - FAILED DUE TO EXCEPTION: "+Util.toString(dbgVariableNames)); //$NON-NLS-1$
-// e.printStackTrace();
-// }
-// if (e instanceof JavaModelException) {
-// throw (JavaModelException)e;
-// } else {
-// throw new JavaModelException(e);
-// }
-// }
-// }
-//}
-}
\ No newline at end of file
/**********************************************************************
-Copyright (c) 2000, 2002 IBM Corp. 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 implementation
- Klaus Hartlage - www.eclipseproject.de
-**********************************************************************/
+ Copyright (c) 2000, 2002 IBM Corp. 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 implementation
+ Klaus Hartlage - www.eclipseproject.de
+ **********************************************************************/
package net.sourceforge.phpeclipse;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.externaltools.internal.model.ColorManager;
import net.sourceforge.phpdt.externaltools.internal.model.ExternalToolsPlugin;
import net.sourceforge.phpdt.externaltools.internal.model.VariableContextManager;
+import net.sourceforge.phpdt.internal.core.JavaModelManager;
import net.sourceforge.phpdt.internal.ui.preferences.MembersOrderPreferenceCache;
import net.sourceforge.phpdt.internal.ui.preferences.TemplatePreferencePage;
import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaEditorTextHoverDescriptor;
import net.sourceforge.phpeclipse.resourcesview.PHPElement;
import net.sourceforge.phpeclipse.resourcesview.PHPElementAdapterFactory;
import net.sourceforge.phpeclipse.resourcesview.ResourceAdapterFactory;
-
import org.eclipse.core.boot.BootLoader;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
-
/**
* The main plugin class to be used in the desktop.
*/
-public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceConstants {
+public class PHPeclipsePlugin extends AbstractUIPlugin
+ implements
+ IPreferenceConstants {
/**
* The id of the PHP plugin (value <code>"net.sourceforge.phpeclipse"</code>).
*/
public static final String PLUGIN_ID = "net.sourceforge.phpeclipse"; //$NON-NLS-1$
-
- /**
- * id of builder - matches plugin.xml (concatenate pluginid.builderid)
+ /**
+ * id of builder - matches plugin.xml (concatenate pluginid.builderid)
*/
public static final String BUILDER_PARSER_ID = PLUGIN_ID + ".parserbuilder";
//public static final String BUILDER_INDEX_ID = PLUGIN_ID + ".indexbuilder";
-
- /** General debug flag*/
+ /** General debug flag */
public static final boolean DEBUG = false;
-
/**
* The maximum number of allowed proposals by category
*/
public final static int MAX_PROPOSALS = 200;
-
private static ExternalToolsPlugin externalTools;
-
/**
- * The Java virtual machine that we are running on.
- */
+ * The Java virtual machine that we are running on.
+ */
private static int jvm;
-
/** MRJ 2.0 */
private static final int MRJ_2_0 = 0;
-
/** MRJ 2.1 or later */
private static final int MRJ_2_1 = 1;
-
/** Java on Mac OS X 10.0 (MRJ 3.0) */
private static final int MRJ_3_0 = 3;
-
/** MRJ 3.1 */
private static final int MRJ_3_1 = 4;
-
/** JVM constant for any other platform */
private static final int OTHER = -1;
-
- // public static final String PHP_RESOURCES_VIEW_ID = PLUGIN_ID + ".resourcesview.ViewPHPResources"; //$NON-NLS-1$
- public static final String PHP_CODING_ACTION_SET_ID = PLUGIN_ID + ".ui.CodingActionSet"; //$NON-NLS-1$
+ // public static final String PHP_RESOURCES_VIEW_ID = PLUGIN_ID +
+ // ".resourcesview.ViewPHPResources"; //$NON-NLS-1$
+ public static final String PHP_CODING_ACTION_SET_ID = PLUGIN_ID
+ + ".ui.CodingActionSet"; //$NON-NLS-1$
public final static String PHP_NATURE_ID = PLUGIN_ID + ".phpnature";
-
public static final String PHPPARSER_ORIGINAL = "net.sourceforge.phpdt.internal.compiler.parser.Parser";
-
public static final String PHPPARSER_NEW = "test.PHPParser";
-
/** Change this if you want to switch PHP Parser. */
public static final String PHPPARSER = PHPPARSER_ORIGINAL;
-
//The shared instance.
private static PHPeclipsePlugin plugin;
-
- /** Windows 9x */
+ /** Windows 9x */
private static final int WINDOWS_9x = 6;
-
- /** Windows NT */
+ /** Windows NT */
private static final int WINDOWS_NT = 5;
-
private ImageDescriptorRegistry fImageDescriptorRegistry;
private HashMap fIndexManagerMap = new HashMap();
-
private IWorkingCopyManager fWorkingCopyManager;
private PHPDocumentProvider fCompilationUnitDocumentProvider;
private JavaTextTools fJavaTextTools;
private ProblemMarkerManager fProblemMarkerManager;
- private MembersOrderPreferenceCache fMembersOrderPreferenceCache;
-
+ private MembersOrderPreferenceCache fMembersOrderPreferenceCache;
private IFile fLastEditorFile = null;
-
- private JavaEditorTextHoverDescriptor[] fJavaEditorTextHoverDescriptors;
-
+ private JavaEditorTextHoverDescriptor[] fJavaEditorTextHoverDescriptors;
/**
* The constructor.
*/
setJVM();
externalTools = new ExternalToolsPlugin();
// try {
- // resourceBundle = ResourceBundle.getBundle("net.sourceforge.PHPeclipsePluginResources");
+ // resourceBundle =
+ // ResourceBundle.getBundle("net.sourceforge.PHPeclipsePluginResources");
// } catch (MissingResourceException x) {
// resourceBundle = null;
// }
}
- /**
- * Returns all Java editor text hovers contributed to the workbench.
- *
- * @return an array of JavaEditorTextHoverDescriptor
- * @since 2.1
- */
- public JavaEditorTextHoverDescriptor[] getJavaEditorTextHoverDescriptors() {
- if (fJavaEditorTextHoverDescriptors == null)
- fJavaEditorTextHoverDescriptors= JavaEditorTextHoverDescriptor.getContributedHovers();
- return fJavaEditorTextHoverDescriptors;
- }
-
- /**
- * Resets the Java editor text hovers contributed to the workbench.
- * <p>
- * This will force a rebuild of the descriptors the next time
- * a client asks for them.
- * </p>
- *
- * @return an array of JavaEditorTextHoverDescriptor
- * @since 2.1
- */
- public void resetJavaEditorTextHoverDescriptors() {
- fJavaEditorTextHoverDescriptors= null;
- }
- /**
- * Creates the PHP plugin standard groups in a context menu.
- */
- public static void createStandardGroups(IMenuManager menu) {
- if (!menu.isEmpty())
- return;
-
- menu.add(new Separator(IContextMenuConstants.GROUP_NEW));
- menu.add(new GroupMarker(IContextMenuConstants.GROUP_GOTO));
- menu.add(new Separator(IContextMenuConstants.GROUP_OPEN));
- menu.add(new GroupMarker(IContextMenuConstants.GROUP_SHOW));
- menu.add(new Separator(IContextMenuConstants.GROUP_REORGANIZE));
- menu.add(new Separator(IContextMenuConstants.GROUP_GENERATE));
- menu.add(new Separator(IContextMenuConstants.GROUP_SEARCH));
- menu.add(new Separator(IContextMenuConstants.GROUP_BUILD));
- menu.add(new Separator(IContextMenuConstants.GROUP_ADDITIONS));
- menu.add(new Separator(IContextMenuConstants.GROUP_VIEWER_SETUP));
- menu.add(new Separator(IContextMenuConstants.GROUP_PROPERTIES));
- }
+ /**
+ * Returns all Java editor text hovers contributed to the workbench.
+ *
+ * @return an array of JavaEditorTextHoverDescriptor
+ * @since 2.1
+ */
+ public JavaEditorTextHoverDescriptor[] getJavaEditorTextHoverDescriptors() {
+ if (fJavaEditorTextHoverDescriptors == null)
+ fJavaEditorTextHoverDescriptors = JavaEditorTextHoverDescriptor
+ .getContributedHovers();
+ return fJavaEditorTextHoverDescriptors;
+ }
+ /**
+ * Resets the Java editor text hovers contributed to the workbench.
+ * <p>
+ * This will force a rebuild of the descriptors the next time a client asks
+ * for them.
+ * </p>
+ *
+ * @return an array of JavaEditorTextHoverDescriptor
+ * @since 2.1
+ */
+ public void resetJavaEditorTextHoverDescriptors() {
+ fJavaEditorTextHoverDescriptors = null;
+ }
+ /**
+ * Creates the PHP plugin standard groups in a context menu.
+ */
+ public static void createStandardGroups(IMenuManager menu) {
+ if (!menu.isEmpty())
+ return;
+ menu.add(new Separator(IContextMenuConstants.GROUP_NEW));
+ menu.add(new GroupMarker(IContextMenuConstants.GROUP_GOTO));
+ menu.add(new Separator(IContextMenuConstants.GROUP_OPEN));
+ menu.add(new GroupMarker(IContextMenuConstants.GROUP_SHOW));
+ menu.add(new Separator(IContextMenuConstants.GROUP_REORGANIZE));
+ menu.add(new Separator(IContextMenuConstants.GROUP_GENERATE));
+ menu.add(new Separator(IContextMenuConstants.GROUP_SEARCH));
+ menu.add(new Separator(IContextMenuConstants.GROUP_BUILD));
+ menu.add(new Separator(IContextMenuConstants.GROUP_ADDITIONS));
+ menu.add(new Separator(IContextMenuConstants.GROUP_VIEWER_SETUP));
+ menu.add(new Separator(IContextMenuConstants.GROUP_PROPERTIES));
+ }
public static IWorkbenchPage getActivePage() {
return getDefault().internalGetActivePage();
}
-
public static Shell getActiveWorkbenchShell() {
return getActiveWorkbenchWindow().getShell();
}
-
/**
- * Returns an array of all editors that have an unsaved content. If the identical content is
- * presented in more than one editor, only one of those editor parts is part of the result.
- *
- * @return an array of all dirty editor parts.
- */
+ * Returns an array of all editors that have an unsaved content. If the
+ * identical content is presented in more than one editor, only one of those
+ * editor parts is part of the result.
+ *
+ * @return an array of all dirty editor parts.
+ */
public static IEditorPart[] getDirtyEditors() {
Set inputs = new HashSet();
List result = new ArrayList(0);
}
return (IEditorPart[]) result.toArray(new IEditorPart[result.size()]);
}
-
public static IWorkbenchWindow getActiveWorkbenchWindow() {
return getDefault().getWorkbench().getActiveWorkbenchWindow();
}
public static PHPeclipsePlugin getDefault() {
return plugin;
}
-
public static ImageDescriptorRegistry getImageDescriptorRegistry() {
return getDefault().internalGetImageDescriptorRegistry();
}
-
static IPath getInstallLocation() {
return new Path(getDefault().getDescriptor().getInstallURL().getFile());
}
public static int getJVM() {
return jvm;
}
-
public static String getPluginId() {
return getDefault().getDescriptor().getUniqueIdentifier();
}
-
/**
- * Returns the standard display to be used. The method first checks, if
- * the thread calling this method has an associated display. If so, this
- * display is returned. Otherwise the method returns the default display.
+ * Returns the standard display to be used. The method first checks, if the
+ * thread calling this method has an associated display. If so, this display
+ * is returned. Otherwise the method returns the default display.
*/
public static Display getStandardDisplay() {
Display display = Display.getCurrent();
}
return display;
}
-
// public static ExternalToolsPlugin getExternalTools() {
// return externalTools;
// }
public static IWorkspace getWorkspace() {
return ResourcesPlugin.getWorkspace();
}
-
public static boolean isDebug() {
return getDefault().isDebugging();
}
-
// public static void logErrorMessage(String message) {
- // log(new Status(IStatus.ERROR, getPluginId(), JavaStatusConstants.INTERNAL_ERROR, message, null));
+ // log(new Status(IStatus.ERROR, getPluginId(),
+ // JavaStatusConstants.INTERNAL_ERROR, message, null));
// }
//
// public static void logErrorStatus(String message, IStatus status) {
// logErrorMessage(message);
// return;
// }
- // MultiStatus multi= new MultiStatus(getPluginId(), JavaStatusConstants.INTERNAL_ERROR, message, null);
+ // MultiStatus multi= new MultiStatus(getPluginId(),
+ // JavaStatusConstants.INTERNAL_ERROR, message, null);
// multi.add(status);
// log(multi);
// }
//
// public static void log(Throwable e) {
- // log(new Status(IStatus.ERROR, getPluginId(), JavaStatusConstants.INTERNAL_ERROR, JavaUIMessages.getString("JavaPlugin.internal_error"), e)); //$NON-NLS-1$
+ // log(new Status(IStatus.ERROR, getPluginId(),
+ // JavaStatusConstants.INTERNAL_ERROR,
+ // JavaUIMessages.getString("JavaPlugin.internal_error"), e)); //$NON-NLS-1$
// }
-
public static void log(int severity, String message) {
Status status = new Status(severity, PLUGIN_ID, IStatus.OK, message, null);
log(status);
}
-
public static void log(IStatus status) {
getDefault().getLog().log(status);
}
public static void log(Throwable e) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "PHPeclipsePlugin.internalErrorOccurred", e)); //$NON-NLS-1$
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR,
+ "PHPeclipsePlugin.internalErrorOccurred", e)); //$NON-NLS-1$
}
-
private static void setJVM() {
String osName = System.getProperty("os.name");
-
if (osName.startsWith("Mac OS")) {
String mrjVersion = System.getProperty("mrj.version");
String majorMRJVersion = mrjVersion.substring(0, 3);
jvm = OTHER;
try {
-
double version = Double.valueOf(majorMRJVersion).doubleValue();
-
if (version == 2) {
jvm = MRJ_2_0;
} else if (version >= 2.1 && version < 3) {
} else if (version >= 3.1) {
jvm = MRJ_3_1;
}
-
} catch (NumberFormatException nfe) {
-
}
-
} else if (osName.startsWith("Windows")) {
if (osName.indexOf("9") != -1) {
jvm = WINDOWS_9x;
}
}
}
-
// TODO: refactor this into a better method name !
public synchronized PHPDocumentProvider getCompilationUnitDocumentProvider() {
if (fCompilationUnitDocumentProvider == null)
fCompilationUnitDocumentProvider = new PHPDocumentProvider();
return fCompilationUnitDocumentProvider;
}
-
/**
* Get the identifier index manager for the given project
*
- * @param iProject the current project
+ * @param iProject
+ * the current project
* @return
*/
public IdentifierIndexManager getIndexManager(IProject iProject) {
- String indexFilename = iProject.getLocation() + File.separator + "project.index";
- IdentifierIndexManager indexManager = (IdentifierIndexManager) fIndexManagerMap.get(indexFilename);
+ String indexFilename = iProject.getLocation() + File.separator
+ + "project.index";
+ IdentifierIndexManager indexManager = (IdentifierIndexManager) fIndexManagerMap
+ .get(indexFilename);
if (indexManager == null) {
indexManager = new IdentifierIndexManager(indexFilename);
fIndexManagerMap.put(indexFilename, indexManager);
}
return indexManager;
}
-
public synchronized IWorkingCopyManager getWorkingCopyManager() {
if (fWorkingCopyManager == null) {
PHPDocumentProvider provider = getCompilationUnitDocumentProvider();
}
return fWorkingCopyManager;
}
-
- public synchronized MembersOrderPreferenceCache getMemberOrderPreferenceCache() {
- if (fMembersOrderPreferenceCache == null)
- fMembersOrderPreferenceCache= new MembersOrderPreferenceCache();
- return fMembersOrderPreferenceCache;
- }
-
+ public synchronized MembersOrderPreferenceCache getMemberOrderPreferenceCache() {
+ if (fMembersOrderPreferenceCache == null)
+ fMembersOrderPreferenceCache = new MembersOrderPreferenceCache();
+ return fMembersOrderPreferenceCache;
+ }
public synchronized ProblemMarkerManager getProblemMarkerManager() {
if (fProblemMarkerManager == null)
fProblemMarkerManager = new ProblemMarkerManager();
return fProblemMarkerManager;
}
-
public synchronized JavaTextTools getJavaTextTools() {
if (fJavaTextTools == null)
fJavaTextTools = new JavaTextTools(getPreferenceStore());
return fJavaTextTools;
}
-
public IFile getLastEditorFile() {
return fLastEditorFile;
}
-
/**
- * Returns the string from the plugin's resource bundle,
- * or 'key' if not found.
+ * Returns the string from the plugin's resource bundle, or 'key' if not
+ * found.
*/
// public static String getResourceString(String key) {
// ResourceBundle bundle = PHPeclipsePlugin.getDefault().getResourceBundle();
// return key;
// }
// }
-
/**
* Returns the plugin's resource bundle,
*/
// public ResourceBundle getResourceBundle() {
// return resourceBundle;
// }
-
protected void initializeDefaultPreferences(IPreferenceStore store) {
// windows preferences:
store.setDefault(LOCALHOST_PREF, "http://localhost");
-
store.setDefault(SHOW_EXTERNAL_PREVIEW_PREF, "true");
store.setDefault(USE_EXTERNAL_BROWSER_PREF, "false");
store.setDefault(SHOW_OUTPUT_IN_CONSOLE, "true");
-
String windowsSystem = BootLoader.getWS();
-
if (jvm == WINDOWS_9x) {
- store.setDefault(EXTERNAL_BROWSER_PREF, "command.com /c start iexplore {0}");
+ store.setDefault(EXTERNAL_BROWSER_PREF,
+ "command.com /c start iexplore {0}");
} else if (windowsSystem.equals(BootLoader.WS_WIN32)) {
- store.setDefault(EXTERNAL_BROWSER_PREF, "rundll32 url.dll,FileProtocolHandler {0}");
+ store.setDefault(EXTERNAL_BROWSER_PREF,
+ "rundll32 url.dll,FileProtocolHandler {0}");
} else if (windowsSystem.equals(BootLoader.WS_CARBON)) {
// TODO How do we start Safari on Mac OS X ?
store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}");
} else {
store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}");
}
- store.setDefault(DOCUMENTROOT_PREF, getWorkspace().getRoot().getLocation().toString());
-
+ store.setDefault(DOCUMENTROOT_PREF, getWorkspace().getRoot().getLocation()
+ .toString());
// if ((jvm == WINDOWS_9x) || (jvm == WINDOWS_NT)) {
//
if (windowsSystem.equals(BootLoader.WS_WIN32)) {
store.setDefault(MYSQL_RUN_PREF, "c:\\apache\\mysql\\bin\\mysqld-nt.exe");
store.setDefault(APACHE_RUN_PREF, "c:\\apache\\apache.exe");
} else {
-
store.setDefault(PHP_RUN_PREF, "/apache/php/php");
store.setDefault(EXTERNAL_PARSER_PREF, "/apache/php/php -l -f {0}");
store.setDefault(MYSQL_RUN_PREF, "/apache/mysql/bin/mysqld");
store.setDefault(APACHE_RUN_PREF, "/apache/apache");
-
}
store.setDefault(MYSQL_PREF, "--standalone");
store.setDefault(APACHE_START_PREF, "-c \"DocumentRoot \"{0}\"\"");
store.setDefault(APACHE_STOP_PREF, "-k shutdown");
store.setDefault(APACHE_RESTART_PREF, "-k restart");
-
store.setDefault(MYSQL_START_BACKGROUND, "true");
store.setDefault(APACHE_START_BACKGROUND, "true");
store.setDefault(APACHE_STOP_BACKGROUND, "true");
store.setDefault(APACHE_RESTART_BACKGROUND, "true");
-
store.setDefault(PHP_PARSER_DEFAULT, PHP_EXTERNAL_PARSER);
store.setDefault(PHP_INTERNAL_PARSER, "false");
store.setDefault(PHP_EXTERNAL_PARSER, "true");
-
// store.setDefault(PHP_PARSE_ON_SAVE, "true");
-
// show line numbers:
// store.setDefault(LINE_NUMBER_RULER, "false");
// store.setDefault(FORMATTER_TAB_SIZE, "4");
-
// php syntax highlighting
store.setDefault(PHP_USERDEF_XMLFILE, "");
- //assume there is none chooA
-
- PreferenceConverter.setDefault(store, PHP_MULTILINE_COMMENT, PHPColorProvider.MULTI_LINE_COMMENT);
- PreferenceConverter.setDefault(store, PHP_SINGLELINE_COMMENT, PHPColorProvider.SINGLE_LINE_COMMENT);
+ //assume there is none chooA
+ PreferenceConverter.setDefault(store, PHP_MULTILINE_COMMENT,
+ PHPColorProvider.MULTI_LINE_COMMENT);
+ PreferenceConverter.setDefault(store, PHP_SINGLELINE_COMMENT,
+ PHPColorProvider.SINGLE_LINE_COMMENT);
PreferenceConverter.setDefault(store, PHP_TAG, PHPColorProvider.TAG);
- PreferenceConverter.setDefault(store, PHP_KEYWORD, PHPColorProvider.KEYWORD);
- PreferenceConverter.setDefault(store, PHP_VARIABLE, PHPColorProvider.VARIABLE);
- PreferenceConverter.setDefault(store, PHP_FUNCTIONNAME, PHPColorProvider.FUNCTION_NAME);
- PreferenceConverter.setDefault(store, PHP_CONSTANT, PHPColorProvider.CONSTANT);
+ PreferenceConverter
+ .setDefault(store, PHP_KEYWORD, PHPColorProvider.KEYWORD);
+ PreferenceConverter.setDefault(store, PHP_VARIABLE,
+ PHPColorProvider.VARIABLE);
+ PreferenceConverter.setDefault(store, PHP_FUNCTIONNAME,
+ PHPColorProvider.FUNCTION_NAME);
+ PreferenceConverter.setDefault(store, PHP_CONSTANT,
+ PHPColorProvider.CONSTANT);
PreferenceConverter.setDefault(store, PHP_TYPE, PHPColorProvider.TYPE);
PreferenceConverter.setDefault(store, PHP_STRING, PHPColorProvider.STRING);
- PreferenceConverter.setDefault(store, PHP_DEFAULT, PHPColorProvider.DEFAULT);
-
- PreferenceConverter.setDefault(store, PHPDOC_KEYWORD, PHPColorProvider.PHPDOC_KEYWORD);
- PreferenceConverter.setDefault(store, PHPDOC_TAG, PHPColorProvider.PHPDOC_TAG);
- PreferenceConverter.setDefault(store, PHPDOC_LINK, PHPColorProvider.PHPDOC_LINK);
- PreferenceConverter.setDefault(store, PHPDOC_DEFAULT, PHPColorProvider.PHPDOC_DEFAULT);
-
+ PreferenceConverter
+ .setDefault(store, PHP_DEFAULT, PHPColorProvider.DEFAULT);
+ PreferenceConverter.setDefault(store, PHPDOC_KEYWORD,
+ PHPColorProvider.PHPDOC_KEYWORD);
+ PreferenceConverter.setDefault(store, PHPDOC_TAG,
+ PHPColorProvider.PHPDOC_TAG);
+ PreferenceConverter.setDefault(store, PHPDOC_LINK,
+ PHPColorProvider.PHPDOC_LINK);
+ PreferenceConverter.setDefault(store, PHPDOC_DEFAULT,
+ PHPColorProvider.PHPDOC_DEFAULT);
// PreferenceConverter.setDefault(
// store,
// PHP_EDITOR_BACKGROUND,
// store,
// LINE_NUMBER_COLOR,
// PHPColorProvider.LINE_NUMBER_COLOR);
-
// // set default PHPDoc colors:
// PreferenceConverter.setDefault(
// store,
- // PHPDOC_KEYWORD,
+ // PHPDOC_KEYWORD,
// PHPColorProvider.PHPDOC_KEYWORD);
// PreferenceConverter.setDefault(
// store,
- // PHPDOC_LINK,
- // PHPColorProvider.PHPDOC_LINK);
+ // PHPDOC_LINK,
+ // PHPColorProvider.PHPDOC_LINK);
// PreferenceConverter.setDefault(
// store,
- // PHPDOC_DEFAULT,
+ // PHPDOC_DEFAULT,
// PHPColorProvider.PHPDOC_DEFAULT);
// PreferenceConverter.setDefault(
// store,
- // PHPDOC_TAG,
+ // PHPDOC_TAG,
// PHPColorProvider.PHPDOC_TAG);
-
// store.setDefault(PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT, "true");
// PreferenceConverter.setDefault(
// store,
// PREFERENCE_COLOR_BACKGROUND,
// PHPColorProvider.BACKGROUND_COLOR);
-
//language stuff
// store.setDefault(RESOURCE_BUNDLE, LANGUAGE_DEFAULT);
// store.setDefault(RESOURCE_BUNDLE_EN_GB, "true");
// store.setDefault(RESOURCE_BUNDLE_DE, "false");
// store.setDefault(RESOURCE_BUNDLE_FR, "false");
// store.setDefault(RESOURCE_BUNDLE_ES, "false");
-
store.setDefault(PHP_OUTLINE_CLASS, "true"); //$NON-NLS-1$
store.setDefault(PHP_OUTLINE_FUNC, "true"); //$NON-NLS-1$
store.setDefault(PHP_OUTLINE_VAR, "true"); //$NON-NLS-1$
-
TemplatePreferencePage.initDefaults(store);
//this will initialize the static fields in the syntaxrdr class
new PHPSyntaxRdr();
-
- PHPCore.initializeDefaultPluginPreferences();
+ JavaCore.initializeDefaultPluginPreferences();
PreferenceConstants.initializeDefaultValues(store);
-
externalTools.initializeDefaultPreferences(store);
}
-
private IWorkbenchPage internalGetActivePage() {
IWorkbenchWindow window = getWorkbench().getActiveWorkbenchWindow();
if (window != null)
return window.getActivePage();
return null;
}
-
private ImageDescriptorRegistry internalGetImageDescriptorRegistry() {
if (fImageDescriptorRegistry == null)
fImageDescriptorRegistry = new ImageDescriptorRegistry();
return fImageDescriptorRegistry;
}
/**
- * Open a file in the Workbench that may or may not exist in the workspace.
- * Must be run on the UI thread.
- * @param filename
- * @throws CoreException
- */
+ * Open a file in the Workbench that may or may not exist in the workspace.
+ * Must be run on the UI thread.
+ *
+ * @param filename
+ * @throws CoreException
+ */
public ITextEditor openFileInTextEditor(String filename) throws CoreException {
-
// reject directories
if (new File(filename).isDirectory())
return null;
-
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getWorkbenchWindows()[0];
IWorkbenchPage page = window.getActivePage();
IPath path = new Path(filename);
-
// If the file exists in the workspace, open it
IFile file = getWorkspace().getRoot().getFileForLocation(path);
IEditorPart editor;
IEditorInput input = new ExternalEditorInput(storage);
editor = page.openEditor(input, desc.getId());
textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class);
-
// If the storage provider is not ours, we can't guarantee read/write.
if (textEditor != null) {
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
return textEditor;
}
/**
- * Open a file in the Workbench that may or may not exist in the workspace.
- * Must be run on the UI thread.
- * @param filename
- * @param line
- * @throws CoreException
- */
- public void openFileAndGotoLine(String filename, int line) throws CoreException {
-
+ * Open a file in the Workbench that may or may not exist in the workspace.
+ * Must be run on the UI thread.
+ *
+ * @param filename
+ * @param line
+ * @throws CoreException
+ */
+ public void openFileAndGotoLine(String filename, int line)
+ throws CoreException {
ITextEditor textEditor = openFileInTextEditor(filename);
if (textEditor != null) {
// If a line number was given, go to it
if (line > 0) {
try {
line--; // document is 0 based
- IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
- textEditor.selectAndReveal(document.getLineOffset(line), document.getLineLength(line));
-
+ IDocument document = textEditor.getDocumentProvider().getDocument(
+ textEditor.getEditorInput());
+ textEditor.selectAndReveal(document.getLineOffset(line), document
+ .getLineLength(line));
} catch (BadLocationException e) {
// invalid text position -> do nothing
}
}
}
}
-
/**
- * Open a file in the Workbench that may or may not exist in the workspace.
- * Must be run on the UI thread.
- * @param filename
- * @param offset
- * @throws CoreException
- */
- public void openFileAndGotoOffset(String filename, int offset, int length) throws CoreException {
-
+ * Open a file in the Workbench that may or may not exist in the workspace.
+ * Must be run on the UI thread.
+ *
+ * @param filename
+ * @param offset
+ * @throws CoreException
+ */
+ public void openFileAndGotoOffset(String filename, int offset, int length)
+ throws CoreException {
ITextEditor textEditor = openFileInTextEditor(filename);
if (textEditor != null) {
// If a line number was given, go to it
if (offset >= 0) {
- IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ IDocument document = textEditor.getDocumentProvider().getDocument(
+ textEditor.getEditorInput());
textEditor.selectAndReveal(offset, length);
}
}
}
-
- public void openFileAndFindString(String filename, String findString) throws CoreException {
-
+ public void openFileAndFindString(String filename, String findString)
+ throws CoreException {
ITextEditor textEditor = openFileInTextEditor(filename);
if (textEditor != null) {
// If a string was given, go to it
if (findString != null) {
try {
- IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ IDocument document = textEditor.getDocumentProvider().getDocument(
+ textEditor.getEditorInput());
int offset = document.search(0, findString, true, false, true);
textEditor.selectAndReveal(offset, findString.length());
-
} catch (BadLocationException e) {
// invalid text position -> do nothing
}
-
}
}
}
public void setLastEditorFile(IFile textEditor) {
this.fLastEditorFile = textEditor;
}
-
/**
* @see org.eclipse.ui.plugin.AbstractUIPlugin#shutdown()
*/
public void shutdown() throws CoreException {
- // moved down:
+ // moved down (see below):
// super.shutdown();
-
// externalTools.shutDown();
ColorManager.getDefault().dispose();
-
// save the information from the php index files if necessary
Collection collection = fIndexManagerMap.values();
Iterator iterator = collection.iterator();
indexManager = (IdentifierIndexManager) iterator.next();
indexManager.writeFile();
}
-
if (fImageDescriptorRegistry != null)
fImageDescriptorRegistry.dispose();
-
// unregisterAdapters();
-
super.shutdown();
-
if (fWorkingCopyManager != null) {
fWorkingCopyManager.shutdown();
fWorkingCopyManager = null;
}
-
if (fCompilationUnitDocumentProvider != null) {
fCompilationUnitDocumentProvider.shutdown();
fCompilationUnitDocumentProvider = null;
}
-
if (fJavaTextTools != null) {
fJavaTextTools.dispose();
fJavaTextTools = null;
}
-
// JavaDocLocations.shutdownJavadocLocations();
//
// JFaceResources.getFontRegistry().removeListener(fFontPropertyChangeListener);
-
+ // begin JavaCore#shutdown()
+ //savePluginPreferences();
+ savePluginPreferences();
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ workspace.removeResourceChangeListener(JavaModelManager
+ .getJavaModelManager().deltaProcessor);
+ workspace.removeSaveParticipant(PHPeclipsePlugin.getDefault());
+ ((JavaModelManager) JavaModelManager.getJavaModelManager()).shutdown();
+ // end JavaCore#shutdown()
}
-
public void startup() throws CoreException {
super.startup();
- IAdapterManager manager = Platform.getAdapterManager();
- manager.registerAdapters(new PHPElementAdapterFactory(), PHPElement.class);
- manager.registerAdapters(new ResourceAdapterFactory(), IResource.class);
- // externalTools.startUp();
+ // begin JavaCore.startup();
+ JavaModelManager manager = JavaModelManager.getJavaModelManager();
+ try {
+ manager.configurePluginDebugOptions();
+ // request state folder creation (workaround 19885)
+ // JavaCore.getPlugin().getStateLocation();
+ getStateLocation();
+ // retrieve variable values
+ // JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new
+ // JavaModelManager.PluginPreferencesListener());
+ getPluginPreferences().addPropertyChangeListener(
+ new JavaModelManager.PluginPreferencesListener());
+ // TODO khartlage temp-del
+ // manager.loadVariablesAndContainers();
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ workspace.addResourceChangeListener(manager.deltaProcessor,
+ IResourceChangeEvent.PRE_AUTO_BUILD
+ | IResourceChangeEvent.POST_AUTO_BUILD
+ | IResourceChangeEvent.POST_CHANGE
+ | IResourceChangeEvent.PRE_DELETE
+ | IResourceChangeEvent.PRE_CLOSE);
+ // startIndexing();
+ workspace.addSaveParticipant(PHPeclipsePlugin.getDefault(), manager);
+ } catch (CoreException e) {
+ } catch (RuntimeException e) {
+ manager.shutdown();
+ throw e;
+ }
+ // end JavaCore.startup();
+ IAdapterManager platformManager = Platform.getAdapterManager();
+ platformManager.registerAdapters(new PHPElementAdapterFactory(),
+ PHPElement.class);
+ platformManager.registerAdapters(new ResourceAdapterFactory(),
+ IResource.class);
+ // externalTools.startUp();
getStandardDisplay().asyncExec(new Runnable() {
public void run() {
//initialize the variable context manager
}
});
}
-
}
\ No newline at end of file
import java.util.Iterator;
-import org.eclipse.core.resources.IMarker;
-
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-
-import org.eclipse.ui.texteditor.MarkerAnnotation;
-
import net.sourceforge.phpdt.core.ICompilationUnit;
import net.sourceforge.phpdt.core.IJavaElement;
import net.sourceforge.phpdt.core.IJavaModelMarker;
import net.sourceforge.phpdt.core.JavaCore;
-
import net.sourceforge.phpdt.internal.corext.util.JavaModelUtil;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.texteditor.MarkerAnnotation;
+
public class JavaMarkerAnnotation extends MarkerAnnotation implements IJavaAnnotation {
import net.sourceforge.phpdt.core.ISourceReference;
import net.sourceforge.phpdt.core.IType;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.PHPUiImages;
import net.sourceforge.phpdt.internal.ui.actions.CompositeActionGroup;
import net.sourceforge.phpdt.internal.ui.dnd.JdtViewerDragAdapter;
import net.sourceforge.phpdt.ui.ProblemsLabelDecorator.ProblemsLabelChangedEvent;
import net.sourceforge.phpdt.ui.actions.GenerateActionGroup;
import net.sourceforge.phpdt.ui.actions.MemberFilterActionGroup;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IResource;
public void dispose() {
if (fListener != null) {
- PHPCore.removeElementChangedListener(fListener);
+ JavaCore.removeElementChangedListener(fListener);
fListener= null;
}
}
if (isCU && fListener == null) {
fListener= new ElementChangedListener();
- PHPCore.addElementChangedListener(fListener);
+ JavaCore.addElementChangedListener(fListener);
} else if (!isCU && fListener != null) {
- PHPCore.removeElementChangedListener(fListener);
+ JavaCore.removeElementChangedListener(fListener);
fListener= null;
}
}
import net.sourceforge.phpdt.core.IJavaElement;
import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
-import net.sourceforge.phpdt.ui.PreferenceConstants;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocument;
import net.sourceforge.phpdt.core.IOpenable;
import net.sourceforge.phpdt.core.IProblemRequestor;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.core.compiler.IProblem;
import net.sourceforge.phpdt.internal.ui.PHPStatusConstants;
import net.sourceforge.phpdt.internal.ui.PHPUIStatus;
import net.sourceforge.phpdt.internal.ui.text.java.IProblemRequestorExtension;
import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IFile;
* @param file the file from which to create the compilation unit
*/
protected ICompilationUnit createCompilationUnit(IFile file) {
- Object element = PHPCore.create(file);
+ Object element = JavaCore.create(file);
if (element instanceof ICompilationUnit)
return (ICompilationUnit) element;
return null;
import net.sourceforge.phpdt.core.ISourceRange;
import net.sourceforge.phpdt.core.ISourceReference;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.actions.CompositeActionGroup;
import net.sourceforge.phpdt.internal.ui.text.HTMLTextPresenter;
import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher;
import net.sourceforge.phpdt.ui.actions.GenerateActionGroup;
import net.sourceforge.phpdt.ui.actions.GotoMatchingBracketAction;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants;
/** Preference key for the link color */
private final static String LINK_COLOR = PreferenceConstants.EDITOR_LINK_COLOR;
/** Preference key for compiler task tags */
- private final static String COMPILER_TASK_TAGS = PHPCore.COMPILER_TASK_TAGS;
+ private final static String COMPILER_TASK_TAGS = JavaCore.COMPILER_TASK_TAGS;
// protected PHPActionGroup fActionGroups;
// /** The outline page */
**********************************************************************/
package net.sourceforge.phpeclipse.phpeditor;
import java.util.Vector;
+
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.text.ContentAssistPreference;
import net.sourceforge.phpdt.internal.ui.text.HTMLTextPresenter;
import net.sourceforge.phpdt.internal.ui.text.JavaAnnotationHover;
import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCompletionProcessor;
import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor;
// prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces
final IPreferenceStore preferences = PHPeclipsePlugin.getDefault()
.getPreferenceStore();
- int tabWidth = preferences.getInt(PHPCore.FORMATTER_TAB_SIZE);
+ int tabWidth = preferences.getInt(JavaCore.FORMATTER_TAB_SIZE);
boolean useSpaces = getPreferenceStore().getBoolean(SPACES_FOR_TABS);
for (int i = 0; i <= tabWidth; i++) {
StringBuffer prefix = new StringBuffer();
import net.sourceforge.phpdt.core.ISourceRange;
import net.sourceforge.phpdt.core.ISourceReference;
import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
import net.sourceforge.phpdt.internal.ui.text.ContentAssistPreference;
import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher;
import net.sourceforge.phpdt.ui.IWorkingCopyManager;
import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants;
// }
// }
/* Preference key for code formatter tab size */
- private final static String CODE_FORMATTER_TAB_SIZE = PHPCore.FORMATTER_TAB_SIZE;
+ private final static String CODE_FORMATTER_TAB_SIZE = JavaCore.FORMATTER_TAB_SIZE;
/** Preference key for matching brackets */
private final static String MATCHING_BRACKETS = PreferenceConstants.EDITOR_MATCHING_BRACKETS;
/** Preference key for matching brackets color */
package net.sourceforge.phpeclipse.resourcesview;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.core.JavaProject;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (PHPFile.class.equals(adapterType))
- return PHPCore.create((IFile) adaptableObject);
+ return JavaCore.create((IFile) adaptableObject);
if (JavaProject.class.equals(adapterType))
- return PHPCore.create((IProject) adaptableObject);
+ return JavaCore.create((IProject) adaptableObject);
if (PHPElement.class.equals(adapterType)) {
if (adaptableObject instanceof IFile)
- return PHPCore.create((IFile) adaptableObject);
+ return JavaCore.create((IFile) adaptableObject);
if (adaptableObject instanceof IProject)
- return PHPCore.create((IProject) adaptableObject);
+ return JavaCore.create((IProject) adaptableObject);
}
return null;
import java.lang.reflect.InvocationTargetException;
-import net.sourceforge.phpeclipse.PHPCore;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IProject;
newProject.open(new SubProgressMonitor(monitor, 1));
remainingWorkUnits--;
}
- PHPCore.addPHPNature(newProject, new SubProgressMonitor(monitor, remainingWorkUnits));
+ JavaCore.addPHPNature(newProject, new SubProgressMonitor(monitor, remainingWorkUnits));
} catch (CoreException e) {
throw new InvocationTargetException(e);
} finally {
import java.lang.reflect.InvocationTargetException;
+import net.sourceforge.phpdt.core.JavaCore;
import net.sourceforge.phpdt.internal.ui.util.ExceptionHandler;
-import net.sourceforge.phpeclipse.PHPCore;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
project.open(monitor);
monitor= null;
}
- PHPCore.addPHPNature(project, new NullProgressMonitor());
+ JavaCore.addPHPNature(project, new NullProgressMonitor());
} finally {
if (monitor != null) {
monitor.done();