1 /*******************************************************************************
 
   2  * Copyright (c) 2000, 2003 IBM Corporation and others.
 
   3  * All rights reserved. This program and the accompanying materials 
 
   4  * are made available under the terms of the Common Public License v1.0
 
   5  * which accompanies this distribution, and is available at
 
   6  * http://www.eclipse.org/legal/cpl-v10.html
 
   9  *     IBM Corporation - initial API and implementation
 
  10  *******************************************************************************/
 
  11 package net.sourceforge.phpdt.internal.ui.preferences;
 
  13 import java.util.ArrayList;
 
  16 import net.sourceforge.phpdt.core.IJavaProject;
 
  17 import net.sourceforge.phpdt.core.JavaCore;
 
  18 import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
 
  19 import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
 
  20 import net.sourceforge.phpdt.internal.ui.util.PixelConverter;
 
  21 import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
 
  22 import net.sourceforge.phpdt.internal.ui.wizards.IStatusChangeListener;
 
  24 import org.eclipse.core.runtime.IStatus;
 
  25 import org.eclipse.swt.SWT;
 
  26 import org.eclipse.swt.layout.GridData;
 
  27 import org.eclipse.swt.layout.GridLayout;
 
  28 import org.eclipse.swt.widgets.Composite;
 
  29 import org.eclipse.swt.widgets.Control;
 
  30 import org.eclipse.swt.widgets.Label;
 
  31 import org.eclipse.swt.widgets.TabFolder;
 
  32 import org.eclipse.swt.widgets.TabItem;
 
  33 import org.eclipse.swt.widgets.Text;
 
  37 public class CompilerConfigurationBlock extends OptionsConfigurationBlock {
 
  39         // Preference store keys, see JavaCore.getOptions
 
  40         private static final String PREF_PB_PHP_VAR_DEPRECATED = JavaCore.COMPILER_PB_PHP_VAR_DEPRECATED;
 
  42         private static final String PREF_PB_PHP_KEYWORD = JavaCore.COMPILER_PB_PHP_KEYWORD;
 
  44         private static final String PREF_PB_PHP_UPPERCASE_IDENTIFIER = JavaCore.COMPILER_PB_PHP_UPPERCASE_IDENTIFIER;
 
  46         private static final String PREF_PB_PHP_FILE_NOT_EXIST = JavaCore.COMPILER_PB_PHP_FILE_NOT_EXIST;
 
  48         private static final String PREF_PB_UNREACHABLE_CODE = JavaCore.COMPILER_PB_UNREACHABLE_CODE;
 
  50         private static final String PREF_PB_UNINITIALIZED_LOCAL_VARIABLE = JavaCore.COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE;
 
  52         // private static final String PREF_LOCAL_VARIABLE_ATTR=
 
  53         // JavaCore.COMPILER_LOCAL_VARIABLE_ATTR;
 
  54         // private static final String PREF_LINE_NUMBER_ATTR=
 
  55         // JavaCore.COMPILER_LINE_NUMBER_ATTR;
 
  56         // private static final String PREF_SOURCE_FILE_ATTR=
 
  57         // JavaCore.COMPILER_SOURCE_FILE_ATTR;
 
  58         // private static final String PREF_CODEGEN_UNUSED_LOCAL=
 
  59         // JavaCore.COMPILER_CODEGEN_UNUSED_LOCAL;
 
  60         // private static final String PREF_CODEGEN_TARGET_PLATFORM=
 
  61         // JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM;
 
  62         // private static final String PREF_PB_UNREACHABLE_CODE=
 
  63         // JavaCore.COMPILER_PB_UNREACHABLE_CODE;
 
  64         // private static final String PREF_PB_INVALID_IMPORT=
 
  65         // JavaCore.COMPILER_PB_INVALID_IMPORT;
 
  66         // private static final String PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD=
 
  67         // JavaCore.COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD;
 
  68         // private static final String PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME=
 
  69         // JavaCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME;
 
  70         // private static final String PREF_PB_DEPRECATION=
 
  71         // JavaCore.COMPILER_PB_DEPRECATION;
 
  72         // private static final String PREF_PB_DEPRECATION_WHEN_OVERRIDING=
 
  73         // JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD;
 
  75         // private static final String PREF_PB_HIDDEN_CATCH_BLOCK=
 
  76         // JavaCore.COMPILER_PB_HIDDEN_CATCH_BLOCK;
 
  77         // private static final String PREF_PB_UNUSED_LOCAL=
 
  78         // JavaCore.COMPILER_PB_UNUSED_LOCAL;
 
  79         // private static final String PREF_PB_UNUSED_PARAMETER=
 
  80         // JavaCore.COMPILER_PB_UNUSED_PARAMETER;
 
  81         // private static final String PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING=
 
  82         // JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE;
 
  83         // private static final String PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT=
 
  84         // JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT;
 
  85         // private static final String PREF_PB_SYNTHETIC_ACCESS_EMULATION=
 
  86         // JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION;
 
  87         // private static final String PREF_PB_NON_EXTERNALIZED_STRINGS=
 
  88         // JavaCore.COMPILER_PB_NON_NLS_STRING_LITERAL;
 
  89         // private static final String PREF_PB_ASSERT_AS_IDENTIFIER=
 
  90         // JavaCore.COMPILER_PB_ASSERT_IDENTIFIER;
 
  91         private static final String PREF_PB_MAX_PER_UNIT = JavaCore.COMPILER_PB_MAX_PER_UNIT;
 
  93         // private static final String PREF_PB_UNUSED_IMPORT=
 
  94         // JavaCore.COMPILER_PB_UNUSED_IMPORT;
 
  95         // private static final String PREF_PB_UNUSED_PRIVATE=
 
  96         // JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER;
 
  97         // private static final String PREF_PB_STATIC_ACCESS_RECEIVER=
 
  98         // JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER;
 
  99         // private static final String PREF_PB_NO_EFFECT_ASSIGNMENT=
 
 100         // JavaCore.COMPILER_PB_NO_EFFECT_ASSIGNMENT;
 
 101         // private static final String PREF_PB_CHAR_ARRAY_IN_CONCAT=
 
 102         // JavaCore.COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION;
 
 103         // private static final String
 
 104         // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT=
 
 105         // JavaCore.COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT;
 
 106         // private static final String PREF_PB_LOCAL_VARIABLE_HIDING=
 
 107         // JavaCore.COMPILER_PB_LOCAL_VARIABLE_HIDING;
 
 108         // private static final String PREF_PB_FIELD_HIDING=
 
 109         // JavaCore.COMPILER_PB_FIELD_HIDING;
 
 110         // private static final String PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD=
 
 111         // JavaCore.COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD;
 
 112         // private static final String PREF_PB_INDIRECT_STATIC_ACCESS=
 
 113         // JavaCore.COMPILER_PB_INDIRECT_STATIC_ACCESS;
 
 114         // private static final String PREF_PB_SUPERFLUOUS_SEMICOLON=
 
 115         // JavaCore.COMPILER_PB_SUPERFLUOUS_SEMICOLON;
 
 116         // private static final String PREF_PB_UNNECESSARY_TYPE_CHECK=
 
 117         // JavaCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK;
 
 119         // private static final String PREF_PB_INVALID_JAVADOC=
 
 120         // JavaCore.COMPILER_PB_INVALID_JAVADOC;
 
 121         // private static final String PREF_PB_INVALID_JAVADOC_TAGS=
 
 122         // JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS;
 
 123         // private static final String PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY=
 
 124         // JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY;
 
 126         // private static final String PREF_PB_MISSING_JAVADOC_TAGS=
 
 127         // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS;
 
 128         // private static final String PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY=
 
 129         // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY;
 
 130         // private static final String PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING=
 
 131         // JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING;
 
 133         // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS=
 
 134         // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS;
 
 135         // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY=
 
 136         // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY;
 
 137         // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING=
 
 138         // JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING;
 
 140         // private static final String PREF_SOURCE_COMPATIBILITY=
 
 141         // JavaCore.COMPILER_SOURCE;
 
 142         // private static final String PREF_COMPLIANCE=
 
 143         // JavaCore.COMPILER_COMPLIANCE;
 
 145         // private static final String PREF_RESOURCE_FILTER=
 
 146         // JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER;
 
 147         // private static final String PREF_BUILD_INVALID_CLASSPATH=
 
 148         // JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH;
 
 149         // private static final String PREF_BUILD_CLEAN_OUTPUT_FOLDER=
 
 150         // JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER;
 
 151         // private static final String PREF_ENABLE_EXCLUSION_PATTERNS=
 
 152         // JavaCore.CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS;
 
 153         // private static final String PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS=
 
 154         // JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS;
 
 156         // private static final String PREF_PB_INCOMPLETE_BUILDPATH=
 
 157         // JavaCore.CORE_INCOMPLETE_CLASSPATH;
 
 158         // private static final String PREF_PB_CIRCULAR_BUILDPATH=
 
 159         // JavaCore.CORE_CIRCULAR_CLASSPATH;
 
 160         // // private static final String PREF_PB_INCOMPATIBLE_JDK_LEVEL=
 
 161         // JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL;
 
 162         // private static final String PREF_PB_DEPRECATION_IN_DEPRECATED_CODE=
 
 163         // JavaCore.COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE;
 
 164         // private static final String PREF_PB_DUPLICATE_RESOURCE=
 
 165         // JavaCore.CORE_JAVA_BUILD_DUPLICATE_RESOURCE;
 
 166         // private static final String PREF_PB_INCOMPATIBLE_INTERFACE_METHOD=
 
 167         // JavaCore.COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD;
 
 169         // private static final String PREF_PB_UNDOCUMENTED_EMPTY_BLOCK=
 
 170         // JavaCore.COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK;
 
 171         // private static final String PREF_PB_FINALLY_BLOCK_NOT_COMPLETING=
 
 172         // JavaCore.COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING;
 
 173         // private static final String PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION=
 
 174         // JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION;
 
 175         // private static final String
 
 176         // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING=
 
 177         // JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING;
 
 178         // private static final String PREF_PB_UNQUALIFIED_FIELD_ACCESS=
 
 179         // JavaCore.COMPILER_PB_UNQUALIFIED_FIELD_ACCESS;
 
 181         // private static final String INTR_DEFAULT_COMPLIANCE=
 
 182         // "internal.default.compliance"; //$NON-NLS-1$
 
 185         //private static final String GENERATE = JavaCore.GENERATE;
 
 187         //private static final String DO_NOT_GENERATE = JavaCore.DO_NOT_GENERATE;
 
 189         //private static final String PRESERVE = JavaCore.PRESERVE;
 
 191         //private static final String OPTIMIZE_OUT = JavaCore.OPTIMIZE_OUT;
 
 193         //private static final String VERSION_1_1 = JavaCore.VERSION_1_1;
 
 195         //private static final String VERSION_1_2 = JavaCore.VERSION_1_2;
 
 197         //private static final String VERSION_1_3 = JavaCore.VERSION_1_3;
 
 199         //private static final String VERSION_1_4 = JavaCore.VERSION_1_4;
 
 201         private static final String ERROR = JavaCore.ERROR;
 
 203         private static final String WARNING = JavaCore.WARNING;
 
 205         private static final String IGNORE = JavaCore.IGNORE;
 
 207         //private static final String ABORT = JavaCore.ABORT;
 
 209         //private static final String CLEAN = JavaCore.CLEAN;
 
 211         private static final String ENABLED = JavaCore.ENABLED;
 
 213         private static final String DISABLED = JavaCore.DISABLED;
 
 215         // private static final String PUBLIC= JavaCore.PUBLIC;
 
 216         // private static final String PROTECTED= JavaCore.PROTECTED;
 
 217         // private static final String DEFAULT= JavaCore.DEFAULT;
 
 218         // private static final String PRIVATE= JavaCore.PRIVATE;
 
 220         //private static final String DEFAULT_CONF = "default"; //$NON-NLS-1$
 
 222         //private static final String USER_CONF = "user"; //$NON-NLS-1$
 
 224         private ArrayList fComplianceControls;
 
 226         private PixelConverter fPixelConverter;
 
 228         private IStatus fMaxNumberProblemsStatus;
 
 230         // private IStatus fComplianceStatus, fMaxNumberProblemsStatus,
 
 231         // fResourceFilterStatus;
 
 233         public CompilerConfigurationBlock(IStatusChangeListener context,
 
 234                         IJavaProject project) {
 
 235                 super(context, project, getKeys());
 
 237                 fComplianceControls = new ArrayList();
 
 239                 // fComplianceStatus= new StatusInfo();
 
 240                 fMaxNumberProblemsStatus = new StatusInfo();
 
 241                 // fResourceFilterStatus= new StatusInfo();
 
 243                 // compatibilty code for the merge of the two option
 
 244                 // PB_SIGNAL_PARAMETER:
 
 246                 // (ENABLED.equals(fWorkingValues.get(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT)))
 
 248                 // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING, ENABLED);
 
 253         private final static String[] KEYS = new String[] {
 
 254                         PREF_PB_PHP_FILE_NOT_EXIST, PREF_PB_PHP_VAR_DEPRECATED,
 
 255                         PREF_PB_PHP_KEYWORD, PREF_PB_PHP_UPPERCASE_IDENTIFIER,
 
 256                         PREF_PB_UNREACHABLE_CODE, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE,
 
 257                         // PREF_LOCAL_VARIABLE_ATTR,
 
 258                         // PREF_LINE_NUMBER_ATTR, PREF_SOURCE_FILE_ATTR,
 
 259                         // PREF_CODEGEN_UNUSED_LOCAL,
 
 260                         // PREF_CODEGEN_TARGET_PLATFORM,
 
 261                         // PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD,
 
 262                         // PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,
 
 263                         // PREF_PB_DEPRECATION,
 
 264                         // PREF_PB_HIDDEN_CATCH_BLOCK, PREF_PB_UNUSED_LOCAL,
 
 265                         // PREF_PB_UNUSED_PARAMETER,
 
 266                         // PREF_PB_SYNTHETIC_ACCESS_EMULATION,
 
 267                         // PREF_PB_NON_EXTERNALIZED_STRINGS,
 
 268                         // PREF_PB_ASSERT_AS_IDENTIFIER,
 
 269                         // PREF_PB_UNUSED_IMPORT,
 
 270                         PREF_PB_MAX_PER_UNIT,
 
 271         // PREF_SOURCE_COMPATIBILITY,
 
 273         // PREF_RESOURCE_FILTER, PREF_BUILD_INVALID_CLASSPATH,
 
 274         // PREF_PB_STATIC_ACCESS_RECEIVER, PREF_PB_INCOMPLETE_BUILDPATH,
 
 275         // PREF_PB_CIRCULAR_BUILDPATH, PREF_PB_DEPRECATION_IN_DEPRECATED_CODE,
 
 276         // PREF_BUILD_CLEAN_OUTPUT_FOLDER,
 
 277         // PREF_PB_DUPLICATE_RESOURCE, PREF_PB_NO_EFFECT_ASSIGNMENT,
 
 278         // PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,
 
 279         // PREF_PB_UNUSED_PRIVATE, PREF_PB_CHAR_ARRAY_IN_CONCAT,
 
 280         // PREF_ENABLE_EXCLUSION_PATTERNS, PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS,
 
 281         // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT,
 
 282         // PREF_PB_LOCAL_VARIABLE_HIDING,
 
 283         // PREF_PB_FIELD_HIDING,
 
 284         // PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,
 
 285         // PREF_PB_INCOMPATIBLE_JDK_LEVEL,
 
 286         // PREF_PB_INDIRECT_STATIC_ACCESS,
 
 287         // PREF_PB_SUPERFLUOUS_SEMICOLON,
 
 288         // PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING,
 
 289         // PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT,
 
 290         // PREF_PB_UNNECESSARY_TYPE_CHECK,
 
 291         // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION,
 
 292         // PREF_PB_UNQUALIFIED_FIELD_ACCESS,
 
 293         // PREF_PB_UNDOCUMENTED_EMPTY_BLOCK,
 
 294         // PREF_PB_FINALLY_BLOCK_NOT_COMPLETING,
 
 295         // PREF_PB_DEPRECATION_WHEN_OVERRIDING,
 
 296         // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING,
 
 298         // PREF_PB_INVALID_JAVADOC,
 
 299         // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
 
 300         // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
 
 301         // PREF_PB_MISSING_JAVADOC_TAGS,
 
 302         // PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY,
 
 303         // PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING,
 
 304         // PREF_PB_MISSING_JAVADOC_COMMENTS,
 
 305         // PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY,
 
 306         // PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING
 
 309         private static String[] getKeys() {
 
 313         protected final Map getOptions(boolean inheritJavaCoreOptions) {
 
 314                 Map map = super.getOptions(inheritJavaCoreOptions);
 
 315                 // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
 
 319         protected final Map getDefaultOptions() {
 
 320                 Map map = super.getDefaultOptions();
 
 321                 // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
 
 326          * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite)
 
 328         protected Control createContents(Composite parent) {
 
 329                 fPixelConverter = new PixelConverter(parent);
 
 330                 setShell(parent.getShell());
 
 332                 TabFolder folder = new TabFolder(parent, SWT.NONE);
 
 333                 folder.setLayout(new TabFolderLayout());
 
 334                 folder.setLayoutData(new GridData(GridData.FILL_BOTH));
 
 336                 Composite commonComposite = createStyleTabContent(folder);
 
 337                 // Composite unusedComposite= createUnusedCodeTabContent(folder);
 
 338                 Composite advancedComposite = createAdvancedTabContent(folder);
 
 339                 // Composite javadocComposite= createJavadocTabContent(folder);
 
 340                 // Composite complianceComposite= createComplianceTabContent(folder);
 
 341                 // Composite othersComposite= createBuildPathTabContent(folder);
 
 343                 TabItem item = new TabItem(folder, SWT.NONE);
 
 344                 item.setText(PreferencesMessages
 
 345                                 .getString("CompilerConfigurationBlock.common.tabtitle")); //$NON-NLS-1$
 
 346                 item.setControl(commonComposite);
 
 348                 item = new TabItem(folder, SWT.NONE);
 
 349                 item.setText(PreferencesMessages
 
 350                                 .getString("CompilerConfigurationBlock.advanced.tabtitle")); //$NON-NLS-1$
 
 351                 item.setControl(advancedComposite);
 
 353                 // item= new TabItem(folder, SWT.NONE);
 
 354                 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.unused.tabtitle"));
 
 356                 // item.setControl(unusedComposite);
 
 358                 // item= new TabItem(folder, SWT.NONE);
 
 359                 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.javadoc.tabtitle"));
 
 361                 // item.setControl(javadocComposite);
 
 363                 // item= new TabItem(folder, SWT.NONE);
 
 364                 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.compliance.tabtitle"));
 
 366                 // item.setControl(complianceComposite);
 
 368                 // item= new TabItem(folder, SWT.NONE);
 
 369                 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.others.tabtitle"));
 
 371                 // item.setControl(othersComposite);
 
 373                 validateSettings(null, null);
 
 378         private Composite createStyleTabContent(Composite folder) {
 
 379                 String[] errorWarningIgnore = new String[] { ERROR, WARNING, IGNORE };
 
 381                 String[] errorWarningIgnoreLabels = new String[] {
 
 383                                                 .getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
 
 385                                                 .getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
 
 387                                                 .getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
 
 392                 GridLayout layout = new GridLayout();
 
 393                 layout.numColumns = nColumns;
 
 395                 Composite composite = new Composite(folder, SWT.NULL);
 
 396                 composite.setLayout(layout);
 
 398                 Label description = new Label(composite, SWT.WRAP);
 
 399                 description.setText(PreferencesMessages
 
 400                                 .getString("CompilerConfigurationBlock.common.description")); //$NON-NLS-1$
 
 401                 GridData gd = new GridData();
 
 402                 gd.horizontalSpan = nColumns;
 
 403                 gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(50);
 
 404                 description.setLayoutData(gd);
 
 406                 String label = PreferencesMessages
 
 407                                 .getString("CompilerConfigurationBlock.pb_file_not_exist.label"); //$NON-NLS-1$
 
 408                 addComboBox(composite, label, PREF_PB_PHP_FILE_NOT_EXIST,
 
 409                                 errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 411                 label = PreferencesMessages
 
 412                                 .getString("CompilerConfigurationBlock.pb_var_deprecated.label"); //$NON-NLS-1$
 
 413                 addComboBox(composite, label, PREF_PB_PHP_VAR_DEPRECATED,
 
 414                                 errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 416                 label = PreferencesMessages
 
 417                                 .getString("CompilerConfigurationBlock.pb_keyword.label"); //$NON-NLS-1$
 
 418                 addComboBox(composite, label, PREF_PB_PHP_KEYWORD, errorWarningIgnore,
 
 419                                 errorWarningIgnoreLabels, 0);
 
 421                 label = PreferencesMessages
 
 422                                 .getString("CompilerConfigurationBlock.pb_uppercase_identifier.label"); //$NON-NLS-1$
 
 423                 addComboBox(composite, label, PREF_PB_PHP_UPPERCASE_IDENTIFIER,
 
 424                                 errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 426                 label = PreferencesMessages
 
 427                                 .getString("CompilerConfigurationBlock.pb_unreachable_code.label"); //$NON-NLS-1$
 
 428                 addComboBox(composite, label, PREF_PB_UNREACHABLE_CODE,
 
 429                                 errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 431                 label = PreferencesMessages
 
 432                                 .getString("CompilerConfigurationBlock.pb_unitialized_local_variable.label"); //$NON-NLS-1$
 
 433                 addComboBox(composite, label, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE,
 
 434                                 errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 436                 label = PreferencesMessages
 
 437                                 .getString("CompilerConfigurationBlock.pb_overriding_pkg_dflt.label"); //$NON-NLS-1$
 
 438                 // addComboBox(composite, label,
 
 439                 // PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, errorWarningIgnore,
 
 440                 // errorWarningIgnoreLabels, 0);
 
 443                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_method_naming.label");
 
 445                 // addComboBox(composite, label, PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,
 
 446                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 449                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_hidden_catchblock.label");
 
 451                 // addComboBox(composite, label, PREF_PB_HIDDEN_CATCH_BLOCK,
 
 452                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 455                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_static_access_receiver.label");
 
 457                 // addComboBox(composite, label, PREF_PB_STATIC_ACCESS_RECEIVER,
 
 458                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 461                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_no_effect_assignment.label");
 
 463                 // addComboBox(composite, label, PREF_PB_NO_EFFECT_ASSIGNMENT,
 
 464                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 467                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_indirect_access_to_static.label");
 
 469                 // addComboBox(composite, label, PREF_PB_INDIRECT_STATIC_ACCESS,
 
 470                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 473                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_accidential_assignement.label");
 
 475                 // addComboBox(composite, label,
 
 476                 // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, errorWarningIgnore,
 
 477                 // errorWarningIgnoreLabels, 0);
 
 480                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_finally_block_not_completing.label");
 
 482                 // addComboBox(composite, label, PREF_PB_FINALLY_BLOCK_NOT_COMPLETING,
 
 483                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 486                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_undocumented_empty_block.label");
 
 488                 // addComboBox(composite, label, PREF_PB_UNDOCUMENTED_EMPTY_BLOCK,
 
 489                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 494         private Composite createAdvancedTabContent(TabFolder folder) {
 
 495                 //String[] errorWarningIgnore = new String[] { ERROR, WARNING, IGNORE };
 
 497 //              String[] errorWarningIgnoreLabels = new String[] {
 
 498 //                              PreferencesMessages
 
 499 //                                              .getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
 
 500 //                              PreferencesMessages
 
 501 //                                              .getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
 
 502 //                              PreferencesMessages
 
 503 //                                              .getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
 
 506                 //String[] enabledDisabled = new String[] { ENABLED, DISABLED };
 
 510                 GridLayout layout = new GridLayout();
 
 511                 layout.numColumns = nColumns;
 
 513                 Composite composite = new Composite(folder, SWT.NULL);
 
 514                 composite.setLayout(layout);
 
 516                 Label description = new Label(composite, SWT.WRAP);
 
 517                 description.setText(PreferencesMessages
 
 518                                 .getString("CompilerConfigurationBlock.advanced.description")); //$NON-NLS-1$
 
 519                 GridData gd = new GridData();
 
 520                 gd.horizontalSpan = nColumns;
 
 521                 gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(50);
 
 522                 description.setLayoutData(gd);
 
 525                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_synth_access_emul.label");
 
 527                 // addComboBox(composite, label, PREF_PB_SYNTHETIC_ACCESS_EMULATION,
 
 528                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 531                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_local_variable_hiding.label");
 
 533                 // addComboBox(composite, label, PREF_PB_LOCAL_VARIABLE_HIDING,
 
 534                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 536                 // int indent= fPixelConverter.convertWidthInCharsToPixels(2);
 
 538                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_special_param_hiding.label");
 
 540                 // addCheckBox(composite, label, PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,
 
 541                 // enabledDisabled, indent);
 
 544                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_field_hiding.label");
 
 546                 // addComboBox(composite, label, PREF_PB_FIELD_HIDING,
 
 547                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 550                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_non_externalized_strings.label");
 
 552                 // addComboBox(composite, label, PREF_PB_NON_EXTERNALIZED_STRINGS,
 
 553                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 556                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_incompatible_interface_method.label");
 
 558                 // addComboBox(composite, label, PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,
 
 559                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 562                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_char_array_in_concat.label");
 
 564                 // addComboBox(composite, label, PREF_PB_CHAR_ARRAY_IN_CONCAT,
 
 565                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 568                 // PreferencesMessages.getString("CompilerConfigurationBlock.pb_unqualified_field_access.label");
 
 570                 // addComboBox(composite, label, PREF_PB_UNQUALIFIED_FIELD_ACCESS,
 
 571                 // errorWarningIgnore, errorWarningIgnoreLabels, 0);
 
 574                 gd.widthHint = fPixelConverter.convertWidthInCharsToPixels(6);
 
 576                 String label = PreferencesMessages
 
 577                                 .getString("CompilerConfigurationBlock.pb_max_per_unit.label"); //$NON-NLS-1$
 
 578                 Text text = addTextField(composite, label, PREF_PB_MAX_PER_UNIT, 0, 0);
 
 579                 text.setTextLimit(6);
 
 580                 text.setLayoutData(gd);
 
 586          * (non-javadoc) Update fields and validate. @param changedKey Key that
 
 587          * changed, or null, if all changed.
 
 589         protected void validateSettings(String changedKey, String newValue) {
 
 591                 if (changedKey != null) {
 
 592                         // if (INTR_DEFAULT_COMPLIANCE.equals(changedKey)) {
 
 593                         // updateComplianceEnableState();
 
 594                         // if (DEFAULT_CONF.equals(newValue)) {
 
 595                         // updateComplianceDefaultSettings();
 
 597                         // fComplianceStatus= validateCompliance();
 
 598                         // } else if (PREF_COMPLIANCE.equals(changedKey)) {
 
 599                         // if (checkValue(INTR_DEFAULT_COMPLIANCE, DEFAULT_CONF)) {
 
 600                         // updateComplianceDefaultSettings();
 
 602                         // fComplianceStatus= validateCompliance();
 
 603                         // } else if (PREF_SOURCE_COMPATIBILITY.equals(changedKey) ||
 
 604                         // PREF_CODEGEN_TARGET_PLATFORM.equals(changedKey) ||
 
 605                         // PREF_PB_ASSERT_AS_IDENTIFIER.equals(changedKey)) {
 
 606                         // fComplianceStatus= validateCompliance();
 
 608                         if (PREF_PB_MAX_PER_UNIT.equals(changedKey)) {
 
 609                                 fMaxNumberProblemsStatus = validateMaxNumberProblems();
 
 610                                 // } else if (PREF_RESOURCE_FILTER.equals(changedKey)) {
 
 611                                 // fResourceFilterStatus= validateResourceFilters();
 
 612                                 // } else if (S.equals(changedKey) ||
 
 613                                 // PREF_PB_DEPRECATION.equals(changedKey) ) { // ||
 
 614                                 // // PREF_PB_INVALID_JAVADOC.equals(changedKey) ||
 
 615                                 // // PREF_PB_MISSING_JAVADOC_TAGS.equals(changedKey) ||
 
 616                                 // // PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
 
 617                                 // // PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
 
 619                                 // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION.equals(changedKey))
 
 621                                 // updateEnableStates();
 
 623                                 // (PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING.equals(changedKey)) {
 
 624                                 // // merging the two options
 
 625                                 // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT,
 
 631                         // updateEnableStates();
 
 632                         // updateComplianceEnableState();
 
 633                         // fComplianceStatus= validateCompliance();
 
 634                         fMaxNumberProblemsStatus = validateMaxNumberProblems();
 
 635                         // fResourceFilterStatus= validateResourceFilters();
 
 637                 // IStatus status= StatusUtil.getMostSevere(new IStatus[] {
 
 638                 // fComplianceStatus, fMaxNumberProblemsStatus, fResourceFilterStatus
 
 640                 IStatus status = StatusUtil
 
 641                                 .getMostSevere(new IStatus[] { fMaxNumberProblemsStatus });
 
 642                 fContext.statusChanged(status);
 
 645         // private void updateEnableStates() {
 
 646         // boolean enableUnusedParams= !checkValue(PREF_PB_UNUSED_PARAMETER,
 
 648         // getCheckBox(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING).setEnabled(enableUnusedParams);
 
 650         // boolean enableDeprecation= !checkValue(PREF_PB_DEPRECATION, IGNORE);
 
 651         // getCheckBox(PREF_PB_DEPRECATION_IN_DEPRECATED_CODE).setEnabled(enableDeprecation);
 
 652         // getCheckBox(PREF_PB_DEPRECATION_WHEN_OVERRIDING).setEnabled(enableDeprecation);
 
 654         // boolean enableThrownExceptions=
 
 655         // !checkValue(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION, IGNORE);
 
 656         // getCheckBox(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING).setEnabled(enableThrownExceptions);
 
 658         // boolean enableHiding= !checkValue(PREF_PB_LOCAL_VARIABLE_HIDING, IGNORE);
 
 659         // getCheckBox(PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD).setEnabled(enableHiding);
 
 661         // boolean enableInvalidTagsErrors= !checkValue(PREF_PB_INVALID_JAVADOC,
 
 663         // getCheckBox(PREF_PB_INVALID_JAVADOC_TAGS).setEnabled(enableInvalidTagsErrors);
 
 664         // setComboEnabled(PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
 
 665         // enableInvalidTagsErrors);
 
 667         // boolean enableMissingTagsErrors=
 
 668         // !checkValue(PREF_PB_MISSING_JAVADOC_TAGS, IGNORE);
 
 669         // getCheckBox(PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING).setEnabled(enableMissingTagsErrors);
 
 670         // setComboEnabled(PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY,
 
 671         // enableMissingTagsErrors);
 
 673         // boolean enableMissingCommentsErrors=
 
 674         // !checkValue(PREF_PB_MISSING_JAVADOC_COMMENTS, IGNORE);
 
 675         // getCheckBox(PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING).setEnabled(enableMissingCommentsErrors);
 
 676         // setComboEnabled(PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY,
 
 677         // enableMissingCommentsErrors);
 
 680         // private IStatus validateCompliance() {
 
 681         // StatusInfo status= new StatusInfo();
 
 682         // if (checkValue(PREF_COMPLIANCE, VERSION_1_3)) {
 
 683         // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
 
 684         // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13src14.error"));
 
 687         // } else if (checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
 
 688         // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13trg14.error"));
 
 693         // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
 
 694         // if (!checkValue(PREF_PB_ASSERT_AS_IDENTIFIER, ERROR)) {
 
 695         // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14asrterr.error"));
 
 700         // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
 
 701         // if (!checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
 
 702         // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14tgt14.error"));
 
 710         private IStatus validateMaxNumberProblems() {
 
 711                 String number = (String) fWorkingValues.get(PREF_PB_MAX_PER_UNIT);
 
 712                 StatusInfo status = new StatusInfo();
 
 713                 if (number.length() == 0) {
 
 714                         status.setError(PreferencesMessages
 
 715                                         .getString("CompilerConfigurationBlock.empty_input")); //$NON-NLS-1$
 
 718                                 int value = Integer.parseInt(number);
 
 721                                                         .setError(PreferencesMessages
 
 723                                                                                         "CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
 
 725                         } catch (NumberFormatException e) {
 
 726                                 status.setError(PreferencesMessages.getFormattedString(
 
 727                                                 "CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
 
 733         // private IStatus validateResourceFilters() {
 
 734         // String text= (String) fWorkingValues.get(PREF_RESOURCE_FILTER);
 
 736         // IWorkspace workspace= ResourcesPlugin.getWorkspace();
 
 738         // String[] filters= getTokens(text, ","); //$NON-NLS-1$
 
 739         // for (int i= 0; i < filters.length; i++) {
 
 740         // String fileName= filters[i].replace('*', 'x');
 
 741         // int resourceType= IResource.FILE;
 
 742         // int lastCharacter= fileName.length() - 1;
 
 743         // if (lastCharacter >= 0 && fileName.charAt(lastCharacter) == '/') {
 
 744         // fileName= fileName.substring(0, lastCharacter);
 
 745         // resourceType= IResource.FOLDER;
 
 747         // IStatus status= workspace.validateName(fileName, resourceType);
 
 748         // if (status.matches(IStatus.ERROR)) {
 
 750         // PreferencesMessages.getFormattedString("CompilerConfigurationBlock.filter.invalidsegment.error",
 
 751         // status.getMessage()); //$NON-NLS-1$
 
 752         // return new StatusInfo(IStatus.ERROR, message);
 
 755         // return new StatusInfo();
 
 758         protected String[] getFullBuildDialogStrings(boolean workspaceSettings) {
 
 759                 String title = PreferencesMessages
 
 760                                 .getString("CompilerConfigurationBlock.needsbuild.title"); //$NON-NLS-1$
 
 762                 if (workspaceSettings) {
 
 763                         message = PreferencesMessages
 
 764                                         .getString("CompilerConfigurationBlock.needsfullbuild.message"); //$NON-NLS-1$
 
 766                         message = PreferencesMessages
 
 767                                         .getString("CompilerConfigurationBlock.needsprojectbuild.message"); //$NON-NLS-1$
 
 769                 return new String[] { title, message };