X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/JavaCore.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/JavaCore.java
index e47f5c4..f2d1b6c 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/JavaCore.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/JavaCore.java
@@ -9,49 +9,44 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
-import net.sourceforge.phpdt.internal.core.BatchOperation;
+import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions;
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.phpdt.internal.core.Region;
+import net.sourceforge.phpdt.internal.core.util.MementoTokenizer;
+//incastrix
+//import net.sourceforge.phpdt.internal.corext.Assert;
+import org.eclipse.core.runtime.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.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.ISavedState;
-import org.eclipse.core.resources.IWorkspace;
+//import org.eclipse.core.resources.IResourceChangeListener;
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.IConfigurationElement;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import net.sourceforge.phpdt.internal.core.util.Util;
-import org.osgi.framework.BundleContext;
public class JavaCore {
- // public static HashSet OptionNames = new HashSet(20);
+ // public static HashSet OptionNames = new HashSet(20);
/**
* The plug-in identifier of the Java core support (value
* "net.sourceforge.phpeclipse"
)
*/
- // public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.core";
+ // public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.core";
// //$NON-NLS-1$
public static final String PLUGIN_ID = PHPeclipsePlugin.PLUGIN_ID;
@@ -125,6 +120,23 @@ public class JavaCore {
*/
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_COMPACT_STRING_CONCATENATION = PLUGIN_ID
+ + ".formatter.style.compactStringConcatenation"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ *
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_COMPACT_ARRAYS = PLUGIN_ID
+ + ".formatter.style.compactArrays"; //$NON-NLS-1$
/**
* Possible configurable option ID.
@@ -294,17 +306,25 @@ public class JavaCore {
*
* @see #getDefaultOptions
*/
- public static final String COMPILER_PB_PHP_VAR_DEPRECATED = PLUGIN_ID
- + ".compiler.problem.phpVarDeprecatedWarning"; //$NON-NLS-1$
+ public static final String COMPILER_PB_PHP_VAR_DEPRECATED = CompilerOptions.OPTION_PHPVarDeprecatedWarning; //$NON-NLS-1$
+
+ public static final String COMPILER_PB_PHP_KEYWORD = CompilerOptions.OPTION_PHPBadStyleKeywordWarning; //$NON-NLS-1$
+
+ public static final String COMPILER_PB_PHP_UPPERCASE_IDENTIFIER = CompilerOptions.OPTION_PHPBadStyleUppercaseIdentifierWarning; //$NON-NLS-1$
+
+ public static final String COMPILER_PB_PHP_FILE_NOT_EXIST = CompilerOptions.OPTION_PHPIncludeNotExistWarning; //$NON-NLS-1$
+
+ public static final String COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE = CompilerOptions.OPTION_UninitializedLocalVariableWarning; //$NON-NLS-1$
+
+ public static final String COMPILER_PB_UNREACHABLE_CODE = CompilerOptions.OPTION_CodeCannotBeReachedWarning; //$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$
-
+ // public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID
+ // + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
/**
* Possible configurable option ID.
*
@@ -836,417 +856,417 @@ public class JavaCore {
* Note: more options might be added in further releases.
*
*
- * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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> + * 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" * - * 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" + * 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" * - * JAVACORE / Reporting Classpath Cycle - * A project is involved in a cycle. - * - option id: "org.phpeclipse.phpdt.core.circularClasspath" - * - possible values: { "error", "warning" } - * - default: "error" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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" + * 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" * - * 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: + * 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: ** String *
- * ; value type: + * ; value type: ** String *
- * ) - * @see #setOptions + * ) + * @see #setOptions * */ - // public static Hashtable getDefaultOptions() { + // public static Hashtable getDefaultOptions() { // - // Hashtable defaultOptions = new Hashtable(10); + // Hashtable defaultOptions = new Hashtable(10); // - // // see #initializeDefaultPluginPreferences() for changing default + // // see #initializeDefaultPluginPreferences() for changing default // settings - // Preferences preferences = getPlugin().getPluginPreferences(); - // HashSet optionNames = OptionNames; + // 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, + // // 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, + // } + // } + // // 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()); + // } + // } + // // get encoding through resource plugin + // defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding()); // - // return defaultOptions; - // } + // return defaultOptions; + // } /** * Helper method for returning one option value only. Equivalent to *(String)JavaCore.getOptions().get(optionName)
Note that it @@ -1262,17 +1282,17 @@ public class JavaCore { * @see JavaCore#getDefaultOptions * @since 2.0 */ - // public static String getOption(String optionName) { + // 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; - // } + // 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 @@ -1286,38 +1306,38 @@ public class JavaCore { *String
; value type:String
) * @see JavaCore#getDefaultOptions */ - // public static Hashtable getOptions() { + // public static Hashtable getOptions() { // - // Hashtable options = new Hashtable(10); + // Hashtable options = new Hashtable(10); // - // // see #initializeDefaultPluginPreferences() for changing default + // // see #initializeDefaultPluginPreferences() for changing default // settings - // Plugin plugin = getPlugin(); - // if (plugin != null) { - // Preferences preferences = getPlugin().getPluginPreferences(); - // HashSet optionNames = OptionNames; + // 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; - // } + // // 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 @@ -1333,29 +1353,29 @@ public class JavaCore { * options to their default values * @see JavaCore#getDefaultOptions */ - // public static void setOptions(Hashtable newOptions) { + // public static void setOptions(Hashtable newOptions) { // - // // see #initializeDefaultPluginPreferences() for changing default + // // see #initializeDefaultPluginPreferences() for changing default // settings - // Preferences preferences = getPlugin().getPluginPreferences(); + // 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); - // } + // 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(); - // } + // // persist options + // getPlugin().savePluginPreferences(); + // } public static IProject[] getPHPProjects() { List phpProjectsList = new ArrayList(); IProject[] workspaceProjects = PHPeclipsePlugin.getWorkspace() @@ -1371,16 +1391,16 @@ public class JavaCore { return (IProject[]) phpProjectsList.toArray(phpProjects); } - // public static PHPProject getPHPProject(String name) { - // IProject aProject = + // 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; - // } + // if (isPHPProject(aProject)) { + // PHPProject thePHPProject = new PHPProject(); + // thePHPProject.setProject(aProject); + // return thePHPProject; + // } + // return null; + // } public static boolean isPHPProject(IProject aProject) { try { @@ -1391,38 +1411,38 @@ public class JavaCore { 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); + // 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; - // } + // return null; + // } - // public static PHPProject create(IProject aProject) { + // 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): " + + // 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; - // } + // return null; + // } public static void addPHPNature(IProject project, IProgressMonitor monitor) throws CoreException { @@ -1475,10 +1495,10 @@ public class JavaCore { * if the operation failed. * @since 2.1 */ - // public static void run(IWorkspaceRunnable action, IProgressMonitor + // public static void run(IWorkspaceRunnable action, IProgressMonitor // monitor) throws CoreException { - // run(action, ResourcesPlugin.getWorkspace().getRoot(), monitor); - // } + // run(action, ResourcesPlugin.getWorkspace().getRoot(), monitor); + // } /** * Runs the given action as an atomic Java model operation. *@@ -1517,19 +1537,18 @@ public class JavaCore { * if the operation failed. * @since 3.0 */ - // public static void run(IWorkspaceRunnable action, ISchedulingRule rule, + // public static void run(IWorkspaceRunnable action, ISchedulingRule rule, // 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 + // 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), rule, IWorkspace.AVOID_UPDATE, + // workspace.run(new BatchOperation(action), rule, IWorkspace.AVOID_UPDATE, // monitor); - // } - // } - + // } + // } /** * Adds the given listener for changes to Java elements. Has no effect if an * identical listener is already registered. @@ -1595,13 +1614,33 @@ public class JavaCore { * @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()); - } +// 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()); +// } + + /** + * Adds the given listener for POST_CHANGE resource change events to the + * Java core. The listener is guarantied to be notified of the POST_CHANGE + * resource change event before the Java core starts processing the resource + * change event itself. + *
+ * Has no effect if an identical listener is already registered. + *
+ * + * @param listener + * the listener + * @see #removePreProcessingResourceChangedListener(IResourceChangeListener) + * @since 3.0 + */ +// public static void addPreProcessingResourceChangedListener( +// IResourceChangeListener listener) { +// JavaModelManager.getJavaModelManager().deltaState +// .addPreResourceChangedListener(listener); +// } /** * Configures the given marker for the given Java element. Used for markers, @@ -1615,13 +1654,13 @@ public class JavaCore { * if theIMarker.setAttribute
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()); - } +// 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 @@ -1641,6 +1680,32 @@ public class JavaCore { } /** + * Returns the Java model element corresponding to the given handle + * identifier generated byIJavaElement.getHandleIdentifier()
, + * ornull
if unable to create the associated element. If the + * returned Java element is anICompilationUnit
, its owner + * is the given owner if such a working copy exists, otherwise the + * compilation unit is a primary compilation unit. + * + * @param handleIdentifier + * the given handle identifier + * @param owner + * the owner of the returned compilation unit, ignored if the + * returned element is not a compilation unit + * @return the Java element corresponding to the handle identifier + * @since 3.0 + */ + public static IJavaElement create(String handleIdentifier, + WorkingCopyOwner owner) { + if (handleIdentifier == null) { + return null; + } + MementoTokenizer memento = new MementoTokenizer(handleIdentifier); + JavaModel model = JavaModelManager.getJavaModelManager().getJavaModel(); + return model.getHandleFromMemento(memento, owner); + } + + /** * Returns the Java element corresponding to the given file, or *null
if unable to associate the given file with a Java * element. @@ -1772,9 +1837,9 @@ public class JavaCore { * @return a class file element for the given.class
file, or *null
if unable to recognize the class file */ - //public static IClassFile createClassFileFrom(IFile file) { - // return JavaModelManager.createClassFileFrom(file, null); - //} + // public static IClassFile createClassFileFrom(IFile file) { + // return JavaModelManager.createClassFileFrom(file, null); + // } /** * Creates and returns a compilation unit element for the given *.java
file. Returnsnull
if unable to @@ -1800,10 +1865,10 @@ public class JavaCore { * to create a JAR package fragment root. (for example, if the JAR * file represents a non-Java resource) */ - //public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile + // public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile // file) { - // return JavaModelManager.createJarPackageFragmentRootFrom(file, null); - //} + // 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 @@ -1816,7 +1881,7 @@ public class JavaCore { * (usingsetClasspathContainer
, then a *ClasspathContainerInitializer
will be activated if any was * registered for this container ID onto the extension point - * "org.eclipse.jdt.core.classpathContainerInitializer". + * "net.sourceforge.phpdt.core.classpathContainerInitializer". ** There is no assumption that the returned container must answer the exact * same containerPath when requested @@ -1827,7 +1892,7 @@ public class JavaCore { * are not preserved from a session to another. It is thus highly * recommended to register a
ClasspathContainerInitializer
* for each referenced container (through the extension point - * "org.eclipse.jdt.core.ClasspathContainerInitializer"). + * "net.sourceforge.phpdt.core.ClasspathContainerInitializer"). ** * @param containerPath @@ -1848,86 +1913,87 @@ public class JavaCore { * IProgressMonitor) * @since 2.0 */ - //public static IClasspathContainer getClasspathContainer(final IPath + // public static IClasspathContainer getClasspathContainer(final IPath // containerPath, final IJavaProject project) throws JavaModelException { // - // IClasspathContainer container = JavaModelManager.containerGet(project, + // IClasspathContainer container = JavaModelManager.containerGet(project, // containerPath); - // if (container == JavaModelManager.ContainerInitializationInProgress) + // if (container == JavaModelManager.ContainerInitializationInProgress) // return null; // break cycle // - // if (container == null){ - // final ClasspathContainerInitializer initializer = + // 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: + // 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 + // 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.containerPut(project, containerPath, // JavaModelManager.ContainerInitializationInProgress); // avoid // initialization cycles - // boolean ok = false; - // try { - // // wrap initializer call with Safe runnable in case initializer would be + // 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 + // Platform.run(new ISafeRunnable() { + // public void handleException(Throwable exception) { + // ProjectPrefUtil.log(exception, "Exception occurred in classpath container // initializer: "+initializer); //$NON-NLS-1$ - // } - // public void run() throws Exception { - // initializer.initialize(containerPath, project); - // } - // }); + // } + // public void run() throws Exception { + // initializer.initialize(containerPath, project); + // } + // }); // - // // retrieve value (if initialization was successful) - // container = JavaModelManager.containerGet(project, containerPath); - // if (container == JavaModelManager.ContainerInitializationInProgress) + // // 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); // + // ok = true; + // } finally { + // if (!ok) JavaModelManager.containerPut(project, containerPath, null); // // flush cache - // } - // if (JavaModelManager.CP_RESOLVE_VERBOSE){ - // System.out.print("CPContainer INIT - after resolution: + // } + // 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()+" {"); + // 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: + // 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; - //} + // } + // } + // } + // return container; + // } /** * Helper method finding the classpath container initializer registered for * a given classpath container ID or
null
if none was found * while iterating over the contributions to extension point to the - * extension point "org.eclipse.jdt.core.classpathContainerInitializer". + * extension point + * "net.sourceforge.phpdt.core.classpathContainerInitializer". ** A containerID is the first segment of any container path, used to * identify the registered container initializer. @@ -1939,42 +2005,42 @@ public class JavaCore { * container initializer or
- *null
if none was found. * @since 2.1 */ - //public static ClasspathContainerInitializer + // 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 = + // 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 = + // 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"); + // 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 + // 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"); + // } + // try { + // Object execExt = configElements[j].createExecutableExtension("class"); // //$NON-NLS-1$ - // if (execExt instanceof ClasspathContainerInitializer){ - // return (ClasspathContainerInitializer)execExt; - // } - // } catch(CoreException e) { - // } - // } - // } - // } - // } - // return null; - //} + // if (execExt instanceof ClasspathContainerInitializer){ + // return (ClasspathContainerInitializer)execExt; + // } + // } catch(CoreException e) { + // } + // } + // } + // } + // } + // return null; + // } /** * Returns the path held in the given classpath variable. Returnsnull * if unable to bind. @@ -1984,10 +2050,10 @@ public class JavaCore { * * 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. + * "net.sourceforge.phpdt.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 @@ -2006,54 +2072,55 @@ public class JavaCore { // even if persisted value exists, initializer is given priority, only // if no initializer is found the persisted value is reused - // final ClasspathVariableInitializer initializer = + // final ClasspathVariableInitializer initializer = // PHPCore.getClasspathVariableInitializer(variableName); - // if (initializer != null){ - // if (JavaModelManager.CP_RESOLVE_VERBOSE){ - // System.out.println("CPVariable INIT - triggering initialization of: " + // 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 + // new Exception("FAKE exception for dumping current CPVariable // ("+variableName+ ")INIT invocation stack trace").printStackTrace(); // //$NON-NLS-1$//$NON-NLS-2$ - // } - // JavaModelManager.variablePut(variableName, + // } + // JavaModelManager.variablePut(variableName, // JavaModelManager.VariableInitializationInProgress); // avoid // initialization cycles - // boolean ok = false; - // try { - // // wrap initializer call with Safe runnable in case initializer would + // 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 + // Platform.run(new ISafeRunnable() { + // public void handleException(Throwable exception) { + // ProjectPrefUtil.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); // + // } + // public void run() throws Exception { + // initializer.initialize(variableName); + // } + // }); + // variablePath = (IPath) JavaModelManager.variableGet(variableName); // // initializer should have performed side-effect - // if (variablePath == + // 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: " + + // 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 + // } + // 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: " + + // } + // } else { + // if (JavaModelManager.CP_RESOLVE_VERBOSE){ + // System.out.println("CPVariable INIT - no initializer found for: " + // variableName); //$NON-NLS-1$ - // } - // } + // } + // } return variablePath; } @@ -2061,7 +2128,8 @@ public class JavaCore { * Helper method finding the classpath variable initializer registered for a * given classpath variable name or
null
if none was found * while iterating over the contributions to extension point to the - * extension point "org.eclipse.jdt.core.classpathVariableInitializer". + * extension point + * "net.sourceforge.phpdt.core.classpathVariableInitializer". ** * @param the @@ -2070,43 +2138,43 @@ public class JavaCore { * initializer or
null
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; - } +// 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; +// } /** * Returns the names of all known classpath variables. @@ -2118,9 +2186,9 @@ public class JavaCore { * @return the list of classpath variable names * @see #setClasspathVariable */ - //public static String[] getClasspathVariableNames() { - // return JavaModelManager.variableNames(); - //} + // 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 @@ -2133,453 +2201,453 @@ public class JavaCore { * Note: more options might be added in further releases. * *- * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.debug.localVariable" + * - possible values: { "generate", "do not generate" } + * - default: "generate" * - * 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" + * COMPILER / Generating Line Number Debug Attribute + * When generated, this attribute will enable source code highlighting in debugger + * (.class file is then bigger). + * - option id: "net.sourceforge.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: "net.sourceforge.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 (that is, never read), the + * compiler will optimize them out, potentially altering debugging + * - option id: "net.sourceforge.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: "net.sourceforge.phpdt.core.compiler.codegen.targetPlatform" + * - possible values: { "1.1", "1.2", "1.3", "1.4" } + * - default: "1.1" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.unreachableCode" + * - possible values: { "error", "warning", "ignore" } + * - default: "error" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.invalidImport" + * - possible values: { "error", "warning", "ignore" } + * - 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.eclipse.jdt.core.formatter.newline.openingBrace" - * - possible values: { "insert", "do not insert" } - * - default: "do not insert" + * 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: "net.sourceforge.phpdt.core.compiler.problem.overridingPackageDefaultMethod" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.methodWithConstructorName" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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" + * COMPILER / Reporting Deprecation + * When enabled, the compiler will signal use of deprecated API either as an + * error or a warning. + * - option id: "net.sourceforge.phpdt.core.compiler.problem.deprecation" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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" + * 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 "net.sourceforge.phpdt.core.compiler.problem.deprecation". + * - option id: "net.sourceforge.phpdt.core.compiler.problem.deprecationInDeprecatedCode" + * - possible values: { "enabled", "disabled" } + * - default: "disabled" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.hiddenCatchBlock" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.unusedLocal" + * - possible values: { "error", "warning", "ignore" } + * - default: "ignore" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.unusedParameter" + * - possible values: { "error", "warning", "ignore" } + * - default: "ignore" * - * 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" + * 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 "net.sourceforge.phpdt.core.compiler.problem.unusedParameter". + * - option id: "net.sourceforge.phpdt.core.compiler.problem.unusedParameterWhenImplementingAbstract" + * - possible values: { "enabled", "disabled" } + * - default: "disabled" * - * 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" + * 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 "net.sourceforge.phpdt.core.compiler.problem.unusedParameter". + * - option id: "net.sourceforge.phpdt.core.compiler.problem.unusedParameterWhenOverridingConcrete" + * - possible values: { "enabled", "disabled" } + * - default: "disabled" * - * 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" + * COMPILER / Reporting Unused Import + * When enabled, the compiler will issue an error or a warning for unused import + * reference + * - option id: "net.sourceforge.phpdt.core.compiler.problem.unusedImport" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.unusedPrivateMember" + * - possible values: { "error", "warning", "ignore" } + * - default: "ignore" * - * 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" + * 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: "net.sourceforge.phpdt.core.compiler.problem.syntheticAccessEmulation" + * - possible values: { "error", "warning", "ignore" } + * - default: "ignore" * - * 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: "" + * 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: "net.sourceforge.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: "net.sourceforge.phpdt.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: "net.sourceforge.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.core.compiler.problem.noImplicitStringConversion" + * - possible values: { "error", "warning", "ignore" } + * - default: "warning" * - * 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: "" + * 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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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 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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.core.compiler.taskPriorities" + * - possible values: { "<priority>[,<priority>]*" } where <priority> is one of "HIGH", "NORMAL" or "LOW" + * - 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: + * BUILDER / Specifying Filters for Resource Copying Control + * Allow to specify some filters to control the resource copy process. + * - option id: "net.sourceforge.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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, for example 'int x= 2;', when Normal, a space + * is inserted before the assignment operator + * - option id: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.phpdt.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: "net.sourceforge.phpdt.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: "net.sourceforge.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: ** String *
- * ; value type: + * ; value type: ** String *
- * ) - * @see #setOptions + * ) + * @see #setOptions * */ public static Hashtable getDefaultOptions() { @@ -2621,9 +2689,9 @@ public class JavaCore { * * @return the single instance of the Java core plug-in runtime class */ - public static PHPeclipsePlugin getJavaCore() { - return (PHPeclipsePlugin) getPlugin(); - } +// public static PHPeclipsePlugin getJavaCore() { +// return (PHPeclipsePlugin) getPlugin(); +// } /** * Helper method for returning one option value only. Equivalent to @@ -2756,23 +2824,25 @@ public class JavaCore { .isExported()); case IResource.FILE: - // if (Util.isArchiveFileName(resolvedResource.getName())) { - // // internal binary archive - // return JavaCore.newLibraryEntry( - // resolvedPath, - // getResolvedVariablePath(entry.getSourceAttachmentPath()), - // getResolvedVariablePath(entry.getSourceAttachmentRootPath()), - // entry.isExported()); - // } + // if + // (ProjectPrefUtil.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()); + // return JavaCore.newLibraryEntry( + // resolvedPath, + // getResolvedVariablePath(entry.getSourceAttachmentPath()), + // getResolvedVariablePath(entry.getSourceAttachmentRootPath()), + // entry.isExported()); break; } } @@ -2781,23 +2851,23 @@ public class JavaCore { 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()); - // } + //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 JavaCore.newLibraryEntry( + // resolvedPath, + // getResolvedVariablePath(entry.getSourceAttachmentPath()), + // getResolvedVariablePath(entry.getSourceAttachmentRootPath()), + // entry.isExported()); } } } @@ -2886,11 +2956,19 @@ public class JavaCore { preferences.setDefault(COMPILER_CODEGEN_TARGET_PLATFORM, VERSION_1_1); optionNames.add(COMPILER_CODEGEN_TARGET_PLATFORM); - preferences.setDefault(COMPILER_PB_PHP_VAR_DEPRECATED, WARNING); + preferences.setDefault(COMPILER_PB_PHP_VAR_DEPRECATED, IGNORE); optionNames.add(COMPILER_PB_PHP_VAR_DEPRECATED); - - preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, ERROR); + preferences.setDefault(COMPILER_PB_PHP_KEYWORD, WARNING); + optionNames.add(COMPILER_PB_PHP_KEYWORD); + preferences.setDefault(COMPILER_PB_PHP_UPPERCASE_IDENTIFIER, IGNORE); + optionNames.add(COMPILER_PB_PHP_UPPERCASE_IDENTIFIER); + preferences.setDefault(COMPILER_PB_PHP_FILE_NOT_EXIST, WARNING); + optionNames.add(COMPILER_PB_PHP_FILE_NOT_EXIST); + preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, WARNING); optionNames.add(COMPILER_PB_UNREACHABLE_CODE); + preferences.setDefault(COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE, + WARNING); + optionNames.add(COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE); preferences.setDefault(COMPILER_PB_INVALID_IMPORT, ERROR); optionNames.add(COMPILER_PB_INVALID_IMPORT); @@ -3032,6 +3110,12 @@ public class JavaCore { preferences.setDefault(FORMATTER_COMPACT_ASSIGNMENT, NORMAL); optionNames.add(FORMATTER_COMPACT_ASSIGNMENT); + + preferences.setDefault(FORMATTER_COMPACT_ARRAYS, NORMAL); + optionNames.add(FORMATTER_COMPACT_ARRAYS); + + preferences.setDefault(FORMATTER_COMPACT_STRING_CONCATENATION, NORMAL); + optionNames.add(FORMATTER_COMPACT_STRING_CONCATENATION); preferences.setDefault(FORMATTER_TAB_CHAR, TAB); optionNames.add(FORMATTER_TAB_CHAR); @@ -3088,48 +3172,49 @@ public class JavaCore { * if theIMarker.getAttribute
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 = 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; - // } - // } - // break; - // } - return false; - } +// 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 = 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; +// // } +// // } +// // break; +// // } +// return false; +// } /** * Returns whether the given marker delta references the given Java element. @@ -3145,49 +3230,50 @@ public class JavaCore { * if theIMarkerDelta.getAttribute
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 = 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; - // } - // } - // break; - // } - return false; - } +// 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 = 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; +// // } +// // } +// // break; +// // } +// return false; +// } /** * Creates and returns a new classpath entry of kind @@ -3204,14 +3290,15 @@ public class JavaCore { ** A container is exclusively resolved by a *
ClasspathContainerInitializer
registered onto the - * extension point "org.eclipse.jdt.core.classpathContainerInitializer". + * extension point + * "net.sourceforge.phpdt.core.classpathContainerInitializer". ** A container path must be formed of at least one segment, where: *
*
@@ -3222,7 +3309,8 @@ public class JavaCore { * containerEntry = JavaCore.newContainerEntry(new * Path("MyProvidedJDK/default")); * - *- 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". - *
+ * extension point + * "net.sourceforge.phpdt.core.classpathContainerInitializer". *- the remaining segments will be passed onto the initializer, and can * be used as additional hints during the initialization phase.
*+ * * * @@ -3242,1307 +3330,1321 @@ public class JavaCore { * @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 - *
CPE_CONTAINER
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. - *- * 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 - *
JavaCore.getResolvedClasspathContainer
, and updated with - *JavaCore.classpathContainerChanged
- *- * A container is exclusively resolved by a - *
ClasspathContainerInitializer
registered onto the - * extension point "org.eclipse.jdt.core.classpathContainerInitializer". - *- * A container path must be formed of at least one segment, where: - *
- *
- *- 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". - *
- *- the remaining segments will be passed onto the initializer, and can - * be used as additional hints during the initialization phase.
- *- * Example of an ClasspathContainerInitializer for a classpath container - * denoting a default JDK container: - * - * containerEntry = JavaCore.newContainerEntry(new - * Path("MyProvidedJDK/default")); - * - *
- *- * - * - * Note that this operation does not attempt to validate classpath - * containers or access the resources at the given paths. - *
- * - * @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 - *
CPE_LIBRARY
for the JAR or folder identified by the given - * absolute path. This specifies that all package fragments within the root - * will have children of typeIClassFile
. - *- * 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). - *
- * e.g. Here are some examples of binary path usage - *
- *
- * Note that this operation does not attempt to validate or access the - * resources at the given paths. - *- - *
"c:/jdk1.2.2/jre/lib/rt.jar"
- reference to an - * external JAR- - *
"/Project/someLib.jar"
- reference to an internal JAR - *- - *
"c:/classes/"
- reference to an external binary - * folder- * The resulting entry is not exported to dependent projects. This method is - * equivalent to
newLibraryEntry(-,-,-,false)
. - *- * - * @param path - * the absolute path of the binary archive - * @param sourceAttachmentPath - * the absolute path of the corresponding source archive or - * folder, or
null
if none - * @param sourceAttachmentRootPath - * the location of the root within the source archive or folder - * ornull
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 - *CPE_LIBRARY
for the JAR or folder identified by the given - * absolute path. This specifies that all package fragments within the root - * will have children of typeIClassFile
. - *- * 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). - *
- * e.g. Here are some examples of binary path usage - *
- *
- * Note that this operation does not attempt to validate or access the - * resources at the given paths. - *- - *
"c:/jdk1.2.2/jre/lib/rt.jar"
- reference to an - * external JAR- - *
"/Project/someLib.jar"
- reference to an internal JAR - *- - *
"c:/classes/"
- reference to an external binary - * folder- * - * @param path - * the absolute path of the binary archive - * @param sourceAttachmentPath - * the absolute path of the corresponding source archive or - * folder, or
null
if none - * @param sourceAttachmentRootPath - * the location of the root within the source archive or folder - * ornull
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 - *CPE_PROJECT
for the project identified by the given - * absolute path. - *- * 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). - *
- * A project reference allows to indirect through another project, - * independently from its internal layout. - *
- * The prerequisite project is referred to using an absolute path relative - * to the workspace root. - *
- * The resulting entry is not exported to dependent projects. This method is - * equivalent to
newProjectEntry(_,false)
. - *- * - * @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 - *
CPE_PROJECT
for the project identified by the given - * absolute path. - *- * 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). - *
- * A project reference allows to indirect through another project, - * independently from its internal layout. - *
- * The prerequisite project is referred to using an absolute path relative - * to the workspace root. - *
- * - * @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
CPE_SOURCE
- * 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 typeICompilationUnit
. - *- * The source folder is referred to using an absolute path relative to the - * workspace root, e.g.
- */Project/src
. A project's source - * folders are located with that project. That is, a source classpath entry - * specifying the path/P1/src
is only usable for project - *P1
. - *- * 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 - *
- *JavaCore.newSourceEntry(IPath,IPath[])
instead. - *- * Note that all sources/binaries inside a project are contributed as a - * whole through a project entry (see
- * - * @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 kindJavaCore.newProjectEntry
). - * Particular source entries cannot be selectively exported. - *CPE_SOURCE
- * 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 - *ICompilationUnit
. - *- * The source folder is referred to using an absolute path relative to the - * workspace root, e.g.
- */Project/src
. A project's source - * folders are located with that project. That is, a source classpath entry - * specifying the path/P1/src
is only usable for project - *P1
. - *- * 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 - *
- * 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/Project/src
and the exclusion pattern is - *com/xyz/tests/**
, then source files like - */Project/src/com/xyz/Foo.java
and - */Project/src/com/xyz/utils/Bar.java
would be included, - * whereas/Project/src/com/xyz/tests/T1.java
and - */Project/src/com/xyz/tests/quick/T2.java
would be - * excluded. Exclusion patterns can contain can contain '**', '*' or '?' - * wildcards; seeIClasspathEntry.getExclusionPatterns
for - * the full description of the syntax and semantics of exclusion patterns. - *JavaCore.newSourceEntry(IPath)
. - *- * Note that all sources/binaries inside a project are contributed as a - * whole through a project entry (see
- * - * @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 kindJavaCore.newProjectEntry
). - * Particular source entries cannot be selectively exported. - *CPE_SOURCE
- * 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 typeICompilationUnit
. - *- * The source folder is referred to using an absolute path relative to the - * workspace root, e.g.
- */Project/src
. A project's source - * folders are located with that project. That is, a source classpath entry - * specifying the path/P1/src
is only usable for project - *P1
. - *- * 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 - *
- * 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/Project/src
and the exclusion pattern is - *com/xyz/tests/**
, then source files like - */Project/src/com/xyz/Foo.java
and - */Project/src/com/xyz/utils/Bar.java
would be included, - * whereas/Project/src/com/xyz/tests/T1.java
and - */Project/src/com/xyz/tests/quick/T2.java
would be - * excluded. Exclusion patterns can contain can contain '**', '*' or '?' - * wildcards; seeIClasspathEntry.getExclusionPatterns
for - * the full description of the syntax and semantics of exclusion patterns. - *JavaCore.newSourceEntry(IPath)
. - *- * 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
- *null
). 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. - *"/Project/bin"
, it must be located inside the same - * project as the source folder. - *- * Also note that all sources/binaries inside a project are contributed as a - * whole through a project entry (see
- * - * @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 ( - *JavaCore.newProjectEntry
). - * Particular source entries cannot be selectively exported. - *null
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 - *CPE_VARIABLE
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. - *- * A variable entry allows to express indirect references on a classpath to - * other projects or libraries, depending on what the classpath variable is - * referring. - *
- * It is possible to register an automatic initializer ( - *
ClasspathVariableInitializer
), 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. - *- * e.g. Here are some examples of variable path usage - *
JDTCORE
is bound to
- * "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the
- * library "c:\jars\jdtcore.jar"JDTCORE
is bound to
- * "/Project_JDTCORE". The resolved classpath entry is denoting the project
- * "/Project_JDTCORE"PLUGINS
is bound to "c:/eclipse/plugins". The resolved
- * classpath entry is denoting the library
- * "c:/eclipse/plugins/com.example/example.jar"
- * The resulting entry is not exported to dependent projects. This method is
- * equivalent to newVariableEntry(-,-,-,false)
.
- *
- *
- * @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
- * null
if none; if present, the first segment is
- * the name of a classpath variable (not necessarily the same
- * variable as the one that begins variablePath
)
- * @param sourceAttachmentRootPath
- * the location of the root within the source archive or
- * null
if archivePath
is also
- * null
- * @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
- * CPE_VARIABLE
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.
- *
- * A variable entry allows to express indirect references on a classpath to - * other projects or libraries, depending on what the classpath variable is - * referring. - *
- * It is possible to register an automatic initializer (
- * ClasspathVariableInitializer
), 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.
- *
- * e.g. Here are some examples of variable path usage - *
JDTCORE
is bound to
- * "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the
- * library "c:\jars\jdtcore.jar"JDTCORE
is bound to
- * "/Project_JDTCORE". The resolved classpath entry is denoting the project
- * "/Project_JDTCORE"PLUGINS
is bound to "c:/eclipse/plugins". The resolved
- * classpath entry is denoting the library
- * "c:/eclipse/plugins/com.example/example.jar"
- *
- * @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
- * null
if none; if present, the first segment is
- * the name of a classpath variable (not necessarily the same
- * variable as the one that begins variablePath
)
- * @param sourceAttachmentRootPath
- * the location of the root within the source archive or
- * null
if archivePath
is also
- * null
- * @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.
- *
- * This functionality cannot be used while the resource tree is locked. - *
- * Classpath variable values are persisted locally to the workspace, and are - * preserved from session to session. - *
- * - * @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. - *
- * This functionality cannot be used while the resource tree is locked. - *
- * Classpath variable values are persisted locally to the workspace, and are - * preserved from session to session. - *
- *
- * @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 (
- * IClasspathContainer
). 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.
- *
- * containerPath
is the path under which these values can be
- * referenced through container classpath entries (
- * IClasspathEntry#CPE_CONTAINER
). 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 ClasspathContainerInitializer
registered on the
- * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
- *
- * There is no assumption that each individual container value passed in
- * argument (respectiveContainers
) must answer the exact
- * same path when requested IClasspathContainer#getPath
.
- * Indeed, the containerPath is just an indication for resolving it to an
- * actual container object. It can be delegated to a
- * ClasspathContainerInitializer
, which can be activated
- * through the extension point
- * "org.eclipse.jdt.core.ClasspathContainerInitializer").
- *
- * In reaction to changing container values, the JavaModel will be updated - * to reflect the new state of the updated container. - *
- * This functionality cannot be used while the resource tree is locked. - *
- * 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 ClasspathContainerInitializer
- * for each referenced container (through the extension point
- * "org.eclipse.jdt.core.ClasspathContainerInitializer").
- *
- * Note: setting a container to null
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.
- *
- *
- * @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
- * Classpath variable values are persisted locally to the workspace, and are
- * preserved from session to session.
- *
- *
- * @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.
- *
- * This functionality cannot be used while the resource tree is locked.
- *
- * Classpath variable values are persisted locally to the workspace, and are
- * preserved from session to session.
- *
- * 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.
- *
- * This functionality cannot be used while the resource tree is locked.
- *
- * Classpath variable values are persisted locally to the workspace, and are
- * preserved from session to session.
- *
- * 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.
- *
- * For a complete description of the configurable options, see
- *
- * De-registers the JavaModelManager as a resource changed listener and save
- * participant.
- *
- *
- * @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() {
- //
- // JavaModelManager.getJavaModelManager().getIndexManager().reset();
- //}
- /**
- * Startup of the JavaCore plug-in.
- *
- * Registers the JavaModelManager as a resource changed listener and save
- * participant. Starts the background indexing, and restore saved classpath
- * variable values.
- *
- *
- * @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 : jsurfer 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);
- // }
- // }
- // }
- //}
- /*
- * (non-Javadoc) Startup the JavaCore plug-in. Registers the
- * JavaModelManager as a resource changed listener and save participant.
- * Starts the background indexing, and restore saved classpath variable
- * values. @throws Exception
- *
- * @see org.eclipse.core.runtime.Plugin#start(BundleContext)
- */
- //public static void start(final Plugin plugin, BundleContext context)
- // throws Exception {
- //// super.start(context);
- //
- // final 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());
- //// manager.loadVariablesAndContainers();
- //
- // final IWorkspace workspace = ResourcesPlugin.getWorkspace();
- // workspace.addResourceChangeListener(
- // manager.deltaState,
- // IResourceChangeEvent.PRE_BUILD
- // | IResourceChangeEvent.POST_BUILD
- // | IResourceChangeEvent.POST_CHANGE
- // | IResourceChangeEvent.PRE_DELETE
- // | IResourceChangeEvent.PRE_CLOSE);
- //
- //// startIndexing();
- //
- // // process deltas since last activated in indexer thread so that indexes
- // are up-to-date.
- // // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658
- // Job processSavedState = new Job(Util.bind("savedState.jobName")) {
- // //$NON-NLS-1$
- // protected IStatus run(IProgressMonitor monitor) {
- // try {
- // // add save participant and process delta atomically
- // // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937
- // workspace.run(
- // new IWorkspaceRunnable() {
- // public void run(IProgressMonitor progress) throws CoreException {
- //// ISavedState savedState = workspace.addSaveParticipant(JavaCore.this,
- // manager);
- // ISavedState savedState = workspace.addSaveParticipant(plugin, manager);
- // if (savedState != null) {
- // // the event type coming from the saved state is always POST_AUTO_BUILD
- // // force it to be POST_CHANGE so that the delta processor can handle it
- // manager.deltaState.getDeltaProcessor().overridenEventType =
- // IResourceChangeEvent.POST_CHANGE;
- // savedState.processResourceChangeEvents(manager.deltaState);
- // }
- // }
- // },
- // monitor);
- // } catch (CoreException e) {
- // return e.getStatus();
- // }
- // return Status.OK_STATUS;
- // }
- // };
- // processSavedState.setSystem(true);
- // processSavedState.setPriority(Job.SHORT); // process asap
- // processSavedState.schedule();
- // } catch (RuntimeException e) {
- // manager.shutdown();
- // throw e;
- // }
- //}
- /*
- * (non-Javadoc) Shutdown the JavaCore plug-in. De-registers the
- * JavaModelManager as a resource changed listener and save participant.
- *
- * @see org.eclipse.core.runtime.Plugin#stop(BundleContext)
- */
-// public static void stop(Plugin plugin, BundleContext context)
-// throws Exception {
-// try {
-// plugin.savePluginPreferences();
-// IWorkspace workspace = ResourcesPlugin.getWorkspace();
-// workspace.removeResourceChangeListener(JavaModelManager
-// .getJavaModelManager().deltaState);
-// workspace.removeSaveParticipant(plugin);
+// public static IClasspathEntry newContainerEntry(IPath containerPath) {
+//
+// return newContainerEntry(containerPath, false);
+// }
+
+ /**
+ * Creates and returns a new classpath entry of kind
+ *
+ * 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
+ *
+ * A container is exclusively resolved by a
+ *
+ * A container path must be formed of at least one segment, where:
+ *
+ * Example of an ClasspathContainerInitializer for a classpath container
+ * denoting a default JDK container:
+ *
+ * containerEntry = JavaCore.newContainerEntry(new
+ * Path("MyProvidedJDK/default"));
+ *
+ *
+ * Note that this operation does not attempt to validate classpath
+ * containers or access the resources at the given paths.
+ *
+ *
+ * @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)
+ Assert.isTrue(false, "Container path cannot be null"); //$NON-NLS-1$
+ if (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.INCLUDE_ALL, ClasspathEntry.EXCLUDE_NONE, null, // source
+ // attachment
+ null, // source attachment root
+ null, // specific output folder
+ isExported);
+ }
+
+ /**
+ * Creates and returns a new non-exported classpath entry of kind
+ *
+ * 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).
+ *
+ * e.g. Here are some examples of binary path usage
+ *
+ * The resulting entry is not exported to dependent projects. This method is
+ * equivalent to
+ *
+ * @param path
+ * the absolute path of the binary archive
+ * @param sourceAttachmentPath
+ * the absolute path of the corresponding source archive or
+ * folder, or
+ * 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).
+ *
+ * e.g. Here are some examples of binary path usage
+ *
+ *
+ * @param path
+ * the absolute path of the binary archive
+ * @param sourceAttachmentPath
+ * the absolute path of the corresponding source archive or
+ * folder, or
+ * 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).
+ *
+ * A project reference allows to indirect through another project,
+ * independently from its internal layout.
+ *
+ * The prerequisite project is referred to using an absolute path relative
+ * to the workspace root.
+ *
+ * The resulting entry is not exported to dependent projects. This method is
+ * equivalent to
+ *
+ * @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
+ *
+ * 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).
+ *
+ * A project reference allows to indirect through another project,
+ * independently from its internal layout.
+ *
+ * The prerequisite project is referred to using an absolute path relative
+ * to the workspace root.
+ *
+ *
+ * @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.INCLUDE_ALL,
+ ClasspathEntry.EXCLUDE_NONE, 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
+ * The convenience method is fully equivalent to:
+ *
+ *
+ * The convenience method is fully equivalent to:
+ *
+ * getDefaultOptions
.
- * String
; value type:
- * String
), or null
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 = 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();
- }
-
- /**
- * Shutdown the JavaCore plug-in.
- * CPE_CONTAINER
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.
+ * JavaCore.getResolvedClasspathContainer
, and updated with
+ * JavaCore.classpathContainerChanged
+ * ClasspathContainerInitializer
registered onto the
+ * extension point
+ * "net.sourceforge.phpdt.core.classpathContainerInitializer".
+ *
+ *
+ * CPE_LIBRARY
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 IClassFile
.
+ *
+ *
+ * Note that this operation does not attempt to validate or access the
+ * resources at the given paths.
+ * "c:/jdk1.2.2/jre/lib/rt.jar"
- reference to an
+ * external JAR "/Project/someLib.jar"
- reference to an internal JAR
+ * "c:/classes/"
- reference to an external binary
+ * foldernewLibraryEntry(-,-,-,false)
.
+ * null
if none
+ * @param sourceAttachmentRootPath
+ * the location of the root within the source archive or folder
+ * or null
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
+ * CPE_LIBRARY
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 IClassFile
.
+ *
+ *
+ * Note that this operation does not attempt to validate or access the
+ * resources at the given paths.
+ * "c:/jdk1.2.2/jre/lib/rt.jar"
- reference to an
+ * external JAR "/Project/someLib.jar"
- reference to an internal JAR
+ * "c:/classes/"
- reference to an external binary
+ * foldernull
if none
+ * @param sourceAttachmentRootPath
+ * the location of the root within the source archive or folder
+ * or null
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
+ * CPE_PROJECT
for the project identified by the given
+ * absolute path.
+ * newProjectEntry(_,false)
.
+ * CPE_PROJECT
for the project identified by the given
+ * absolute path.
+ * CPE_SOURCE
+ * for all files in the project's source folder identified by the given
+ * absolute workspace-relative path.
+ *
+ * newSourceEntry(path, new IPath[] {}, new IPath[] {}, null);
+ *
+ *
+ * CPE_SOURCE
+ * 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.
+ *
+ * newSourceEntry(path, new IPath[] {}, exclusionPatterns, null);
+ *
+ *
+ *
CPE_SOURCE
+ * 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).
+ * + * The convenience method is fully equivalent to: + * + *
+ * newSourceEntry(path, new IPath[] {}, exclusionPatterns, specificOutputLocation); + *+ * + * + * + * @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 specificOutputLocation + * the specific output location for this source entry (
null
+ * if using project default ouput location)
+ * @return a new source classpath entry
+ * @see #newSourceEntry(IPath, IPath[], IPath[], IPath)
+ * @since 2.1
+ */
+ public static IClasspathEntry newSourceEntry(IPath path,
+ IPath[] exclusionPatterns, IPath specificOutputLocation) {
+
+ return newSourceEntry(path, ClasspathEntry.INCLUDE_ALL,
+ exclusionPatterns, specificOutputLocation);
+ }
+
+ /**
+ * Creates and returns a new classpath entry of kind CPE_SOURCE
+ * for the project's source folder identified by the given absolute
+ * workspace-relative path using the given inclusion and exclusion patterns
+ * to determine which source files are included, and the given output path
+ * to control the output location of generated files.
+ *
+ * The source folder is referred to using an absolute path relative to the
+ * workspace root, e.g. /Project/src
. A project's source
+ * folders are located with that project. That is, a source classpath entry
+ * specifying the path /P1/src
is only usable for project
+ * P1
.
+ *
+ * The inclusion patterns determines the initial set of source files that
+ * are to be included; the exclusion patterns are then used to reduce this
+ * set. When no inclusion patterns are specified, the initial file set
+ * includes all relevent files in the resource tree rooted at the source
+ * entry's path. On the other hand, specifying one or more inclusion
+ * patterns means that all and only files matching at least one of
+ * the specified patterns are to be included. If exclusion patterns are
+ * specified, the initial set of files is then reduced by eliminating files
+ * matched by at least one of the exclusion patterns. Inclusion and
+ * exclusion patterns look like relative file paths with wildcards and are
+ * interpreted relative to the source entry's path. File patterns are
+ * case-sensitive can contain '**', '*' or '?' wildcards (see
+ * {@link IClasspathEntry#getExclusionPatterns()} for the full description
+ * of their syntax and semantics). The resulting set of files are included
+ * in the corresponding package fragment root; all package fragments within
+ * the root will have children of type ICompilationUnit
.
+ *
+ * For example, if the source folder path is /Project/src
,
+ * there are no inclusion filters, and the exclusion pattern is
+ * com/xyz/tests/**
, then source files like
+ * /Project/src/com/xyz/Foo.java
and
+ * /Project/src/com/xyz/utils/Bar.java
would be included,
+ * whereas /Project/src/com/xyz/tests/T1.java
and
+ * /Project/src/com/xyz/tests/quick/T2.java
would be
+ * excluded.
+ *
+ * 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 null
). 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.
+ * "/Project/bin"
, it must be located inside the same
+ * project as the source folder.
+ *
+ * Also note that all sources/binaries inside a project are contributed as a
+ * whole through a project entry (see JavaCore.newProjectEntry
).
+ * Particular source entries cannot be selectively exported.
+ *
null
+ * if using project default ouput location)
+ * @return a new source classpath entry with the given exclusion patterns
+ * @see IClasspathEntry#getInclusionPatterns()
+ * @see IClasspathEntry#getExclusionPatterns()
+ * @see IClasspathEntry#getOutputLocation()
+ * @since 3.0
+ */
+ public static IClasspathEntry newSourceEntry(IPath path,
+ IPath[] inclusionPatterns, IPath[] exclusionPatterns,
+ IPath specificOutputLocation) {
+
+ if (path == null)
+ Assert.isTrue(false, "Source path cannot be null"); //$NON-NLS-1$
+ 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$
+ if (inclusionPatterns == null)
+ Assert.isTrue(false, "Inclusion pattern set cannot be null"); //$NON-NLS-1$
+
+ return new ClasspathEntry(IPackageFragmentRoot.K_SOURCE,
+ IClasspathEntry.CPE_SOURCE, path, inclusionPatterns,
+ exclusionPatterns, null, // source attachment
+ null, // source attachment root
+ specificOutputLocation, // custom output location
+ false);
+ }
+
+ /**
+ * Creates and returns a new non-exported classpath entry of kind
+ * CPE_VARIABLE
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.
+ * + * A variable entry allows to express indirect references on a classpath to + * other projects or libraries, depending on what the classpath variable is + * referring. + *
+ * It is possible to register an automatic initializer (
+ * ClasspathVariableInitializer
), which will be invoked
+ * through the extension point
+ * "net.sourceforge.phpdt.core.classpathVariableInitializer". After
+ * resolution, a classpath variable entry may either correspond to a project
+ * or a library entry.
+ *
+ * e.g. Here are some examples of variable path usage + *
JDTCORE
is bound to
+ * "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the
+ * library "c:\jars\jdtcore.jar"JDTCORE
is bound to
+ * "/Project_JDTCORE". The resolved classpath entry is denoting the project
+ * "/Project_JDTCORE"PLUGINS
is bound to "c:/eclipse/plugins". The resolved
+ * classpath entry is denoting the library
+ * "c:/eclipse/plugins/com.example/example.jar"
+ * The resulting entry is not exported to dependent projects. This method is
+ * equivalent to newVariableEntry(-,-,-,false)
.
+ *
+ *
+ * @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
+ * null
if none; if present, the first segment is
+ * the name of a classpath variable (not necessarily the same
+ * variable as the one that begins variablePath
)
+ * @param sourceAttachmentRootPath
+ * the location of the root within the source archive or
+ * null
if archivePath
is also
+ * null
+ * @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
+ * CPE_VARIABLE
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.
+ *
+ * A variable entry allows to express indirect references on a classpath to + * other projects or libraries, depending on what the classpath variable is + * referring. + *
+ * It is possible to register an automatic initializer (
+ * ClasspathVariableInitializer
), which will be invoked
+ * through the extension point
+ * "net.sourceforge.phpdt.core.classpathVariableInitializer". After
+ * resolution, a classpath variable entry may either correspond to a project
+ * or a library entry.
+ *
+ * e.g. Here are some examples of variable path usage + *
JDTCORE
is bound to
+ * "c:/jars/jdtcore.jar". The resolved classpath entry is denoting the
+ * library "c:\jars\jdtcore.jar"JDTCORE
is bound to
+ * "/Project_JDTCORE". The resolved classpath entry is denoting the project
+ * "/Project_JDTCORE"PLUGINS
is bound to "c:/eclipse/plugins". The resolved
+ * classpath entry is denoting the library
+ * "c:/eclipse/plugins/com.example/example.jar"
+ *
+ * @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
+ * null
if none; if present, the first segment is
+ * the name of a classpath variable (not necessarily the same
+ * variable as the one that begins variablePath
)
+ * @param sourceAttachmentRootPath
+ * the location of the root within the source archive or
+ * null
if archivePath
is also
+ * null
+ * @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.
+ *
+ * This functionality cannot be used while the resource tree is locked. + *
+ * Classpath variable values are persisted locally to the workspace, and are + * preserved from session to session. + *
+ * + * @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. + *
+ * This functionality cannot be used while the resource tree is locked. + *
+ * Classpath variable values are persisted locally to the workspace, and are + * preserved from session to session. + *
+ *
+ * @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 (
+ * IClasspathContainer
). 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.
+ *
+ * containerPath
is the path under which these values can be
+ * referenced through container classpath entries (
+ * IClasspathEntry#CPE_CONTAINER
). 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 ClasspathContainerInitializer
registered on the
+ * extension point
+ * "net.sourceforge.phpdt.core.classpathContainerInitializer".
+ *
+ * There is no assumption that each individual container value passed in
+ * argument (respectiveContainers
) must answer the exact
+ * same path when requested IClasspathContainer#getPath
.
+ * Indeed, the containerPath is just an indication for resolving it to an
+ * actual container object. It can be delegated to a
+ * ClasspathContainerInitializer
, which can be activated
+ * through the extension point
+ * "net.sourceforge.phpdt.core.ClasspathContainerInitializer").
+ *
+ * In reaction to changing container values, the JavaModel will be updated + * to reflect the new state of the updated container. + *
+ * This functionality cannot be used while the resource tree is locked. + *
+ * 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 ClasspathContainerInitializer
+ * for each referenced container (through the extension point
+ * "net.sourceforge.phpdt.core.ClasspathContainerInitializer").
+ *
+ * Note: setting a container to null
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.
+ *
+ *
+ * @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$
+ // + (ProjectPrefUtil.toString(affectedProjects,
+ // new ProjectPrefUtil.Displayable(){
+ // public String displayString(Object o) { return ((IJavaProject)
+ // o).getElementName(); }
+ // }))
+ // + "} with values: " //$NON-NLS-1$
+ // + (ProjectPrefUtil.toString(respectiveContainers,
+ // new ProjectPrefUtil.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
+ * Classpath variable values are persisted locally to the workspace, and are
+ * preserved from session to session.
+ *
+ *
+ * @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.
+ *
+ * This functionality cannot be used while the resource tree is locked.
+ *
+ * Classpath variable values are persisted locally to the workspace, and are
+ * preserved from session to session.
+ *
+ * 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.
+ *
+ * This functionality cannot be used while the resource tree is locked.
+ *
+ * Classpath variable values are persisted locally to the workspace, and are
+ * preserved from session to session.
+ *
+ * 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.
+ *
+ * For a complete description of the configurable options, see
+ *
+ * De-registers the JavaModelManager as a resource changed listener and save
+ * participant.
+ *
+ *
+ * @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() {
+ //
+ // JavaModelManager.getJavaModelManager().getIndexManager().reset();
+ // }
+ /**
+ * Startup of the JavaCore plug-in.
+ *
+ * Registers the JavaModelManager as a resource changed listener and save
+ * participant. Starts the background indexing, and restore saved classpath
+ * variable values.
+ *
+ *
+ * @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 : jsurfer 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: {" +
+ // ProjectPrefUtil.toString(variableNames) //$NON-NLS-1$
+ // + "} with values: " + ProjectPrefUtil.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: "+
+ // ProjectPrefUtil.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:
+ // "+ProjectPrefUtil.toString(dbgVariableNames)); //$NON-NLS-1$
+ // e.printStackTrace();
+ // }
+ // if (e instanceof JavaModelException) {
+ // throw (JavaModelException)e;
+ // } else {
+ // throw new JavaModelException(e);
+ // }
+ // }
+ // }
+ // }
+ /*
+ * (non-Javadoc) Startup the JavaCore plug-in. Registers the
+ * JavaModelManager as a resource changed listener and save participant.
+ * Starts the background indexing, and restore saved classpath variable
+ * values. @throws Exception
+ *
+ * @see org.eclipse.core.runtime.Plugin#start(BundleContext)
+ */
+ // public static void start(final Plugin plugin, BundleContext context)
+ // throws Exception {
+ // // super.start(context);
+ //
+ // final 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());
+ // // manager.loadVariablesAndContainers();
+ //
+ // final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ // workspace.addResourceChangeListener(
+ // manager.deltaState,
+ // IResourceChangeEvent.PRE_BUILD
+ // | IResourceChangeEvent.POST_BUILD
+ // | IResourceChangeEvent.POST_CHANGE
+ // | IResourceChangeEvent.PRE_DELETE
+ // | IResourceChangeEvent.PRE_CLOSE);
+ //
+ // // startIndexing();
+ //
+ // // process deltas since last activated in indexer thread so that indexes
+ // are up-to-date.
+ // // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658
+ // Job processSavedState = new
+ // Job(ProjectPrefUtil.bind("savedState.jobName")) {
+ // //$NON-NLS-1$
+ // protected IStatus run(IProgressMonitor monitor) {
+ // try {
+ // // add save participant and process delta atomically
+ // // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937
+ // workspace.run(
+ // new IWorkspaceRunnable() {
+ // public void run(IProgressMonitor progress) throws CoreException {
+ // // ISavedState savedState = workspace.addSaveParticipant(JavaCore.this,
+ // manager);
+ // ISavedState savedState = workspace.addSaveParticipant(plugin, manager);
+ // if (savedState != null) {
+ // // the event type coming from the saved state is always POST_AUTO_BUILD
+ // // force it to be POST_CHANGE so that the delta processor can handle it
+ // manager.deltaState.getDeltaProcessor().overridenEventType =
+ // IResourceChangeEvent.POST_CHANGE;
+ // savedState.processResourceChangeEvents(manager.deltaState);
+ // }
+ // }
+ // },
+ // monitor);
+ // } catch (CoreException e) {
+ // return e.getStatus();
+ // }
+ // return Status.OK_STATUS;
+ // }
+ // };
+ // processSavedState.setSystem(true);
+ // processSavedState.setPriority(Job.SHORT); // process asap
+ // processSavedState.schedule();
+ // } catch (RuntimeException e) {
+ // manager.shutdown();
+ // throw e;
+ // }
+ // }
+ /*
+ * (non-Javadoc) Shutdown the JavaCore plug-in. De-registers the
+ * JavaModelManager as a resource changed listener and save participant.
+ *
+ * @see org.eclipse.core.runtime.Plugin#stop(BundleContext)
+ */
+ // public static void stop(Plugin plugin, BundleContext context)
+ // throws Exception {
+ // try {
+ // plugin.savePluginPreferences();
+ // IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ // workspace.removeResourceChangeListener(JavaModelManager
+ // .getJavaModelManager().deltaState);
+ // workspace.removeSaveParticipant(plugin);
+ //
+ // JavaModelManager.getJavaModelManager().shutdown();
+ // } finally {
+ // // ensure we call super.stop as the last thing
+ // // super.stop(context);
+ // }
+ // }
}
\ No newline at end of file
getDefaultOptions
.
+ * String
; value type:
+ * String
), or null
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 = 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();
+ }
+
+ /**
+ * Shutdown the JavaCore plug-in.
+ *