/******************************************************************************* * Copyright (c) 2000, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.jsdt.internal.ui.preferences; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.ControlEnableState; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; import org.eclipse.wst.jsdt.core.JavaScriptCore; import org.eclipse.wst.jsdt.internal.corext.util.Messages; import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; import org.eclipse.wst.jsdt.internal.ui.dialogs.StatusInfo; import org.eclipse.wst.jsdt.internal.ui.util.PixelConverter; import org.eclipse.wst.jsdt.internal.ui.wizards.IStatusChangeListener; /** */ public class ProblemSeveritiesConfigurationBlock extends OptionsConfigurationBlock { private static final String SETTINGS_SECTION_NAME= "ProblemSeveritiesConfigurationBlock"; //$NON-NLS-1$ private static final Key PREF_PB_SEMANTIC_VALIDATION_ENABLEMENT = getJDTCoreKey(JavaScriptCore.COMPILER_SEMANTIC_VALIDATION); private static final Key PREF_PB_STRICT_ON_KEYWORD_USAGE = getJDTCoreKey(JavaScriptCore.COMPILER_STRICT_ON_KEYWORD_USAGE); // Preference store keys, see JavaScriptCore.getOptions private static final Key PREF_PB_UNDEFINED_FIELD= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNDEFINED_FIELD); // private static final Key PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME= getJDTCoreKey(JavaScriptCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME); private static final Key PREF_PB_DEPRECATION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_DEPRECATION); private static final Key PREF_PB_DEPRECATION_IN_DEPRECATED_CODE=getJDTCoreKey(JavaScriptCore.COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE); private static final Key PREF_PB_DEPRECATION_WHEN_OVERRIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD); private static final Key PREF_PB_HIDDEN_CATCH_BLOCK= getJDTCoreKey(JavaScriptCore.COMPILER_PB_HIDDEN_CATCH_BLOCK); private static final Key PREF_PB_UNUSED_LOCAL= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_LOCAL); private static final Key PREF_PB_UNUSED_PARAMETER= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_PARAMETER); // private static final Key PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE); private static final Key PREF_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE); private static final Key PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT); // private static final Key PREF_PB_SYNTHETIC_ACCESS_EMULATION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION); private static final Key PREF_PB_NON_EXTERNALIZED_STRINGS= getJDTCoreKey(JavaScriptCore.COMPILER_PB_NON_NLS_STRING_LITERAL); // private static final Key PREF_PB_UNUSED_IMPORT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_IMPORT); private static final Key PREF_PB_UNUSED_PRIVATE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER); // private static final Key PREF_PB_STATIC_ACCESS_RECEIVER= getJDTCoreKey(JavaScriptCore.COMPILER_PB_STATIC_ACCESS_RECEIVER); private static final Key PREF_PB_NO_EFFECT_ASSIGNMENT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_NO_EFFECT_ASSIGNMENT); // private static final Key PREF_PB_CHAR_ARRAY_IN_CONCAT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION); private static final Key PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT); private static final Key PREF_PB_LOCAL_VARIABLE_HIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_LOCAL_VARIABLE_HIDING); private static final Key PREF_PB_FIELD_HIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FIELD_HIDING); // private static final Key PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD= getJDTCoreKey(JavaScriptCore.COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD); private static final Key PREF_PB_INDIRECT_STATIC_ACCESS= getJDTCoreKey(JavaScriptCore.COMPILER_PB_INDIRECT_STATIC_ACCESS); private static final Key PREF_PB_EMPTY_STATEMENT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_EMPTY_STATEMENT); private static final Key PREF_PB_UNNECESSARY_ELSE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNNECESSARY_ELSE); // private static final Key PREF_PB_UNNECESSARY_TYPE_CHECK= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK); // private static final Key PREF_PB_INCOMPATIBLE_INTERFACE_METHOD= getJDTCoreKey(JavaScriptCore.COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD); // private static final Key PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION); // private static final Key PREF_PB_MISSING_SERIAL_VERSION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_MISSING_SERIAL_VERSION); private static final Key PREF_PB_UNDOCUMENTED_EMPTY_BLOCK= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK); private static final Key PREF_PB_FINALLY_BLOCK_NOT_COMPLETING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING); private static final Key PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING); // private static final Key PREF_PB_UNQUALIFIED_FIELD_ACCESS= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNQUALIFIED_FIELD_ACCESS); private static final Key PREF_PB_FORBIDDEN_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FORBIDDEN_REFERENCE); private static final Key PREF_PB_DISCOURRAGED_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_DISCOURAGED_REFERENCE); private static final Key PREF_PB_UNUSED_LABEL= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNUSED_LABEL); private static final Key PREF_PB_PARAMETER_ASSIGNMENT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_PARAMETER_ASSIGNMENT); private static final Key PREF_PB_FALLTHROUGH_CASE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FALLTHROUGH_CASE); private static final Key PREF_PB_NULL_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_NULL_REFERENCE); private static final Key PREF_PB_POTENTIAL_NULL_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE); private static final Key PREF_PB_DUPLICATE_LOCAL_VARIABLES= getJDTCoreKey(JavaScriptCore.COMPILER_PB_DUPLICATE_LOCAL_VARIABLES); private static final Key PREF_PB_REDUNDANT_NULL_CHECK= getJDTCoreKey(JavaScriptCore.COMPILER_PB_REDUNDANT_NULL_CHECK); private static final Key PREF_PB_UNINITIALIZED_LOCAL_VARIABLE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE); private static final Key PREF_PB_UNINITIALIZED_GLOBAL_VARIABLE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNINITIALIZED_GLOBAL_VARIABLE); // private static final Key PREF_15_PB_UNCHECKED_TYPE_OPERATION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNCHECKED_TYPE_OPERATION); // private static final Key PREF_15_PB_FINAL_PARAM_BOUND= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FINAL_PARAMETER_BOUND); // private static final Key PREF_15_PB_VARARGS_ARGUMENT_NEED_CAST= getJDTCoreKey(JavaScriptCore.COMPILER_PB_VARARGS_ARGUMENT_NEED_CAST); // private static final Key PREF_15_PB_AUTOBOXING_PROBLEM= getJDTCoreKey(JavaScriptCore.COMPILER_PB_AUTOBOXING); // private static final Key PREF_15_PB_MISSING_OVERRIDE_ANNOTATION= getJDTCoreKey(JavaScriptCore.COMPILER_PB_MISSING_OVERRIDE_ANNOTATION); // private static final Key PREF_15_PB_ANNOTATION_SUPER_INTERFACE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_ANNOTATION_SUPER_INTERFACE); // private static final Key PREF_15_PB_TYPE_PARAMETER_HIDING= getJDTCoreKey(JavaScriptCore.COMPILER_PB_TYPE_PARAMETER_HIDING); // private static final Key PREF_15_PB_INCOMPLETE_ENUM_SWITCH= getJDTCoreKey(JavaScriptCore.COMPILER_PB_INCOMPLETE_ENUM_SWITCH); // private static final Key PREF_15_PB_RAW_TYPE_REFERENCE= getJDTCoreKey(JavaScriptCore.COMPILER_PB_RAW_TYPE_REFERENCE); // private static final Key PREF_PB_SUPPRESS_WARNINGS= getJDTCoreKey(JavaScriptCore.COMPILER_PB_SUPPRESS_WARNINGS); // private static final Key PREF_PB_UNHANDLED_WARNING_TOKEN= getJDTCoreKey(JavaScriptCore.COMPILER_PB_UNHANDLED_WARNING_TOKEN); //private static final Key PREF_PB_FATAL_OPTIONAL_ERROR= getJDTCoreKey(JavaScriptCore.COMPILER_PB_FATAL_OPTIONAL_ERROR); /* START -------------------------------- Bug 203292 Type/Method/Filed resolution error configuration --------------------- */ private static final Key PREF_UNRESOLVED_TYPE_OPTIONAL_ERROR = getJDTCoreKey(JavaScriptCore.UNRESOLVED_TYPE_REFERENCE); private static final Key PREF_UNRESOLVED_FIELD_OPTIONAL_ERROR = getJDTCoreKey(JavaScriptCore.UNRESOLVED_FIELD_REFERENCE); private static final Key PREF_UNRESOLVED_METHOD_OPTIONAL_ERROR = getJDTCoreKey(JavaScriptCore.UNRESOLVED_METHOD_REFERENCE); /* END -------------------------------- Bug 203292 Type/Method/Filed resolution error configuration --------------------- */ /* START -------------------------------- Bug 197884 Loosly defined var (for statement) and optional semi-colon --------------------- */ private static final Key PREF_LOOSE_VAR = getJDTCoreKey(JavaScriptCore.LOOSE_VAR_DECL); private static final Key PREF_OPTIONAL_SEMICOLON = getJDTCoreKey(JavaScriptCore.OPTIONAL_SEMICOLON); /* END -------------------------------- Bug 197884 Loosly defined var (for statement) and optional semi-colon --------------------- */ /* START -------------------------------- Bug 417465 - JavaScript Validation reports max 100 problems per .js file --------------------- */ private static final Key PREF_PB_MAX_PER_UNIT= getJDTCoreKey(JavaScriptCore.COMPILER_PB_MAX_PER_UNIT); /* END -------------------------------- Bug 417465 - JavaScript Validation reports max 100 problems per .js file --------------------- */ // values private static final String ERROR= JavaScriptCore.ERROR; private static final String WARNING= JavaScriptCore.WARNING; private static final String IGNORE= JavaScriptCore.IGNORE; private static final String ENABLED= JavaScriptCore.ENABLED; private static final String DISABLED= JavaScriptCore.DISABLED; private PixelConverter fPixelConverter; private ControlEnableState fBlockEnableState; private Composite fControlsComposite; private Button semanticCheckBox; private Button strictOnKeywordsCheckBox; public ProblemSeveritiesConfigurationBlock(IStatusChangeListener context, IProject project, IWorkbenchPreferenceContainer container) { super(context, project, getKeys(), container); // compatibilty code for the merge of the two option PB_SIGNAL_PARAMETER: if (ENABLED.equals(getValue(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT))) { // setValue(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING, ENABLED); } } private static Key[] getKeys() { return new Key[] { PREF_PB_MAX_PER_UNIT, PREF_PB_SEMANTIC_VALIDATION_ENABLEMENT, PREF_PB_STRICT_ON_KEYWORD_USAGE, PREF_PB_UNDEFINED_FIELD, /*PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,*/ PREF_PB_DEPRECATION, PREF_PB_HIDDEN_CATCH_BLOCK, PREF_PB_UNUSED_LOCAL, PREF_PB_UNUSED_PARAMETER, PREF_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE, /*PREF_PB_SYNTHETIC_ACCESS_EMULATION,*/ PREF_PB_NON_EXTERNALIZED_STRINGS, /*PREF_PB_UNUSED_IMPORT,*/ PREF_PB_UNUSED_LABEL, /*PREF_PB_STATIC_ACCESS_RECEIVER, */PREF_PB_DEPRECATION_IN_DEPRECATED_CODE, PREF_PB_NO_EFFECT_ASSIGNMENT, /*PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,*/ PREF_PB_UNUSED_PRIVATE,/* PREF_PB_CHAR_ARRAY_IN_CONCAT,*/ PREF_PB_UNNECESSARY_ELSE, PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, PREF_PB_LOCAL_VARIABLE_HIDING, PREF_PB_FIELD_HIDING, /*PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,*/ PREF_PB_INDIRECT_STATIC_ACCESS, PREF_PB_EMPTY_STATEMENT, /*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_MISSING_SERIAL_VERSION, */ PREF_PB_PARAMETER_ASSIGNMENT, PREF_PB_NULL_REFERENCE, PREF_PB_POTENTIAL_NULL_REFERENCE, PREF_PB_DUPLICATE_LOCAL_VARIABLES, PREF_PB_REDUNDANT_NULL_CHECK, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE, PREF_PB_UNINITIALIZED_GLOBAL_VARIABLE, PREF_PB_FALLTHROUGH_CASE, // PREF_15_PB_UNCHECKED_TYPE_OPERATION, PREF_15_PB_FINAL_PARAM_BOUND, PREF_15_PB_VARARGS_ARGUMENT_NEED_CAST, // PREF_15_PB_AUTOBOXING_PROBLEM, PREF_15_PB_MISSING_OVERRIDE_ANNOTATION, PREF_15_PB_ANNOTATION_SUPER_INTERFACE, /*PREF_15_PB_TYPE_PARAMETER_HIDING, PREF_15_PB_INCOMPLETE_ENUM_SWITCH,*/ /*PREF_15_PB_RAW_TYPE_REFERENCE,*/ /*PREF_PB_FATAL_OPTIONAL_ERROR,*/ PREF_PB_FORBIDDEN_REFERENCE, PREF_PB_DISCOURRAGED_REFERENCE/*, PREF_PB_SUPPRESS_WARNINGS, PREF_PB_UNHANDLED_WARNING_TOKEN*/,PREF_UNRESOLVED_TYPE_OPTIONAL_ERROR,PREF_UNRESOLVED_FIELD_OPTIONAL_ERROR,PREF_UNRESOLVED_METHOD_OPTIONAL_ERROR,PREF_LOOSE_VAR,PREF_OPTIONAL_SEMICOLON }; } /* * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite) */ protected Control createContents(Composite parent) { fPixelConverter= new PixelConverter(parent); setShell(parent.getShell()); int nColumns= 3; Composite mainComp= new Composite(parent, SWT.NONE); mainComp.setFont(parent.getFont()); GridLayout layout= new GridLayout(); layout.numColumns= nColumns; layout.marginHeight= 0; layout.marginWidth= 0; mainComp.setLayout(layout); String label= PreferencesMessages.JavaBuildConfigurationBlock_pb_max_per_unit_label; Text text= addTextField(mainComp, label, PREF_PB_MAX_PER_UNIT, 0, 0); GridData gd= (GridData) text.getLayoutData(); gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(8); gd.horizontalAlignment= GridData.END; text.setTextLimit(6); label = PreferencesMessages.ProblemSeveritiesConfigurationBlock_enableStrictOnKeywordUsageValidation; strictOnKeywordsCheckBox = addCheckBox(mainComp, label, PREF_PB_STRICT_ON_KEYWORD_USAGE, new String[]{ENABLED, DISABLED}, 0); Label horizontalLine= new Label(mainComp, SWT.SEPARATOR | SWT.HORIZONTAL); horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); horizontalLine.setFont(mainComp.getFont()); label = PreferencesMessages.ProblemSeveritiesConfigurationBlock_enableSemanticValidation; semanticCheckBox = addCheckBox(mainComp, label, PREF_PB_SEMANTIC_VALIDATION_ENABLEMENT, new String[]{ENABLED, DISABLED}, 0); horizontalLine= new Label(mainComp, SWT.SEPARATOR | SWT.HORIZONTAL); horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); horizontalLine.setFont(mainComp.getFont()); Composite commonComposite= createStyleTabContent(mainComp); GridData gridData= GridDataFactory.fillDefaults().grab(true, true).span(3, 1).create(); gridData.heightHint= fPixelConverter.convertHeightInCharsToPixels(20); commonComposite.setLayoutData(gridData); fControlsComposite = commonComposite; validateSettings(null, null, null); return mainComp; } private Composite createStyleTabContent(Composite folder) { String[] errorWarningIgnore= new String[] { ERROR, WARNING, IGNORE }; String[] errorWarningIgnoreLabels= new String[] { PreferencesMessages.ProblemSeveritiesConfigurationBlock_error, PreferencesMessages.ProblemSeveritiesConfigurationBlock_warning, PreferencesMessages.ProblemSeveritiesConfigurationBlock_ignore }; String[] enabledDisabled= new String[] { ENABLED, DISABLED }; int nColumns= 3; final ScrolledPageContent sc1 = new ScrolledPageContent(folder); Composite composite= sc1.getBody(); GridLayout layout= new GridLayout(nColumns, false); layout.marginHeight= 0; layout.marginWidth= 0; composite.setLayout(layout); Label description= new Label(composite, SWT.LEFT | SWT.WRAP); description.setFont(description.getFont()); description.setText(PreferencesMessages.ProblemSeveritiesConfigurationBlock_common_description); description.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, true, false, nColumns - 1, 1)); int indentStep= fPixelConverter.convertWidthInCharsToPixels(1); int defaultIndent= indentStep * 0; int extraIndent= indentStep * 2; String label; ExpandableComposite excomposite; Composite inner; /* START -------------------------------- Bug 203292 Type/Method/Filed resolution error configuration --------------------- */ // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_Resolution; // excomposite= createStyleSection(composite, label, nColumns); // // inner= new Composite(excomposite, SWT.NONE); // inner.setFont(composite.getFont()); // inner.setLayout(new GridLayout(nColumns, false)); // excomposite.setClient(inner); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_UnresolvedTypes; // addComboBox(inner, label, PREF_UNRESOLVED_TYPE_OPTIONAL_ERROR, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_UnresolvedFields; // addComboBox(inner, label, PREF_UNRESOLVED_FIELD_OPTIONAL_ERROR, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_UnresolvedMethods; // addComboBox(inner, label, PREF_UNRESOLVED_METHOD_OPTIONAL_ERROR, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); /* END -------------------------------- Bug 203292 Type/Method/Filed resolution error configuration --------------------- */ // --- style label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_code_style; excomposite= createStyleSection(composite, label, nColumns); inner= new Composite(excomposite, SWT.NONE); inner.setFont(composite.getFont()); inner.setLayout(new GridLayout(nColumns, false)); excomposite.setClient(inner); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_static_access_receiver_label; // addComboBox(inner, label, PREF_PB_STATIC_ACCESS_RECEIVER, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_indirect_access_to_static_label; // addComboBox(inner, label, PREF_PB_INDIRECT_STATIC_ACCESS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unqualified_field_access_label; // addComboBox(inner, label, PREF_PB_UNQUALIFIED_FIELD_ACCESS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_undocumented_empty_block_label; addComboBox(inner, label, PREF_PB_UNDOCUMENTED_EMPTY_BLOCK, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_synth_access_emul_label; // addComboBox(inner, label, PREF_PB_SYNTHETIC_ACCESS_EMULATION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_method_naming_label; // addComboBox(inner, label, PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_parameter_assignment; addComboBox(inner, label, PREF_PB_PARAMETER_ASSIGNMENT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_non_externalized_strings_label; addComboBox(inner, label, PREF_PB_NON_EXTERNALIZED_STRINGS, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // --- potential_programming_problems label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_potential_programming_problems; excomposite= createStyleSection(composite, label, nColumns); inner= new Composite(excomposite, SWT.NONE); inner.setFont(composite.getFont()); inner.setLayout(new GridLayout(nColumns, false)); excomposite.setClient(inner); /* START -------------------------------- Bug 197884 Loosly defined var (for statement) and optional semi-colon --------------------- */ // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_LooselyDeclaredGlobalVar; // addComboBox(inner, label, PREF_LOOSE_VAR, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_Optionalsemicolon; addComboBox(inner, label, PREF_OPTIONAL_SEMICOLON, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); /* END -------------------------------- Bug 197884 Loosly defined var (for statement) and optional semi-colon --------------------- */ // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_undefined_field_label; // addComboBox(inner, label, PREF_PB_UNDEFINED_FIELD, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_missing_serial_version_label; // addComboBox(inner, label, PREF_PB_MISSING_SERIAL_VERSION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_no_effect_assignment_label; addComboBox(inner, label, PREF_PB_NO_EFFECT_ASSIGNMENT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_accidential_assignement_label; // addComboBox(inner, label, PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_finally_block_not_completing_label; addComboBox(inner, label, PREF_PB_FINALLY_BLOCK_NOT_COMPLETING, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_empty_statement_label; addComboBox(inner, label, PREF_PB_EMPTY_STATEMENT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_char_array_in_concat_label; // addComboBox(inner, label, PREF_PB_CHAR_ARRAY_IN_CONCAT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_hidden_catchblock_label; // addComboBox(inner, label, PREF_PB_HIDDEN_CATCH_BLOCK, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_inexact_vararg_label; // addComboBox(inner, label, PREF_15_PB_VARARGS_ARGUMENT_NEED_CAST, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_autoboxing_problem_label; // addComboBox(inner, label, PREF_15_PB_AUTOBOXING_PROBLEM, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_incomplete_enum_switch_label; // addComboBox(inner, label, PREF_15_PB_INCOMPLETE_ENUM_SWITCH, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_fall_through_case; addComboBox(inner, label, PREF_PB_FALLTHROUGH_CASE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_null_reference; // addComboBox(inner, label, PREF_PB_NULL_REFERENCE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_potential_null_reference; // addComboBox(inner, label, PREF_PB_POTENTIAL_NULL_REFERENCE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_duplicate_local_variables; // addComboBox(inner, label, PREF_PB_DUPLICATE_LOCAL_VARIABLES, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesconfigurationBlock_pb_uninitialized_local_variable; addComboBox(inner, label, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesconfigurationBlock_pb_uninitialized_global_variable; // addComboBox(inner, label, PREF_PB_UNINITIALIZED_GLOBAL_VARIABLE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // --- name_shadowing // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_name_shadowing; // excomposite= createStyleSection(composite, label, nColumns); // // inner= new Composite(excomposite, SWT.NONE); // inner.setFont(composite.getFont()); // inner.setLayout(new GridLayout(nColumns, false)); // excomposite.setClient(inner); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_field_hiding_label; // addComboBox(inner, label, PREF_PB_FIELD_HIDING, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_local_variable_hiding_label; addComboBox(inner, label, PREF_PB_LOCAL_VARIABLE_HIDING, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_special_param_hiding_label; // addCheckBox(inner, label, PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD, enabledDisabled, extraIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_type_parameter_hiding_label; // addComboBox(inner, label, PREF_15_PB_TYPE_PARAMETER_HIDING, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_incompatible_interface_method_label; // addComboBox(inner, label, PREF_PB_INCOMPATIBLE_INTERFACE_METHOD, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // --- API access rules // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_deprecations; // excomposite= createStyleSection(composite, label, nColumns); // // inner= new Composite(excomposite, SWT.NONE); // inner.setFont(composite.getFont()); // inner.setLayout(new GridLayout(nColumns, false)); // excomposite.setClient(inner); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_deprecation_label; // addComboBox(inner, label, PREF_PB_DEPRECATION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_deprecation_in_deprecation_label; // addCheckBox(inner, label, PREF_PB_DEPRECATION_IN_DEPRECATED_CODE, enabledDisabled, extraIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_deprecation_when_overriding_label; // addCheckBox(inner, label, PREF_PB_DEPRECATION_WHEN_OVERRIDING, enabledDisabled, extraIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_forbidden_reference_label; // addComboBox(inner, label, PREF_PB_FORBIDDEN_REFERENCE, errorWarningIgnore, errorWarningIgnoreLabels, 0); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_discourraged_reference_label; // addComboBox(inner, label, PREF_PB_DISCOURRAGED_REFERENCE, errorWarningIgnore, errorWarningIgnoreLabels, 0); // --- unnecessary_code label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_unnecessary_code; excomposite= createStyleSection(composite, label, nColumns); inner= new Composite(excomposite, SWT.NONE); inner.setFont(composite.getFont()); inner.setLayout(new GridLayout(nColumns, false)); excomposite.setClient(inner); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_local_label; addComboBox(inner, label, PREF_PB_UNUSED_LOCAL, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_parameter_label; // addComboBox(inner, label, PREF_PB_UNUSED_PARAMETER, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_signal_param_in_overriding_label; // addCheckBox(inner, label, PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING, enabledDisabled, extraIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_ignore_documented_unused_parameters; // addCheckBox(inner, label, PREF_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE, enabledDisabled, extraIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_imports_label; // addComboBox(inner, label, PREF_PB_UNUSED_IMPORT, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_private_label; // addComboBox(inner, label, PREF_PB_UNUSED_PRIVATE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_redundant_null_check; // addComboBox(inner, label, PREF_PB_REDUNDANT_NULL_CHECK, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unnecessary_else_label; addComboBox(inner, label, PREF_PB_UNNECESSARY_ELSE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unnecessary_type_check_label; // addComboBox(inner, label, PREF_PB_UNNECESSARY_TYPE_CHECK, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_throwing_exception_label; // addComboBox(inner, label, PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_throwing_exception_when_overriding_label; // addCheckBox(inner, label, PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING, enabledDisabled, extraIndent); // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unused_label_label; // addComboBox(inner, label, PREF_PB_UNUSED_LABEL, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // --- generics // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_generics; // excomposite= createStyleSection(composite, label, nColumns); // // // inner= new Composite(excomposite, SWT.NONE); // inner.setFont(composite.getFont()); // inner.setLayout(new GridLayout(nColumns, false)); // excomposite.setClient(inner); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unsafe_type_op_label; // addComboBox(inner, label, PREF_15_PB_UNCHECKED_TYPE_OPERATION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_raw_type_reference; // addComboBox(inner, label, PREF_15_PB_RAW_TYPE_REFERENCE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_final_param_bound_label; // addComboBox(inner, label, PREF_15_PB_FINAL_PARAM_BOUND, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // // // --- annotations // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_section_annotations; // excomposite= createStyleSection(composite, label, nColumns); // // // inner= new Composite(excomposite, SWT.NONE); // inner.setFont(composite.getFont()); // inner.setLayout(new GridLayout(nColumns, false)); // excomposite.setClient(inner); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_missing_override_annotation_label; // addComboBox(inner, label, PREF_15_PB_MISSING_OVERRIDE_ANNOTATION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_missing_deprecated_annotation_label; // addComboBox(inner, label, PREF_PB_MISSING_DEPRECATED_ANNOTATION, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_annotation_super_interface_label; // addComboBox(inner, label, PREF_15_PB_ANNOTATION_SUPER_INTERFACE, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_unhandled_surpresswarning_tokens; // addComboBox(inner, label, PREF_PB_UNHANDLED_WARNING_TOKEN, errorWarningIgnore, errorWarningIgnoreLabels, defaultIndent); // // label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_pb_enable_surpresswarning_annotation; // addCheckBox(inner, label, PREF_PB_SUPPRESS_WARNINGS, enabledDisabled, 0); //new Label(composite, SWT.NONE); //String[] enableDisableValues= new String[] { ENABLED, DISABLED }; //label= PreferencesMessages.ProblemSeveritiesConfigurationBlock_treat_optional_as_fatal; //addCheckBox(composite, label, PREF_PB_FATAL_OPTIONAL_ERROR, enableDisableValues, 0); IDialogSettings section= JavaScriptPlugin.getDefault().getDialogSettings().getSection(SETTINGS_SECTION_NAME); restoreSectionExpansionStates(section); return sc1; } /* (non-javadoc) * Update fields and validate. * @param changedKey Key that changed, or null, if all changed. */ protected void validateSettings(Key changedKey, String oldValue, String newValue) { if (!areSettingsEnabled()) { return; } IStatus maxNumberProblemsStatus = new StatusInfo(); if (changedKey != null) { if ( PREF_PB_MAX_PER_UNIT.equals(changedKey) || PREF_PB_UNUSED_PARAMETER.equals(changedKey) || PREF_PB_SEMANTIC_VALIDATION_ENABLEMENT.equals(changedKey) || PREF_PB_STRICT_ON_KEYWORD_USAGE.equals(changedKey) ) // PREF_PB_DEPRECATION.equals(changedKey) || // PREF_PB_LOCAL_VARIABLE_HIDING.equals(changedKey) || // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION.equals(changedKey)) { if (PREF_PB_MAX_PER_UNIT.equals(changedKey)) { maxNumberProblemsStatus= validateMaxNumberProblems(); } updateEnableStates(); // } else if (PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING.equals(changedKey)) { // // merging the two options // setValue(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT, newValue); } else { return; } } else { maxNumberProblemsStatus= validateMaxNumberProblems(); updateEnableStates(); } fContext.statusChanged(maxNumberProblemsStatus); } private void updateEnableStates() { boolean notJustParseErrors = checkValue(PREF_PB_SEMANTIC_VALIDATION_ENABLEMENT, ENABLED); enableConfigControls(notJustParseErrors); if (!notJustParseErrors) { //boolean enableUnusedParams= !checkValue(PREF_PB_UNUSED_PARAMETER, IGNORE); // getCheckBox(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING).setEnabled(enableUnusedParams); // getCheckBox(PREF_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE).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); } } protected void enableConfigControls(boolean enable) { if (enable) { if (fBlockEnableState != null) { fBlockEnableState.restore(); fBlockEnableState= null; } } else { if (fBlockEnableState == null) { fBlockEnableState= ControlEnableState.disable(fControlsComposite); } } } protected String[] getFullBuildDialogStrings(boolean workspaceSettings) { String title= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsbuild_title; String message; if (workspaceSettings) { message= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsfullbuild_message; } else { message= PreferencesMessages.ProblemSeveritiesConfigurationBlock_needsprojectbuild_message; } return new String[] { title, message }; } private IStatus validateMaxNumberProblems() { String number= getValue(PREF_PB_MAX_PER_UNIT); StatusInfo status= new StatusInfo(); if (number.length() == 0) { status.setError(PreferencesMessages.JavaBuildConfigurationBlock_empty_input); } else { try { int value= Integer.parseInt(number); if (value <= 0) { status.setError(Messages.format(PreferencesMessages.JavaBuildConfigurationBlock_invalid_input, number)); } } catch (NumberFormatException e) { status.setError(Messages.format(PreferencesMessages.JavaBuildConfigurationBlock_invalid_input, number)); } } return status; } /* (non-Javadoc) * @see org.eclipse.wst.jsdt.internal.ui.preferences.OptionsConfigurationBlock#dispose() */ public void dispose() { IDialogSettings section= JavaScriptPlugin.getDefault().getDialogSettings().addNewSection(SETTINGS_SECTION_NAME); storeSectionExpansionStates(section); super.dispose(); } protected void controlChanged(Widget widget) { if(widget == semanticCheckBox) { String newValue= semanticCheckBox.getSelection() ? ENABLED : DISABLED; ControlData data= (ControlData) widget.getData(); String oldValue= setValue(data.getKey(), newValue); validateSettings(data.getKey(), oldValue, newValue); } else { super.controlChanged(widget); } } }