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;
41 private static final String PREF_PB_PHP_KEYWORD= JavaCore.COMPILER_PB_PHP_KEYWORD;
42 private static final String PREF_PB_PHP_UPPERCASE_IDENTIFIER= JavaCore.COMPILER_PB_PHP_UPPERCASE_IDENTIFIER;
43 private static final String PREF_PB_PHP_FILE_NOT_EXIST= JavaCore.COMPILER_PB_PHP_FILE_NOT_EXIST;
44 private static final String PREF_PB_UNREACHABLE_CODE= JavaCore.COMPILER_PB_UNREACHABLE_CODE;
45 private static final String PREF_PB_UNINITIALIZED_LOCAL_VARIABLE= JavaCore.COMPILER_PB_UNINITIALIZED_LOCAL_VARIABLE;
46 // private static final String PREF_LOCAL_VARIABLE_ATTR= JavaCore.COMPILER_LOCAL_VARIABLE_ATTR;
47 // private static final String PREF_LINE_NUMBER_ATTR= JavaCore.COMPILER_LINE_NUMBER_ATTR;
48 // private static final String PREF_SOURCE_FILE_ATTR= JavaCore.COMPILER_SOURCE_FILE_ATTR;
49 // private static final String PREF_CODEGEN_UNUSED_LOCAL= JavaCore.COMPILER_CODEGEN_UNUSED_LOCAL;
50 // private static final String PREF_CODEGEN_TARGET_PLATFORM= JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM;
51 //private static final String PREF_PB_UNREACHABLE_CODE= JavaCore.COMPILER_PB_UNREACHABLE_CODE;
52 //private static final String PREF_PB_INVALID_IMPORT= JavaCore.COMPILER_PB_INVALID_IMPORT;
53 // private static final String PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD= JavaCore.COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD;
54 // private static final String PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME= JavaCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME;
55 // private static final String PREF_PB_DEPRECATION= JavaCore.COMPILER_PB_DEPRECATION;
56 // private static final String PREF_PB_DEPRECATION_WHEN_OVERRIDING= JavaCore.COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD;
58 // private static final String PREF_PB_HIDDEN_CATCH_BLOCK= JavaCore.COMPILER_PB_HIDDEN_CATCH_BLOCK;
59 // private static final String PREF_PB_UNUSED_LOCAL= JavaCore.COMPILER_PB_UNUSED_LOCAL;
60 // private static final String PREF_PB_UNUSED_PARAMETER= JavaCore.COMPILER_PB_UNUSED_PARAMETER;
61 // private static final String PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING= JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE;
62 // private static final String PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT= JavaCore.COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT;
63 // private static final String PREF_PB_SYNTHETIC_ACCESS_EMULATION= JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION;
64 // private static final String PREF_PB_NON_EXTERNALIZED_STRINGS= JavaCore.COMPILER_PB_NON_NLS_STRING_LITERAL;
65 // private static final String PREF_PB_ASSERT_AS_IDENTIFIER= JavaCore.COMPILER_PB_ASSERT_IDENTIFIER;
66 private static final String PREF_PB_MAX_PER_UNIT= JavaCore.COMPILER_PB_MAX_PER_UNIT;
67 // private static final String PREF_PB_UNUSED_IMPORT= JavaCore.COMPILER_PB_UNUSED_IMPORT;
68 // private static final String PREF_PB_UNUSED_PRIVATE= JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER;
69 // private static final String PREF_PB_STATIC_ACCESS_RECEIVER= JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER;
70 // private static final String PREF_PB_NO_EFFECT_ASSIGNMENT= JavaCore.COMPILER_PB_NO_EFFECT_ASSIGNMENT;
71 // private static final String PREF_PB_CHAR_ARRAY_IN_CONCAT= JavaCore.COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION;
72 // private static final String PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT= JavaCore.COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT;
73 // private static final String PREF_PB_LOCAL_VARIABLE_HIDING= JavaCore.COMPILER_PB_LOCAL_VARIABLE_HIDING;
74 // private static final String PREF_PB_FIELD_HIDING= JavaCore.COMPILER_PB_FIELD_HIDING;
75 // private static final String PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD= JavaCore.COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD;
76 // private static final String PREF_PB_INDIRECT_STATIC_ACCESS= JavaCore.COMPILER_PB_INDIRECT_STATIC_ACCESS;
77 // private static final String PREF_PB_SUPERFLUOUS_SEMICOLON= JavaCore.COMPILER_PB_SUPERFLUOUS_SEMICOLON;
78 // private static final String PREF_PB_UNNECESSARY_TYPE_CHECK= JavaCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK;
80 // private static final String PREF_PB_INVALID_JAVADOC= JavaCore.COMPILER_PB_INVALID_JAVADOC;
81 // private static final String PREF_PB_INVALID_JAVADOC_TAGS= JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS;
82 // private static final String PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY= JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY;
84 // private static final String PREF_PB_MISSING_JAVADOC_TAGS= JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS;
85 // private static final String PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY= JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY;
86 // private static final String PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING= JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING;
88 // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS= JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS;
89 // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY= JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY;
90 // private static final String PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING= JavaCore.COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING;
92 // private static final String PREF_SOURCE_COMPATIBILITY= JavaCore.COMPILER_SOURCE;
93 // private static final String PREF_COMPLIANCE= JavaCore.COMPILER_COMPLIANCE;
95 // private static final String PREF_RESOURCE_FILTER= JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER;
96 // private static final String PREF_BUILD_INVALID_CLASSPATH= JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH;
97 // private static final String PREF_BUILD_CLEAN_OUTPUT_FOLDER= JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER;
98 // private static final String PREF_ENABLE_EXCLUSION_PATTERNS= JavaCore.CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS;
99 // private static final String PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS= JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS;
101 // private static final String PREF_PB_INCOMPLETE_BUILDPATH= JavaCore.CORE_INCOMPLETE_CLASSPATH;
102 // private static final String PREF_PB_CIRCULAR_BUILDPATH= JavaCore.CORE_CIRCULAR_CLASSPATH;
103 //// private static final String PREF_PB_INCOMPATIBLE_JDK_LEVEL= JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL;
104 // private static final String PREF_PB_DEPRECATION_IN_DEPRECATED_CODE= JavaCore.COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE;
105 // private static final String PREF_PB_DUPLICATE_RESOURCE= JavaCore.CORE_JAVA_BUILD_DUPLICATE_RESOURCE;
106 // private static final String PREF_PB_INCOMPATIBLE_INTERFACE_METHOD= JavaCore.COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD;
108 // private static final String PREF_PB_UNDOCUMENTED_EMPTY_BLOCK= JavaCore.COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK;
109 // private static final String PREF_PB_FINALLY_BLOCK_NOT_COMPLETING= JavaCore.COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING;
110 // private static final String PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION= JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION;
111 // private static final String PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING= JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING;
112 // private static final String PREF_PB_UNQUALIFIED_FIELD_ACCESS= JavaCore.COMPILER_PB_UNQUALIFIED_FIELD_ACCESS;
114 // private static final String INTR_DEFAULT_COMPLIANCE= "internal.default.compliance"; //$NON-NLS-1$
117 private static final String GENERATE= JavaCore.GENERATE;
118 private static final String DO_NOT_GENERATE= JavaCore.DO_NOT_GENERATE;
120 private static final String PRESERVE= JavaCore.PRESERVE;
121 private static final String OPTIMIZE_OUT= JavaCore.OPTIMIZE_OUT;
123 private static final String VERSION_1_1= JavaCore.VERSION_1_1;
124 private static final String VERSION_1_2= JavaCore.VERSION_1_2;
125 private static final String VERSION_1_3= JavaCore.VERSION_1_3;
126 private static final String VERSION_1_4= JavaCore.VERSION_1_4;
128 private static final String ERROR= JavaCore.ERROR;
129 private static final String WARNING= JavaCore.WARNING;
130 private static final String IGNORE= JavaCore.IGNORE;
131 private static final String ABORT= JavaCore.ABORT;
133 private static final String CLEAN= JavaCore.CLEAN;
135 private static final String ENABLED= JavaCore.ENABLED;
136 private static final String DISABLED= JavaCore.DISABLED;
138 // private static final String PUBLIC= JavaCore.PUBLIC;
139 // private static final String PROTECTED= JavaCore.PROTECTED;
140 // private static final String DEFAULT= JavaCore.DEFAULT;
141 // private static final String PRIVATE= JavaCore.PRIVATE;
143 private static final String DEFAULT_CONF= "default"; //$NON-NLS-1$
144 private static final String USER_CONF= "user"; //$NON-NLS-1$
146 private ArrayList fComplianceControls;
147 private PixelConverter fPixelConverter;
149 private IStatus fMaxNumberProblemsStatus;
150 // private IStatus fComplianceStatus, fMaxNumberProblemsStatus, fResourceFilterStatus;
152 public CompilerConfigurationBlock(IStatusChangeListener context, IJavaProject project) {
153 super(context, project, getKeys());
155 fComplianceControls= new ArrayList();
157 // fComplianceStatus= new StatusInfo();
158 fMaxNumberProblemsStatus= new StatusInfo();
159 // fResourceFilterStatus= new StatusInfo();
161 // compatibilty code for the merge of the two option PB_SIGNAL_PARAMETER:
162 // if (ENABLED.equals(fWorkingValues.get(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT))) {
163 // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING, ENABLED);
168 private final static String[] KEYS= new String[] {
169 PREF_PB_PHP_FILE_NOT_EXIST,
170 PREF_PB_PHP_VAR_DEPRECATED,
172 PREF_PB_PHP_UPPERCASE_IDENTIFIER,
173 PREF_PB_UNREACHABLE_CODE,
174 PREF_PB_UNINITIALIZED_LOCAL_VARIABLE,
175 // PREF_LOCAL_VARIABLE_ATTR,
176 // PREF_LINE_NUMBER_ATTR, PREF_SOURCE_FILE_ATTR, PREF_CODEGEN_UNUSED_LOCAL,
177 // PREF_CODEGEN_TARGET_PLATFORM,
178 // PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD,
179 // PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME,
180 // PREF_PB_DEPRECATION,
181 // PREF_PB_HIDDEN_CATCH_BLOCK, PREF_PB_UNUSED_LOCAL,
182 // PREF_PB_UNUSED_PARAMETER,
183 // PREF_PB_SYNTHETIC_ACCESS_EMULATION, PREF_PB_NON_EXTERNALIZED_STRINGS,
184 // PREF_PB_ASSERT_AS_IDENTIFIER,
185 // PREF_PB_UNUSED_IMPORT,
186 PREF_PB_MAX_PER_UNIT,
187 // PREF_SOURCE_COMPATIBILITY,
189 // PREF_RESOURCE_FILTER, PREF_BUILD_INVALID_CLASSPATH, PREF_PB_STATIC_ACCESS_RECEIVER, PREF_PB_INCOMPLETE_BUILDPATH,
190 // PREF_PB_CIRCULAR_BUILDPATH, PREF_PB_DEPRECATION_IN_DEPRECATED_CODE, PREF_BUILD_CLEAN_OUTPUT_FOLDER,
191 // PREF_PB_DUPLICATE_RESOURCE, PREF_PB_NO_EFFECT_ASSIGNMENT, PREF_PB_INCOMPATIBLE_INTERFACE_METHOD,
192 // PREF_PB_UNUSED_PRIVATE, PREF_PB_CHAR_ARRAY_IN_CONCAT, PREF_ENABLE_EXCLUSION_PATTERNS, PREF_ENABLE_MULTIPLE_OUTPUT_LOCATIONS,
193 // PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT,
194 // PREF_PB_LOCAL_VARIABLE_HIDING,
195 // PREF_PB_FIELD_HIDING,
196 // PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD,
197 // PREF_PB_INCOMPATIBLE_JDK_LEVEL,
198 // PREF_PB_INDIRECT_STATIC_ACCESS,
199 // PREF_PB_SUPERFLUOUS_SEMICOLON,
200 // PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING,
201 // PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT,
202 // PREF_PB_UNNECESSARY_TYPE_CHECK,
203 // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION,
204 // PREF_PB_UNQUALIFIED_FIELD_ACCESS,
205 // PREF_PB_UNDOCUMENTED_EMPTY_BLOCK,
206 // PREF_PB_FINALLY_BLOCK_NOT_COMPLETING,
207 // PREF_PB_DEPRECATION_WHEN_OVERRIDING,
208 // PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING,
210 // PREF_PB_INVALID_JAVADOC,
211 // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
212 // PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY,
213 // PREF_PB_MISSING_JAVADOC_TAGS,
214 // PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY,
215 // PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING,
216 // PREF_PB_MISSING_JAVADOC_COMMENTS,
217 // PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY,
218 // PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING
221 private static String[] getKeys() {
225 protected final Map getOptions(boolean inheritJavaCoreOptions) {
226 Map map= super.getOptions(inheritJavaCoreOptions);
227 // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
231 protected final Map getDefaultOptions() {
232 Map map= super.getDefaultOptions();
233 // map.put(INTR_DEFAULT_COMPLIANCE, getCurrentCompliance(map));
239 * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite)
241 protected Control createContents(Composite parent) {
242 fPixelConverter= new PixelConverter(parent);
243 setShell(parent.getShell());
245 TabFolder folder= new TabFolder(parent, SWT.NONE);
246 folder.setLayout(new TabFolderLayout());
247 folder.setLayoutData(new GridData(GridData.FILL_BOTH));
249 Composite commonComposite= createStyleTabContent(folder);
250 // Composite unusedComposite= createUnusedCodeTabContent(folder);
251 Composite advancedComposite= createAdvancedTabContent(folder);
252 // Composite javadocComposite= createJavadocTabContent(folder);
253 // Composite complianceComposite= createComplianceTabContent(folder);
254 // Composite othersComposite= createBuildPathTabContent(folder);
256 TabItem item= new TabItem(folder, SWT.NONE);
257 item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.common.tabtitle")); //$NON-NLS-1$
258 item.setControl(commonComposite);
260 item= new TabItem(folder, SWT.NONE);
261 item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.advanced.tabtitle")); //$NON-NLS-1$
262 item.setControl(advancedComposite);
264 // item= new TabItem(folder, SWT.NONE);
265 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.unused.tabtitle")); //$NON-NLS-1$
266 // item.setControl(unusedComposite);
268 // item= new TabItem(folder, SWT.NONE);
269 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.javadoc.tabtitle")); //$NON-NLS-1$
270 // item.setControl(javadocComposite);
272 // item= new TabItem(folder, SWT.NONE);
273 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.compliance.tabtitle")); //$NON-NLS-1$
274 // item.setControl(complianceComposite);
276 // item= new TabItem(folder, SWT.NONE);
277 // item.setText(PreferencesMessages.getString("CompilerConfigurationBlock.others.tabtitle")); //$NON-NLS-1$
278 // item.setControl(othersComposite);
280 validateSettings(null, null);
285 private Composite createStyleTabContent(Composite folder) {
286 String[] errorWarningIgnore= new String[] { ERROR, WARNING, IGNORE };
288 String[] errorWarningIgnoreLabels= new String[] {
289 PreferencesMessages.getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
290 PreferencesMessages.getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
291 PreferencesMessages.getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
296 GridLayout layout= new GridLayout();
297 layout.numColumns= nColumns;
299 Composite composite= new Composite(folder, SWT.NULL);
300 composite.setLayout(layout);
302 Label description= new Label(composite, SWT.WRAP);
303 description.setText(PreferencesMessages.getString("CompilerConfigurationBlock.common.description")); //$NON-NLS-1$
304 GridData gd= new GridData();
305 gd.horizontalSpan= nColumns;
306 gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(50);
307 description.setLayoutData(gd);
309 String label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_file_not_exist.label"); //$NON-NLS-1$
310 addComboBox(composite, label, PREF_PB_PHP_FILE_NOT_EXIST, errorWarningIgnore, errorWarningIgnoreLabels, 0);
312 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_var_deprecated.label"); //$NON-NLS-1$
313 addComboBox(composite, label, PREF_PB_PHP_VAR_DEPRECATED, errorWarningIgnore, errorWarningIgnoreLabels, 0);
315 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_keyword.label"); //$NON-NLS-1$
316 addComboBox(composite, label, PREF_PB_PHP_KEYWORD, errorWarningIgnore, errorWarningIgnoreLabels, 0);
318 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_uppercase_identifier.label"); //$NON-NLS-1$
319 addComboBox(composite, label, PREF_PB_PHP_UPPERCASE_IDENTIFIER, errorWarningIgnore, errorWarningIgnoreLabels, 0);
321 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_unreachable_code.label"); //$NON-NLS-1$
322 addComboBox(composite, label, PREF_PB_UNREACHABLE_CODE, errorWarningIgnore, errorWarningIgnoreLabels, 0);
324 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_unitialized_local_variable.label"); //$NON-NLS-1$
325 addComboBox(composite, label, PREF_PB_UNINITIALIZED_LOCAL_VARIABLE, errorWarningIgnore, errorWarningIgnoreLabels, 0);
327 label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_overriding_pkg_dflt.label"); //$NON-NLS-1$
328 // addComboBox(composite, label, PREF_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, errorWarningIgnore, errorWarningIgnoreLabels, 0);
330 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_method_naming.label"); //$NON-NLS-1$
331 // addComboBox(composite, label, PREF_PB_METHOD_WITH_CONSTRUCTOR_NAME, errorWarningIgnore, errorWarningIgnoreLabels, 0);
333 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_hidden_catchblock.label"); //$NON-NLS-1$
334 // addComboBox(composite, label, PREF_PB_HIDDEN_CATCH_BLOCK, errorWarningIgnore, errorWarningIgnoreLabels, 0);
336 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_static_access_receiver.label"); //$NON-NLS-1$
337 // addComboBox(composite, label, PREF_PB_STATIC_ACCESS_RECEIVER, errorWarningIgnore, errorWarningIgnoreLabels, 0);
339 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_no_effect_assignment.label"); //$NON-NLS-1$
340 // addComboBox(composite, label, PREF_PB_NO_EFFECT_ASSIGNMENT, errorWarningIgnore, errorWarningIgnoreLabels, 0);
342 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_indirect_access_to_static.label"); //$NON-NLS-1$
343 // addComboBox(composite, label, PREF_PB_INDIRECT_STATIC_ACCESS, errorWarningIgnore, errorWarningIgnoreLabels, 0);
345 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_accidential_assignement.label"); //$NON-NLS-1$
346 // addComboBox(composite, label, PREF_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, errorWarningIgnore, errorWarningIgnoreLabels, 0);
348 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_finally_block_not_completing.label"); //$NON-NLS-1$
349 // addComboBox(composite, label, PREF_PB_FINALLY_BLOCK_NOT_COMPLETING, errorWarningIgnore, errorWarningIgnoreLabels, 0);
351 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_undocumented_empty_block.label"); //$NON-NLS-1$
352 // addComboBox(composite, label, PREF_PB_UNDOCUMENTED_EMPTY_BLOCK, errorWarningIgnore, errorWarningIgnoreLabels, 0);
358 private Composite createAdvancedTabContent(TabFolder folder) {
359 String[] errorWarningIgnore= new String[] { ERROR, WARNING, IGNORE };
361 String[] errorWarningIgnoreLabels= new String[] {
362 PreferencesMessages.getString("CompilerConfigurationBlock.error"), //$NON-NLS-1$
363 PreferencesMessages.getString("CompilerConfigurationBlock.warning"), //$NON-NLS-1$
364 PreferencesMessages.getString("CompilerConfigurationBlock.ignore") //$NON-NLS-1$
367 String[] enabledDisabled= new String[] { ENABLED, DISABLED };
371 GridLayout layout= new GridLayout();
372 layout.numColumns= nColumns;
374 Composite composite= new Composite(folder, SWT.NULL);
375 composite.setLayout(layout);
377 Label description= new Label(composite, SWT.WRAP);
378 description.setText(PreferencesMessages.getString("CompilerConfigurationBlock.advanced.description")); //$NON-NLS-1$
379 GridData gd= new GridData();
380 gd.horizontalSpan= nColumns;
381 gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(50);
382 description.setLayoutData(gd);
384 // String label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_synth_access_emul.label"); //$NON-NLS-1$
385 // addComboBox(composite, label, PREF_PB_SYNTHETIC_ACCESS_EMULATION, errorWarningIgnore, errorWarningIgnoreLabels, 0);
387 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_local_variable_hiding.label"); //$NON-NLS-1$
388 // addComboBox(composite, label, PREF_PB_LOCAL_VARIABLE_HIDING, errorWarningIgnore, errorWarningIgnoreLabels, 0);
390 // int indent= fPixelConverter.convertWidthInCharsToPixels(2);
391 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_special_param_hiding.label"); //$NON-NLS-1$
392 // addCheckBox(composite, label, PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD, enabledDisabled, indent);
394 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_field_hiding.label"); //$NON-NLS-1$
395 // addComboBox(composite, label, PREF_PB_FIELD_HIDING, errorWarningIgnore, errorWarningIgnoreLabels, 0);
397 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_non_externalized_strings.label"); //$NON-NLS-1$
398 // addComboBox(composite, label, PREF_PB_NON_EXTERNALIZED_STRINGS, errorWarningIgnore, errorWarningIgnoreLabels, 0);
400 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_incompatible_interface_method.label"); //$NON-NLS-1$
401 // addComboBox(composite, label, PREF_PB_INCOMPATIBLE_INTERFACE_METHOD, errorWarningIgnore, errorWarningIgnoreLabels, 0);
403 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_char_array_in_concat.label"); //$NON-NLS-1$
404 // addComboBox(composite, label, PREF_PB_CHAR_ARRAY_IN_CONCAT, errorWarningIgnore, errorWarningIgnoreLabels, 0);
406 // label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_unqualified_field_access.label"); //$NON-NLS-1$
407 // addComboBox(composite, label, PREF_PB_UNQUALIFIED_FIELD_ACCESS, errorWarningIgnore, errorWarningIgnoreLabels, 0);
410 gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(6);
412 String label= PreferencesMessages.getString("CompilerConfigurationBlock.pb_max_per_unit.label"); //$NON-NLS-1$
413 Text text= addTextField(composite, label, PREF_PB_MAX_PER_UNIT, 0, 0);
414 text.setTextLimit(6);
415 text.setLayoutData(gd);
425 * Update fields and validate.
426 * @param changedKey Key that changed, or null, if all changed.
428 protected void validateSettings(String changedKey, String newValue) {
430 if (changedKey != null) {
431 // if (INTR_DEFAULT_COMPLIANCE.equals(changedKey)) {
432 // updateComplianceEnableState();
433 // if (DEFAULT_CONF.equals(newValue)) {
434 // updateComplianceDefaultSettings();
436 // fComplianceStatus= validateCompliance();
437 // } else if (PREF_COMPLIANCE.equals(changedKey)) {
438 // if (checkValue(INTR_DEFAULT_COMPLIANCE, DEFAULT_CONF)) {
439 // updateComplianceDefaultSettings();
441 // fComplianceStatus= validateCompliance();
442 // } else if (PREF_SOURCE_COMPATIBILITY.equals(changedKey) ||
443 // PREF_CODEGEN_TARGET_PLATFORM.equals(changedKey) ||
444 // PREF_PB_ASSERT_AS_IDENTIFIER.equals(changedKey)) {
445 // fComplianceStatus= validateCompliance();
447 if (PREF_PB_MAX_PER_UNIT.equals(changedKey)) {
448 fMaxNumberProblemsStatus= validateMaxNumberProblems();
449 // } else if (PREF_RESOURCE_FILTER.equals(changedKey)) {
450 // fResourceFilterStatus= validateResourceFilters();
451 // } else if (S.equals(changedKey) ||
452 // PREF_PB_DEPRECATION.equals(changedKey) ) { // ||
453 //// PREF_PB_INVALID_JAVADOC.equals(changedKey) ||
454 //// PREF_PB_MISSING_JAVADOC_TAGS.equals(changedKey) ||
455 //// PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
456 //// PREF_PB_MISSING_JAVADOC_COMMENTS.equals(changedKey) ||
457 //// PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION.equals(changedKey)) {
458 // updateEnableStates();
459 // } else if (PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING.equals(changedKey)) {
460 // // merging the two options
461 // fWorkingValues.put(PREF_PB_SIGNAL_PARAMETER_IN_ABSTRACT, newValue);
466 // updateEnableStates();
467 // updateComplianceEnableState();
468 // fComplianceStatus= validateCompliance();
469 fMaxNumberProblemsStatus= validateMaxNumberProblems();
470 // fResourceFilterStatus= validateResourceFilters();
472 // IStatus status= StatusUtil.getMostSevere(new IStatus[] { fComplianceStatus, fMaxNumberProblemsStatus, fResourceFilterStatus });
473 IStatus status= StatusUtil.getMostSevere(new IStatus[] { fMaxNumberProblemsStatus });
474 fContext.statusChanged(status);
477 // private void updateEnableStates() {
478 // boolean enableUnusedParams= !checkValue(PREF_PB_UNUSED_PARAMETER, IGNORE);
479 // getCheckBox(PREF_PB_SIGNAL_PARAMETER_IN_OVERRIDING).setEnabled(enableUnusedParams);
481 // boolean enableDeprecation= !checkValue(PREF_PB_DEPRECATION, IGNORE);
482 // getCheckBox(PREF_PB_DEPRECATION_IN_DEPRECATED_CODE).setEnabled(enableDeprecation);
483 // getCheckBox(PREF_PB_DEPRECATION_WHEN_OVERRIDING).setEnabled(enableDeprecation);
485 // boolean enableThrownExceptions= !checkValue(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION, IGNORE);
486 // getCheckBox(PREF_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING).setEnabled(enableThrownExceptions);
488 // boolean enableHiding= !checkValue(PREF_PB_LOCAL_VARIABLE_HIDING, IGNORE);
489 // getCheckBox(PREF_PB_SPECIAL_PARAMETER_HIDING_FIELD).setEnabled(enableHiding);
491 // boolean enableInvalidTagsErrors= !checkValue(PREF_PB_INVALID_JAVADOC, IGNORE);
492 // getCheckBox(PREF_PB_INVALID_JAVADOC_TAGS).setEnabled(enableInvalidTagsErrors);
493 // setComboEnabled(PREF_PB_INVALID_JAVADOC_TAGS_VISIBILITY, enableInvalidTagsErrors);
495 // boolean enableMissingTagsErrors= !checkValue(PREF_PB_MISSING_JAVADOC_TAGS, IGNORE);
496 // getCheckBox(PREF_PB_MISSING_JAVADOC_TAGS_OVERRIDING).setEnabled(enableMissingTagsErrors);
497 // setComboEnabled(PREF_PB_MISSING_JAVADOC_TAGS_VISIBILITY, enableMissingTagsErrors);
499 // boolean enableMissingCommentsErrors= !checkValue(PREF_PB_MISSING_JAVADOC_COMMENTS, IGNORE);
500 // getCheckBox(PREF_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING).setEnabled(enableMissingCommentsErrors);
501 // setComboEnabled(PREF_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY, enableMissingCommentsErrors);
504 // private IStatus validateCompliance() {
505 // StatusInfo status= new StatusInfo();
506 // if (checkValue(PREF_COMPLIANCE, VERSION_1_3)) {
507 // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
508 // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13src14.error")); //$NON-NLS-1$
510 // } else if (checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
511 // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.cpl13trg14.error")); //$NON-NLS-1$
515 // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
516 // if (!checkValue(PREF_PB_ASSERT_AS_IDENTIFIER, ERROR)) {
517 // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14asrterr.error")); //$NON-NLS-1$
521 // if (checkValue(PREF_SOURCE_COMPATIBILITY, VERSION_1_4)) {
522 // if (!checkValue(PREF_CODEGEN_TARGET_PLATFORM, VERSION_1_4)) {
523 // status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.src14tgt14.error")); //$NON-NLS-1$
530 private IStatus validateMaxNumberProblems() {
531 String number= (String) fWorkingValues.get(PREF_PB_MAX_PER_UNIT);
532 StatusInfo status= new StatusInfo();
533 if (number.length() == 0) {
534 status.setError(PreferencesMessages.getString("CompilerConfigurationBlock.empty_input")); //$NON-NLS-1$
537 int value= Integer.parseInt(number);
539 status.setError(PreferencesMessages.getFormattedString("CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
541 } catch (NumberFormatException e) {
542 status.setError(PreferencesMessages.getFormattedString("CompilerConfigurationBlock.invalid_input", number)); //$NON-NLS-1$
548 // private IStatus validateResourceFilters() {
549 // String text= (String) fWorkingValues.get(PREF_RESOURCE_FILTER);
551 // IWorkspace workspace= ResourcesPlugin.getWorkspace();
553 // String[] filters= getTokens(text, ","); //$NON-NLS-1$
554 // for (int i= 0; i < filters.length; i++) {
555 // String fileName= filters[i].replace('*', 'x');
556 // int resourceType= IResource.FILE;
557 // int lastCharacter= fileName.length() - 1;
558 // if (lastCharacter >= 0 && fileName.charAt(lastCharacter) == '/') {
559 // fileName= fileName.substring(0, lastCharacter);
560 // resourceType= IResource.FOLDER;
562 // IStatus status= workspace.validateName(fileName, resourceType);
563 // if (status.matches(IStatus.ERROR)) {
564 // String message= PreferencesMessages.getFormattedString("CompilerConfigurationBlock.filter.invalidsegment.error", status.getMessage()); //$NON-NLS-1$
565 // return new StatusInfo(IStatus.ERROR, message);
568 // return new StatusInfo();
571 protected String[] getFullBuildDialogStrings(boolean workspaceSettings) {
572 String title= PreferencesMessages.getString("CompilerConfigurationBlock.needsbuild.title"); //$NON-NLS-1$
574 if (workspaceSettings) {
575 message= PreferencesMessages.getString("CompilerConfigurationBlock.needsfullbuild.message"); //$NON-NLS-1$
577 message= PreferencesMessages.getString("CompilerConfigurationBlock.needsprojectbuild.message"); //$NON-NLS-1$
579 return new String[] { title, message };