1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / preferences / CompilerConfigurationBlock.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CompilerConfigurationBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CompilerConfigurationBlock.java
new file mode 100644 (file)
index 0000000..ef2bd0b
--- /dev/null
@@ -0,0 +1,772 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.internal.ui.preferences;
+
+//import java.util.ArrayList;
+import java.util.Map;
+
+import net.sourceforge.phpdt.core.IJavaProject;
+import net.sourceforge.phpdt.core.JavaCore;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
+import net.sourceforge.phpdt.internal.ui.util.PixelConverter;
+import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
+import net.sourceforge.phpdt.internal.ui.wizards.IStatusChangeListener;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ */
+public class CompilerConfigurationBlock extends OptionsConfigurationBlock {
+
+       // Preference store keys, see JavaCore.getOptions
+       private static final String PREF_PB_PHP_VAR_DEPRECATED = JavaCore.COMPILER_PB_PHP_VAR_DEPRECATED;
+
+       private static final String PREF_PB_PHP_KEYWORD = JavaCore.COMPILER_PB_PHP_KEYWORD;
+
+       private static final String PREF_PB_PHP_UPPERCASE_IDENTIFIER = JavaCore.COMPILER_PB_PHP_UPPERCASE_IDENTIFIER;
+
+       private static final String PREF_PB_PHP_FILE_NOT_EXIST = JavaCore.COMPILER_PB_PHP_FILE_NOT_EXIST;
+
+       private static final String PREF_PB_UNREACHABLE_CODE = JavaCore.COMPILER_PB_UNREACHABLE_CODE;
+
+       private static final String PREF_PB_UNINITIALIZED_LOCAL_VARIABLE = JavaCore.COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE;
+
+       // private static final String PREF_LOCAL_VARIABLE_ATTR=
+       // JavaCore.COMPILER_LOCAL_VARIABLE_ATTR;
+       // private static final String PREF_LINE_NUMBER_ATTR=
+       // JavaCore.COMPILER_LINE_NUMBER_ATTR;
+       // private static final String PREF_SOURCE_FILE_ATTR=
+       // JavaCore.COMPILER_SOURCE_FILE_ATTR;
+       // private static final String PREF_CODEGEN_UNUSED_LOCAL=
+       // JavaCore.COMPILER_CODEGEN_UNUSED_LOCAL;
+       // private static final String PREF_CODEGEN_TARGET_PLATFORM=
+       // JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM;
+       // private static final String PREF_PB_UNREACHABLE_CODE=
+       // JavaCore.COMPILER_PB_UNREACHABLE_CODE;
+       // private static final String PREF_PB_INVALID_IMPORT=
+       // JavaCore.COMPILER_PB_INVALID_IMPORT;
+       // private static final String PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD=
+       // JavaCore.COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD;
+       // private static final String PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME=
+       // JavaCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME;
+       // private static final String PREF_PB_DEPRECATION=
+       // JavaCore.COMPILER_PB_DEPRECATION;
+       // private static final String PREF_PB_DEPRECATION_WHEN_OVERRIDING=
+       // JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD;
+
+       // private static final String PREF_PB_HIDDEN_CATCH_BLOCK=
+       // JavaCore.COMPILER_PB_HIDDEN_CATCH_BLOCK;
+       // private static final String PREF_PB_UNUSED_LOCAL=
+       // JavaCore.COMPILER_PB_UNUSED_LOCAL;
+       // private static final String PREF_PB_UNUSED_PARAMETER=
+       // JavaCore.COMPILER_PB_UNUSED_PARAMETER;
+       // private static final String PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING=
+       // JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE;
+       // private static final String PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT=
+       // JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT;
+       // private static final String PREF_PB_SYNTHETIC_ACCESS_EMULATION=
+       // JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION;
+       // private static final String PREF_PB_NON_EXTERNALIZED_STRINGS=
+       // JavaCore.COMPILER_PB_NON_NLS_STRING_LITERAL;
+       // private static final String PREF_PB_ASSERT_AS_IDENTIFIER=
+       // JavaCore.COMPILER_PB_ASSERT_IDENTIFIER;
+       private static final String PREF_PB_MAX_PER_UNIT = JavaCore.COMPILER_PB_MAX_PER_UNIT;
+
+       // private static final String PREF_PB_UNUSED_IMPORT=
+       // JavaCore.COMPILER_PB_UNUSED_IMPORT;
+       // private static final String PREF_PB_UNUSED_PRIVATE=
+       // JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER;
+       // private static final String PREF_PB_STATIC_ACCESS_RECEIVER=
+       // JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER;
+       // private static final String PREF_PB_NO_EFFECT_ASSIGNMENT=
+       // JavaCore.COMPILER_PB_NO_EFFECT_ASSIGNMENT;
+       // private static final String PREF_PB_CHAR_ARRAY_IN_CONCAT=
+       // JavaCore.COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION;
+       // private static final String
+       // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT=
+       // JavaCore.COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT;
+       // private static final String PREF_PB_LOCAL_VARIABLE_HIDING=
+       // JavaCore.COMPILER_PB_LOCAL_VARIABLE_HIDING;
+       // private static final String PREF_PB_FIELD_HIDING=
+       // JavaCore.COMPILER_PB_FIELD_HIDING;
+       // private static final String PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD=
+       // JavaCore.COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD;
+       // private static final String PREF_PB_INDIRECT_STATIC_ACCESS=
+       // JavaCore.COMPILER_PB_INDIRECT_STATIC_ACCESS;
+       // private static final String PREF_PB_SUPERFLUOUS_SEMICOLON=
+       // JavaCore.COMPILER_PB_SUPERFLUOUS_SEMICOLON;
+       // private static final String PREF_PB_UNNECESSARY_TYPE_CHECK=
+       // JavaCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK;
+
+       // private static final String PREF_PB_INVALID_JAVADOC=
+       // JavaCore.COMPILER_PB_INVALID_JAVADOC;
+       // private static final String PREF_PB_INVALID_JAVADOC_TAGS=
+       // JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS;
+       // private static final String PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY=
+       // JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY;
+       //
+       // private static final String PREF_PB_MISSING_JAVADOC_TAGS=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS;
+       // private static final String PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY;
+       // private static final String PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING;
+       //
+       // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS;
+       // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY;
+       // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING=
+       // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING;
+       //      
+       // private static final String PREF_SOURCE_COMPATIBILITY=
+       // JavaCore.COMPILER_SOURCE;
+       // private static final String PREF_COMPLIANCE=
+       // JavaCore.COMPILER_COMPLIANCE;
+       //
+       // private static final String PREF_RESOURCE_FILTER=
+       // JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER;
+       // private static final String PREF_BUILD_INVALID_CLASSPATH=
+       // JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH;
+       // private static final String PREF_BUILD_CLEAN_OUTPUT_FOLDER=
+       // JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER;
+       // private static final String PREF_ENABLE_EXCLUSION_PATTERNS=
+       // JavaCore.CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS;
+       // private static final String PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS=
+       // JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS;
+       //
+       // private static final String PREF_PB_INCOMPLETE_BUILDPATH=
+       // JavaCore.CORE_INCOMPLETE_CLASSPATH;
+       // private static final String PREF_PB_CIRCULAR_BUILDPATH=
+       // JavaCore.CORE_CIRCULAR_CLASSPATH;
+       // // private static final String PREF_PB_INCOMPATIBLE_JDK_LEVEL=
+       // JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL;
+       // private static final String PREF_PB_DEPRECATION_IN_DEPRECATED_CODE=
+       // JavaCore.COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE;
+       // private static final String PREF_PB_DUPLICATE_RESOURCE=
+       // JavaCore.CORE_JAVA_BUILD_DUPLICATE_RESOURCE;
+       // private static final String PREF_PB_INCOMPATIBLE_INTERFACE_METHOD=
+       // JavaCore.COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD;
+
+       // private static final String PREF_PB_UNDOCUMENTED_EMPTY_BLOCK=
+       // JavaCore.COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK;
+       // private static final String PREF_PB_FINALLY_BLOCK_NOT_COMPLETING=
+       // JavaCore.COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING;
+       // private static final String PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION=
+       // JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION;
+       // private static final String
+       // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING=
+       // JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING;
+       // private static final String PREF_PB_UNQUALIFIED_FIELD_ACCESS=
+       // JavaCore.COMPILER_PB_UNQUALIFIED_FIELD_ACCESS;
+
+       // private static final String INTR_DEFAULT_COMPLIANCE=
+       // "internal.default.compliance"; //$NON-NLS-1$
+
+       // values
+       //private static final String GENERATE = JavaCore.GENERATE;
+
+       //private static final String DO_NOT_GENERATE = JavaCore.DO_NOT_GENERATE;
+
+       //private static final String PRESERVE = JavaCore.PRESERVE;
+
+       //private static final String OPTIMIZE_OUT = JavaCore.OPTIMIZE_OUT;
+
+       //private static final String VERSION_1_1 = JavaCore.VERSION_1_1;
+
+       //private static final String VERSION_1_2 = JavaCore.VERSION_1_2;
+
+       //private static final String VERSION_1_3 = JavaCore.VERSION_1_3;
+
+       //private static final String VERSION_1_4 = JavaCore.VERSION_1_4;
+
+       private static final String ERROR = JavaCore.ERROR;
+
+       private static final String WARNING = JavaCore.WARNING;
+
+       private static final String IGNORE = JavaCore.IGNORE;
+
+       //private static final String ABORT = JavaCore.ABORT;
+
+       //private static final String CLEAN = JavaCore.CLEAN;
+
+       //private static final String ENABLED = JavaCore.ENABLED;
+
+       //private static final String DISABLED = JavaCore.DISABLED;
+
+       // private static final String PUBLIC= JavaCore.PUBLIC;
+       // private static final String PROTECTED= JavaCore.PROTECTED;
+       // private static final String DEFAULT= JavaCore.DEFAULT;
+       // private static final String PRIVATE= JavaCore.PRIVATE;
+
+       //private static final String DEFAULT_CONF = "default"; //$NON-NLS-1$
+
+       //private static final String USER_CONF = "user"; //$NON-NLS-1$
+
+       //private ArrayList fComplianceControls;
+
+       private PixelConverter fPixelConverter;
+
+       private IStatus fMaxNumberProblemsStatus;
+
+       // private IStatus fComplianceStatus, fMaxNumberProblemsStatus,
+       // fResourceFilterStatus;
+
+       public CompilerConfigurationBlock(IStatusChangeListener context,
+                       IJavaProject project) {
+               super(context, project, getKeys());
+
+               //fComplianceControls = new ArrayList();
+
+               // fComplianceStatus= new StatusInfo();
+               fMaxNumberProblemsStatus = new StatusInfo();
+               // fResourceFilterStatus= new StatusInfo();
+
+               // compatibilty code for the merge of the two option
+               // PB_SIGNAL_PARAMETER:
+               // if
+               // (ENABLED.equals(fWorkingValues.get(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT)))
+               // {
+               // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING, ENABLED);
+               // }
+
+       }
+
+       private final static String[] KEYS = new String[] {
+                       PREF_PB_PHP_FILE_NOT_EXIST, PREF_PB_PHP_VAR_DEPRECATED,
+                       PREF_PB_PHP_KEYWORD, PREF_PB_PHP_UPPERCASE_IDENTIFIER,
+                       PREF_PB_UNREACHABLE_CODE, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE,
+                       // PREF_LOCAL_VARIABLE_ATTR,
+                       // PREF_LINE_NUMBER_ATTR, PREF_SOURCE_FILE_ATTR,
+                       // PREF_CODEGEN_UNUSED_LOCAL,
+                       // PREF_CODEGEN_TARGET_PLATFORM,
+                       // PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD,
+                       // PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,
+                       // PREF_PB_DEPRECATION,
+                       // PREF_PB_HIDDEN_CATCH_BLOCK, PREF_PB_UNUSED_LOCAL,
+                       // PREF_PB_UNUSED_PARAMETER,
+                       // PREF_PB_SYNTHETIC_ACCESS_EMULATION,
+                       // PREF_PB_NON_EXTERNALIZED_STRINGS,
+                       // PREF_PB_ASSERT_AS_IDENTIFIER,
+                       // PREF_PB_UNUSED_IMPORT,
+                       PREF_PB_MAX_PER_UNIT,
+       // PREF_SOURCE_COMPATIBILITY,
+       // PREF_COMPLIANCE,
+       // PREF_RESOURCE_FILTER, PREF_BUILD_INVALID_CLASSPATH,
+       // PREF_PB_STATIC_ACCESS_RECEIVER, PREF_PB_INCOMPLETE_BUILDPATH,
+       // PREF_PB_CIRCULAR_BUILDPATH, PREF_PB_DEPRECATION_IN_DEPRECATED_CODE,
+       // PREF_BUILD_CLEAN_OUTPUT_FOLDER,
+       // PREF_PB_DUPLICATE_RESOURCE, PREF_PB_NO_EFFECT_ASSIGNMENT,
+       // PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,
+       // PREF_PB_UNUSED_PRIVATE, PREF_PB_CHAR_ARRAY_IN_CONCAT,
+       // PREF_ENABLE_EXCLUSION_PATTERNS, PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS,
+       // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT,
+       // PREF_PB_LOCAL_VARIABLE_HIDING,
+       // PREF_PB_FIELD_HIDING,
+       // PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,
+       // PREF_PB_INCOMPATIBLE_JDK_LEVEL,
+       // PREF_PB_INDIRECT_STATIC_ACCESS,
+       // PREF_PB_SUPERFLUOUS_SEMICOLON,
+       // PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING,
+       // PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT,
+       // PREF_PB_UNNECESSARY_TYPE_CHECK,
+       // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION,
+       // PREF_PB_UNQUALIFIED_FIELD_ACCESS,
+       // PREF_PB_UNDOCUMENTED_EMPTY_BLOCK,
+       // PREF_PB_FINALLY_BLOCK_NOT_COMPLETING,
+       // PREF_PB_DEPRECATION_WHEN_OVERRIDING,
+       // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING,
+
+       // PREF_PB_INVALID_JAVADOC,
+       // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
+       // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
+       // PREF_PB_MISSING_JAVADOC_TAGS,
+       // PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY,
+       // PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING,
+       // PREF_PB_MISSING_JAVADOC_COMMENTS,
+       // PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY,
+       // PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING
+       };
+
+       private static String[] getKeys() {
+               return KEYS;
+       }
+
+       protected final Map getOptions(boolean inheritJavaCoreOptions) {
+               Map map = super.getOptions(inheritJavaCoreOptions);
+               // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
+               return map;
+       }
+
+       protected final Map getDefaultOptions() {
+               Map map = super.getDefaultOptions();
+               // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
+               return map;
+       }
+
+       /*
+        * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite)
+        */
+       protected Control createContents(Composite parent) {
+               fPixelConverter = new PixelConverter(parent);
+               setShell(parent.getShell());
+
+               TabFolder folder = new TabFolder(parent, SWT.NONE);
+               folder.setLayout(new TabFolderLayout());
+               folder.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+               Composite commonComposite = createStyleTabContent(folder);
+               // Composite unusedComposite= createUnusedCodeTabContent(folder);
+               Composite advancedComposite = createAdvancedTabContent(folder);
+               // Composite javadocComposite= createJavadocTabContent(folder);
+               // Composite complianceComposite= createComplianceTabContent(folder);
+               // Composite othersComposite= createBuildPathTabContent(folder);
+
+               TabItem item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("CompilerConfigurationBlock.common.tabtitle")); //$NON-NLS-1$
+               item.setControl(commonComposite);
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("CompilerConfigurationBlock.advanced.tabtitle")); //$NON-NLS-1$
+               item.setControl(advancedComposite);
+
+               // item= new TabItem(folder, SWT.NONE);
+               // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.unused.tabtitle"));
+               // //$NON-NLS-1$
+               // item.setControl(unusedComposite);
+
+               // item= new TabItem(folder, SWT.NONE);
+               // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.javadoc.tabtitle"));
+               // //$NON-NLS-1$
+               // item.setControl(javadocComposite);
+
+               // item= new TabItem(folder, SWT.NONE);
+               // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.compliance.tabtitle"));
+               // //$NON-NLS-1$
+               // item.setControl(complianceComposite);
+
+               // item= new TabItem(folder, SWT.NONE);
+               // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.others.tabtitle"));
+               // //$NON-NLS-1$
+               // item.setControl(othersComposite);
+
+               validateSettings(null, null);
+
+               return folder;
+       }
+
+       private Composite createStyleTabContent(Composite folder) {
+               String[] errorWarningIgnore = new String[] { ERROR, WARNING, IGNORE };
+
+               String[] errorWarningIgnoreLabels = new String[] {
+                               PreferencesMessages
+                                               .getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
+                               PreferencesMessages
+                                               .getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
+                               PreferencesMessages
+                                               .getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
+               };
+
+               int nColumns = 3;
+
+               GridLayout layout = new GridLayout();
+               layout.numColumns = nColumns;
+
+               Composite composite = new Composite(folder, SWT.NULL);
+               composite.setLayout(layout);
+
+               Label description = new Label(composite, SWT.WRAP);
+               description.setText(PreferencesMessages
+                               .getString("CompilerConfigurationBlock.common.description")); //$NON-NLS-1$
+               GridData gd = new GridData();
+               gd.horizontalSpan = nColumns;
+               gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(50);
+               description.setLayoutData(gd);
+
+               String label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_file_not_exist.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_PHP_FILE_NOT_EXIST,
+                               errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_var_deprecated.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_PHP_VAR_DEPRECATED,
+                               errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_keyword.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_PHP_KEYWORD, errorWarningIgnore,
+                               errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_uppercase_identifier.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_PHP_UPPERCASE_IDENTIFIER,
+                               errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_unreachable_code.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_UNREACHABLE_CODE,
+                               errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_unitialized_local_variable.label"); //$NON-NLS-1$
+               addComboBox(composite, label, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE,
+                               errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_overriding_pkg_dflt.label"); //$NON-NLS-1$
+               // addComboBox(composite, label,
+               // PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, errorWarningIgnore,
+               // errorWarningIgnoreLabels, 0);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_method_naming.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_hidden_catchblock.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_HIDDEN_CATCH_BLOCK,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //              
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_static_access_receiver.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_STATIC_ACCESS_RECEIVER,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //              
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_no_effect_assignment.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_NO_EFFECT_ASSIGNMENT,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_indirect_access_to_static.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_INDIRECT_STATIC_ACCESS,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_accidential_assignement.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label,
+               // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, errorWarningIgnore,
+               // errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_finally_block_not_completing.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_FINALLY_BLOCK_NOT_COMPLETING,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_undocumented_empty_block.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_UNDOCUMENTED_EMPTY_BLOCK,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               return composite;
+       }
+
+       private Composite createAdvancedTabContent(TabFolder folder) {
+               //String[] errorWarningIgnore = new String[] { ERROR, WARNING, IGNORE };
+
+//             String[] errorWarningIgnoreLabels = new String[] {
+//                             PreferencesMessages
+//                                             .getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
+//                             PreferencesMessages
+//                                             .getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
+//                             PreferencesMessages
+//                                             .getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
+//             };
+
+               //String[] enabledDisabled = new String[] { ENABLED, DISABLED };
+
+               int nColumns = 3;
+
+               GridLayout layout = new GridLayout();
+               layout.numColumns = nColumns;
+
+               Composite composite = new Composite(folder, SWT.NULL);
+               composite.setLayout(layout);
+
+               Label description = new Label(composite, SWT.WRAP);
+               description.setText(PreferencesMessages
+                               .getString("CompilerConfigurationBlock.advanced.description")); //$NON-NLS-1$
+               GridData gd = new GridData();
+               gd.horizontalSpan = nColumns;
+               gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(50);
+               description.setLayoutData(gd);
+
+               // String label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_synth_access_emul.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_SYNTHETIC_ACCESS_EMULATION,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_local_variable_hiding.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_LOCAL_VARIABLE_HIDING,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               // int indent= fPixelConverter.convertWidthInCharsToPixels(2);
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_special_param_hiding.label");
+               // //$NON-NLS-1$
+               // addCheckBox(composite, label, PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,
+               // enabledDisabled, indent);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_field_hiding.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_FIELD_HIDING,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_non_externalized_strings.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_NON_EXTERNALIZED_STRINGS,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_incompatible_interface_method.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+               //
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_char_array_in_concat.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_CHAR_ARRAY_IN_CONCAT,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               // label=
+               // PreferencesMessages.getString("CompilerConfigurationBlock.pb_unqualified_field_access.label");
+               // //$NON-NLS-1$
+               // addComboBox(composite, label, PREF_PB_UNQUALIFIED_FIELD_ACCESS,
+               // errorWarningIgnore, errorWarningIgnoreLabels, 0);
+
+               gd = new GridData();
+               gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(6);
+
+               String label = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.pb_max_per_unit.label"); //$NON-NLS-1$
+               Text text = addTextField(composite, label, PREF_PB_MAX_PER_UNIT, 0, 0);
+               text.setTextLimit(6);
+               text.setLayoutData(gd);
+
+               return composite;
+       }
+
+       /*
+        * (non-javadoc) Update fields and validate. @param changedKey Key that
+        * changed, or null, if all changed.
+        */
+       protected void validateSettings(String changedKey, String newValue) {
+
+               if (changedKey != null) {
+                       // if (INTR_DEFAULT_COMPLIANCE.equals(changedKey)) {
+                       // updateComplianceEnableState();
+                       // if (DEFAULT_CONF.equals(newValue)) {
+                       // updateComplianceDefaultSettings();
+                       // }
+                       // fComplianceStatus= validateCompliance();
+                       // } else if (PREF_COMPLIANCE.equals(changedKey)) {
+                       // if (checkValue(INTR_DEFAULT_COMPLIANCE, DEFAULT_CONF)) {
+                       // updateComplianceDefaultSettings();
+                       // }
+                       // fComplianceStatus= validateCompliance();
+                       // } else if (PREF_SOURCE_COMPATIBILITY.equals(changedKey) ||
+                       // PREF_CODEGEN_TARGET_PLATFORM.equals(changedKey) ||
+                       // PREF_PB_ASSERT_AS_IDENTIFIER.equals(changedKey)) {
+                       // fComplianceStatus= validateCompliance();
+                       // } else
+                       if (PREF_PB_MAX_PER_UNIT.equals(changedKey)) {
+                               fMaxNumberProblemsStatus = validateMaxNumberProblems();
+                               // } else if (PREF_RESOURCE_FILTER.equals(changedKey)) {
+                               // fResourceFilterStatus= validateResourceFilters();
+                               // } else if (S.equals(changedKey) ||
+                               // PREF_PB_DEPRECATION.equals(changedKey) ) { // ||
+                               // // PREF_PB_INVALID_JAVADOC.equals(changedKey) ||
+                               // // PREF_PB_MISSING_JAVADOC_TAGS.equals(changedKey) ||
+                               // // PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
+                               // // PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
+                               // //
+                               // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION.equals(changedKey))
+                               // {
+                               // updateEnableStates();
+                               // } else if
+                               // (PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING.equals(changedKey)) {
+                               // // merging the two options
+                               // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT,
+                               // newValue);
+                       } else {
+                               return;
+                       }
+               } else {
+                       // updateEnableStates();
+                       // updateComplianceEnableState();
+                       // fComplianceStatus= validateCompliance();
+                       fMaxNumberProblemsStatus = validateMaxNumberProblems();
+                       // fResourceFilterStatus= validateResourceFilters();
+               }
+               // IStatus status= StatusUtil.getMostSevere(new IStatus[] {
+               // fComplianceStatus, fMaxNumberProblemsStatus, fResourceFilterStatus
+               // });
+               IStatus status = StatusUtil
+                               .getMostSevere(new IStatus[] { fMaxNumberProblemsStatus });
+               fContext.statusChanged(status);
+       }
+
+       // private void updateEnableStates() {
+       // boolean enableUnusedParams= !checkValue(PREF_PB_UNUSED_PARAMETER,
+       // IGNORE);
+       // getCheckBox(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING).setEnabled(enableUnusedParams);
+
+       // boolean enableDeprecation= !checkValue(PREF_PB_DEPRECATION, IGNORE);
+       // getCheckBox(PREF_PB_DEPRECATION_IN_DEPRECATED_CODE).setEnabled(enableDeprecation);
+       // getCheckBox(PREF_PB_DEPRECATION_WHEN_OVERRIDING).setEnabled(enableDeprecation);
+       //              
+       // boolean enableThrownExceptions=
+       // !checkValue(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION, IGNORE);
+       // getCheckBox(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING).setEnabled(enableThrownExceptions);
+       //
+       // boolean enableHiding= !checkValue(PREF_PB_LOCAL_VARIABLE_HIDING, IGNORE);
+       // getCheckBox(PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD).setEnabled(enableHiding);
+       //
+       // boolean enableInvalidTagsErrors= !checkValue(PREF_PB_INVALID_JAVADOC,
+       // IGNORE);
+       // getCheckBox(PREF_PB_INVALID_JAVADOC_TAGS).setEnabled(enableInvalidTagsErrors);
+       // setComboEnabled(PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
+       // enableInvalidTagsErrors);
+       //              
+       // boolean enableMissingTagsErrors=
+       // !checkValue(PREF_PB_MISSING_JAVADOC_TAGS, IGNORE);
+       // getCheckBox(PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING).setEnabled(enableMissingTagsErrors);
+       // setComboEnabled(PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY,
+       // enableMissingTagsErrors);
+       //              
+       // boolean enableMissingCommentsErrors=
+       // !checkValue(PREF_PB_MISSING_JAVADOC_COMMENTS, IGNORE);
+       // getCheckBox(PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING).setEnabled(enableMissingCommentsErrors);
+       // setComboEnabled(PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY,
+       // enableMissingCommentsErrors);
+       // }
+
+       // private IStatus validateCompliance() {
+       // StatusInfo status= new StatusInfo();
+       // if (checkValue(PREF_COMPLIANCE, VERSION_1_3)) {
+       // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
+       // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13src14.error"));
+       // //$NON-NLS-1$
+       // return status;
+       // } else if (checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
+       // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13trg14.error"));
+       // //$NON-NLS-1$
+       // return status;
+       // }
+       // }
+       // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
+       // if (!checkValue(PREF_PB_ASSERT_AS_IDENTIFIER, ERROR)) {
+       // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14asrterr.error"));
+       // //$NON-NLS-1$
+       // return status;
+       // }
+       // }
+       // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
+       // if (!checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
+       // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14tgt14.error"));
+       // //$NON-NLS-1$
+       // return status;
+       // }
+       // }
+       // return status;
+       // }
+
+       private IStatus validateMaxNumberProblems() {
+               String number = (String) fWorkingValues.get(PREF_PB_MAX_PER_UNIT);
+               StatusInfo status = new StatusInfo();
+               if (number.length() == 0) {
+                       status.setError(PreferencesMessages
+                                       .getString("CompilerConfigurationBlock.empty_input")); //$NON-NLS-1$
+               } else {
+                       try {
+                               int value = Integer.parseInt(number);
+                               if (value <= 0) {
+                                       status
+                                                       .setError(PreferencesMessages
+                                                                       .getFormattedString(
+                                                                                       "CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
+                               }
+                       } catch (NumberFormatException e) {
+                               status.setError(PreferencesMessages.getFormattedString(
+                                               "CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
+                       }
+               }
+               return status;
+       }
+
+       // private IStatus validateResourceFilters() {
+       // String text= (String) fWorkingValues.get(PREF_RESOURCE_FILTER);
+       //              
+       // IWorkspace workspace= ResourcesPlugin.getWorkspace();
+       //
+       // String[] filters= getTokens(text, ","); //$NON-NLS-1$
+       // for (int i= 0; i < filters.length; i++) {
+       // String fileName= filters[i].replace('*', 'x');
+       // int resourceType= IResource.FILE;
+       // int lastCharacter= fileName.length() - 1;
+       // if (lastCharacter >= 0 && fileName.charAt(lastCharacter) == '/') {
+       // fileName= fileName.substring(0, lastCharacter);
+       // resourceType= IResource.FOLDER;
+       // }
+       // IStatus status= workspace.validateName(fileName, resourceType);
+       // if (status.matches(IStatus.ERROR)) {
+       // String message=
+       // PreferencesMessages.getFormattedString("CompilerConfigurationBlock.filter.invalidsegment.error",
+       // status.getMessage()); //$NON-NLS-1$
+       // return new StatusInfo(IStatus.ERROR, message);
+       // }
+       // }
+       // return new StatusInfo();
+       // }
+
+       protected String[] getFullBuildDialogStrings(boolean workspaceSettings) {
+               String title = PreferencesMessages
+                               .getString("CompilerConfigurationBlock.needsbuild.title"); //$NON-NLS-1$
+               String message;
+               if (workspaceSettings) {
+                       message = PreferencesMessages
+                                       .getString("CompilerConfigurationBlock.needsfullbuild.message"); //$NON-NLS-1$
+               } else {
+                       message = PreferencesMessages
+                                       .getString("CompilerConfigurationBlock.needsprojectbuild.message"); //$NON-NLS-1$
+               }
+               return new String[] { title, message };
+       }
+
+}