X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPCore.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPCore.java
index 0f812e3..52d906b 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPCore.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPCore.java
@@ -1,6 +1,9 @@
package net.sourceforge.phpeclipse;
import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Hashtable;
import java.util.List;
import net.sourceforge.phpeclipse.resourcesview.PHPFile;
@@ -9,14 +12,668 @@ import net.sourceforge.phpeclipse.resourcesview.PHPProject;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Preferences;
public class PHPCore {
+ public static HashSet OptionNames = new HashSet(20);
+ /**
+ * The plug-in identifier of the Java core support
+ * (value "org.phpeclipse.phpdt.core"
).
+ */
+ public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.core"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
+ /**
+ * Possible configurable option ID.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String INSERT = "insert"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
+
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String NORMAL = "normal"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String COMPACT = "compact"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String TAB = "tab"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String SPACE = "space"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String ENABLED = "enabled"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.0
+ */
+ public static final String DISABLED = "disabled"; //$NON-NLS-1$
+ /**
+ * Possible configurable option value.
+ * @see #getDefaultOptions
+ * @since 2.1
+ */
+ public static final String CLEAN = "clean"; //$NON-NLS-1$
+
+ /**
+ * Returns a table of all known configurable options with their default values.
+ * These options allow to configure the behaviour of the underlying components.
+ * The client may safely use the result as a template that they can modify and
+ * then pass to setOptions
.
+ *
+ * Helper constants have been defined on JavaCore for each of the option ID and
+ * their possible constant values.
+ *
+ * Note: more options might be added in further releases.
+ *
+ * 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-+ * + * @return a mutable table containing the default settings of all known options + * (key type:$). + * - 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: " " where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]* } where 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: + * + * 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: " ", 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: " ", 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where 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: { " [, ]*" } where is a String without any wild-card + * - default: "" + *
String
; value type: String
)
+ * @see #setOptions
+ */
+ public static Hashtable getDefaultOptions() {
+
+ Hashtable defaultOptions = new Hashtable(10);
+
+ // see #initializeDefaultPluginPreferences() for changing default settings
+ Preferences preferences = getPlugin().getPluginPreferences();
+ HashSet optionNames = OptionNames;
+
+ // get preferences set to their default
+ String[] defaultPropertyNames = preferences.defaultPropertyNames();
+ for (int i = 0; i < defaultPropertyNames.length; i++) {
+ String propertyName = defaultPropertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ defaultOptions.put(
+ propertyName,
+ preferences.getDefaultString(propertyName));
+ }
+ }
+ // get preferences not set to their default
+ String[] propertyNames = preferences.propertyNames();
+ for (int i = 0; i < propertyNames.length; i++) {
+ String propertyName = propertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ defaultOptions.put(
+ propertyName,
+ preferences.getDefaultString(propertyName));
+ }
+ }
+ // get encoding through resource plugin
+ defaultOptions.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
+
+ return defaultOptions;
+ }
+ /**
+ * Helper method for returning one option value only. Equivalent to (String)JavaCore.getOptions().get(optionName)
+ * Note that it may answer null
if this option does not exist.
+ *
+ * For a complete description of the configurable options, see getDefaultOptions
.
+ *
+ * For a complete description of the configurable options, see getDefaultOptions
.
+ *
String
; value type: String
)
+ * @see JavaCore#getDefaultOptions
+ */
+ public static Hashtable getOptions() {
+
+ Hashtable options = new Hashtable(10);
+
+ // see #initializeDefaultPluginPreferences() for changing default settings
+ Plugin plugin = getPlugin();
+ if (plugin != null) {
+ Preferences preferences = getPlugin().getPluginPreferences();
+ HashSet optionNames = OptionNames;
+
+ // get preferences set to their default
+ String[] defaultPropertyNames = preferences.defaultPropertyNames();
+ for (int i = 0; i < defaultPropertyNames.length; i++) {
+ String propertyName = defaultPropertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ options.put(propertyName, preferences.getDefaultString(propertyName));
+ }
+ }
+ // get preferences not set to their default
+ String[] propertyNames = preferences.propertyNames();
+ for (int i = 0; i < propertyNames.length; i++) {
+ String propertyName = propertyNames[i];
+ if (optionNames.contains(propertyName)) {
+ options.put(propertyName, preferences.getString(propertyName).trim());
+ }
+ }
+ // get encoding through resource plugin
+ options.put(CORE_ENCODING, ResourcesPlugin.getEncoding());
+ }
+ return options;
+ }
+ /**
+ * Sets the current table of options. All and only the options explicitly included in the given table
+ * are remembered; all previous option settings are forgotten, including ones not explicitly
+ * mentioned.
+ *
+ * For a complete description of the configurable options, see 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 = getDefaultOptions();
+ }
+ Enumeration keys = newOptions.keys();
+ while (keys.hasMoreElements()) {
+ String key = (String) keys.nextElement();
+ if (!OptionNames.contains(key))
+ continue; // unrecognized option
+ if (key.equals(CORE_ENCODING))
+ continue; // skipped, contributed by resource prefs
+ String value = (String) newOptions.get(key);
+ preferences.setValue(key, value);
+ }
+
+ // persist options
+ getPlugin().savePluginPreferences();
+ }
public static IProject[] getPHPProjects() {
List phpProjectsList = new ArrayList();
- IProject[] workspaceProjects = PHPeclipsePlugin.getWorkspace().getRoot().getProjects();
+ IProject[] workspaceProjects =
+ PHPeclipsePlugin.getWorkspace().getRoot().getProjects();
for (int i = 0; i < workspaceProjects.length; i++) {
IProject iProject = workspaceProjects[i];
@@ -29,7 +686,8 @@ public class PHPCore {
}
public static PHPProject getPHPProject(String name) {
- IProject aProject = PHPeclipsePlugin.getWorkspace().getRoot().getProject(name);
+ IProject aProject =
+ PHPeclipsePlugin.getWorkspace().getRoot().getProject(name);
if (isPHPProject(aProject)) {
PHPProject thePHPProject = new PHPProject();
thePHPProject.setProject(aProject);
@@ -72,13 +730,15 @@ public class PHPCore {
return project;
}
} catch (CoreException e) {
- System.err.println("Exception occurred in PHPCore#create(IProject): " + e.toString());
+ System.err.println(
+ "Exception occurred in PHPCore#create(IProject): " + e.toString());
}
return null;
}
- public static void addPHPNature(IProject project, IProgressMonitor monitor) throws CoreException {
+ public static void addPHPNature(IProject project, IProgressMonitor monitor)
+ throws CoreException {
if (!project.hasNature(PHPeclipsePlugin.PHP_NATURE_ID)) {
IProjectDescription description = project.getDescription();
String[] prevNatures = description.getNatureIds();
@@ -89,4 +749,184 @@ public class PHPCore {
project.setDescription(description, monitor);
}
}
+
+ /**
+ * Returns the single instance of the PHP core plug-in runtime class.
+ *
+ * @return the single instance of the PHP core plug-in runtime class
+ */
+ public static Plugin getPlugin() {
+ return PHPeclipsePlugin.getDefault();
+ }
+
+/**
+ * Initializes the default preferences settings for this plug-in.
+ */
+ protected static void initializeDefaultPluginPreferences() {
+
+ Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences();
+ HashSet optionNames = OptionNames;
+
+// // Compiler settings
+// preferences.setDefault(COMPILER_LOCAL_VARIABLE_ATTR, GENERATE);
+// optionNames.add(COMPILER_LOCAL_VARIABLE_ATTR);
+//
+// preferences.setDefault(COMPILER_LINE_NUMBER_ATTR, GENERATE);
+// optionNames.add(COMPILER_LINE_NUMBER_ATTR);
+//
+// preferences.setDefault(COMPILER_SOURCE_FILE_ATTR, GENERATE);
+// optionNames.add(COMPILER_SOURCE_FILE_ATTR);
+//
+// preferences.setDefault(COMPILER_CODEGEN_UNUSED_LOCAL, PRESERVE);
+// optionNames.add(COMPILER_CODEGEN_UNUSED_LOCAL);
+//
+// preferences.setDefault(COMPILER_CODEGEN_TARGET_PLATFORM, VERSION_1_1);
+// optionNames.add(COMPILER_CODEGEN_TARGET_PLATFORM);
+//
+// preferences.setDefault(COMPILER_PB_UNREACHABLE_CODE, ERROR);
+// optionNames.add(COMPILER_PB_UNREACHABLE_CODE);
+//
+// preferences.setDefault(COMPILER_PB_INVALID_IMPORT, ERROR);
+// optionNames.add(COMPILER_PB_INVALID_IMPORT);
+//
+// preferences.setDefault(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, WARNING);
+// optionNames.add(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD);
+//
+// preferences.setDefault(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME, WARNING);
+// optionNames.add(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME);
+//
+// preferences.setDefault(COMPILER_PB_DEPRECATION, WARNING);
+// optionNames.add(COMPILER_PB_DEPRECATION);
+//
+// preferences.setDefault(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE, DISABLED);
+// optionNames.add(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE);
+//
+// preferences.setDefault(COMPILER_PB_HIDDEN_CATCH_BLOCK, WARNING);
+// optionNames.add(COMPILER_PB_HIDDEN_CATCH_BLOCK);
+//
+// preferences.setDefault(COMPILER_PB_UNUSED_LOCAL, IGNORE);
+// optionNames.add(COMPILER_PB_UNUSED_LOCAL);
+//
+// preferences.setDefault(COMPILER_PB_UNUSED_PARAMETER, IGNORE);
+// optionNames.add(COMPILER_PB_UNUSED_PARAMETER);
+//
+// preferences.setDefault(COMPILER_PB_UNUSED_IMPORT, WARNING);
+// optionNames.add(COMPILER_PB_UNUSED_IMPORT);
+//
+// preferences.setDefault(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, IGNORE);
+// optionNames.add(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION);
+//
+// preferences.setDefault(COMPILER_PB_NON_NLS_STRING_LITERAL, IGNORE);
+// optionNames.add(COMPILER_PB_NON_NLS_STRING_LITERAL);
+//
+// preferences.setDefault(COMPILER_PB_ASSERT_IDENTIFIER, IGNORE);
+// optionNames.add(COMPILER_PB_ASSERT_IDENTIFIER);
+//
+// preferences.setDefault(COMPILER_PB_STATIC_ACCESS_RECEIVER, WARNING);
+// optionNames.add(COMPILER_PB_STATIC_ACCESS_RECEIVER);
+//
+// preferences.setDefault(COMPILER_PB_NO_EFFECT_ASSIGNMENT, WARNING);
+// optionNames.add(COMPILER_PB_NO_EFFECT_ASSIGNMENT);
+//
+// preferences.setDefault(COMPILER_TASK_TAGS, ""); //$NON-NLS-1$
+// optionNames.add(COMPILER_TASK_TAGS);
+//
+// preferences.setDefault(COMPILER_TASK_PRIORITIES, ""); //$NON-NLS-1$
+// optionNames.add(COMPILER_TASK_PRIORITIES);
+//
+// preferences.setDefault(COMPILER_SOURCE, VERSION_1_3);
+// optionNames.add(COMPILER_SOURCE);
+//
+// preferences.setDefault(COMPILER_COMPLIANCE, VERSION_1_3);
+// optionNames.add(COMPILER_COMPLIANCE);
+//
+// preferences.setDefault(COMPILER_PB_MAX_PER_UNIT, "100"); //$NON-NLS-1$
+// optionNames.add(COMPILER_PB_MAX_PER_UNIT);
+//
+// // Builder settings
+// preferences.setDefault(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, ""); //$NON-NLS-1$
+// optionNames.add(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER);
+//
+// preferences.setDefault(CORE_JAVA_BUILD_INVALID_CLASSPATH, ABORT);
+// optionNames.add(CORE_JAVA_BUILD_INVALID_CLASSPATH);
+//
+// preferences.setDefault(CORE_JAVA_BUILD_DUPLICATE_RESOURCE, WARNING);
+// optionNames.add(CORE_JAVA_BUILD_DUPLICATE_RESOURCE);
+//
+// preferences.setDefault(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, CLEAN);
+// optionNames.add(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER);
+//
+// // JavaCore settings
+// preferences.setDefault(CORE_JAVA_BUILD_ORDER, IGNORE);
+// optionNames.add(CORE_JAVA_BUILD_ORDER);
+//
+// preferences.setDefault(CORE_CIRCULAR_CLASSPATH, ERROR);
+// optionNames.add(CORE_CIRCULAR_CLASSPATH);
+//
+// preferences.setDefault(CORE_INCOMPLETE_CLASSPATH, ERROR);
+// optionNames.add(CORE_INCOMPLETE_CLASSPATH);
+
+ // encoding setting comes from resource plug-in
+ optionNames.add(CORE_ENCODING);
+
+ // Formatter settings
+ preferences.setDefault(FORMATTER_NEWLINE_OPENING_BRACE, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_OPENING_BRACE);
+
+ preferences.setDefault(FORMATTER_NEWLINE_CONTROL, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_CONTROL);
+
+ preferences.setDefault(FORMATTER_CLEAR_BLANK_LINES, PRESERVE_ONE);
+ optionNames.add(FORMATTER_CLEAR_BLANK_LINES);
+
+ preferences.setDefault(FORMATTER_NEWLINE_ELSE_IF, DO_NOT_INSERT);
+ optionNames.add(FORMATTER_NEWLINE_ELSE_IF);
+
+ preferences.setDefault(FORMATTER_NEWLINE_EMPTY_BLOCK, INSERT);
+ optionNames.add(FORMATTER_NEWLINE_EMPTY_BLOCK);
+
+ preferences.setDefault(FORMATTER_LINE_SPLIT, "80"); //$NON-NLS-1$
+ optionNames.add(FORMATTER_LINE_SPLIT);
+
+ preferences.setDefault(FORMATTER_COMPACT_ASSIGNMENT, NORMAL);
+ optionNames.add(FORMATTER_COMPACT_ASSIGNMENT);
+
+ preferences.setDefault(FORMATTER_TAB_CHAR, TAB);
+ optionNames.add(FORMATTER_TAB_CHAR);
+
+ preferences.setDefault(FORMATTER_TAB_SIZE, "4"); //$NON-NLS-1$
+ optionNames.add(FORMATTER_TAB_SIZE);
+
+ // CodeAssist settings
+// preferences.setDefault(CODEASSIST_VISIBILITY_CHECK, DISABLED); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_VISIBILITY_CHECK);
+//
+// preferences.setDefault(CODEASSIST_IMPLICIT_QUALIFICATION, DISABLED); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_IMPLICIT_QUALIFICATION);
+//
+// preferences.setDefault(CODEASSIST_FIELD_PREFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_FIELD_PREFIXES);
+//
+// preferences.setDefault(CODEASSIST_STATIC_FIELD_PREFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_STATIC_FIELD_PREFIXES);
+//
+// preferences.setDefault(CODEASSIST_LOCAL_PREFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_LOCAL_PREFIXES);
+//
+// preferences.setDefault(CODEASSIST_ARGUMENT_PREFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_ARGUMENT_PREFIXES);
+//
+// preferences.setDefault(CODEASSIST_FIELD_SUFFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_FIELD_SUFFIXES);
+//
+// preferences.setDefault(CODEASSIST_STATIC_FIELD_SUFFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_STATIC_FIELD_SUFFIXES);
+//
+// preferences.setDefault(CODEASSIST_LOCAL_SUFFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_LOCAL_SUFFIXES);
+//
+// preferences.setDefault(CODEASSIST_ARGUMENT_SUFFIXES, ""); //$NON-NLS-1$
+// optionNames.add(CODEASSIST_ARGUMENT_SUFFIXES);
+
+ }
}
\ No newline at end of file