/*******************************************************************************
 * Copyright (c) 2000, 2020 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.ui.preferences.cleanup;

import org.eclipse.osgi.util.NLS;

public class CleanUpMessages extends NLS {
	private static final String BUNDLE_NAME= "org.eclipse.jdt.internal.ui.preferences.cleanup.CleanUpMessages"; //$NON-NLS-1$

	public static String CleanUpConfigurationBlock_SelectedCleanUps_label;
	public static String CleanUpConfigurationBlock_ShowCleanUpWizard_checkBoxLabel;

	public static String CleanUpModifyDialog_SelectOne_Error;
	public static String CleanUpModifyDialog_XofYSelected_Label;

	public static String CleanUpProfileManager_ProfileName_EclipseBuildIn;

	public static String CodeFormatingTabPage_CheckboxName_FormatSourceCode;

	public static String CodeFormatingTabPage_correctIndentation_checkbox_text;
	public static String CodeFormatingTabPage_FormatterSettings_Description;
	public static String CodeFormatingTabPage_GroupName_Formatter;
	public static String CodeFormatingTabPage_Imports_GroupName;
	public static String CodeFormatingTabPage_OrganizeImports_CheckBoxLable;
	public static String CodeFormatingTabPage_OrganizeImportsSettings_Description;
	public static String CodeFormatingTabPage_SortMembers_GroupName;
	public static String CodeFormatingTabPage_SortMembers_CheckBoxLabel;
	public static String CodeFormatingTabPage_SortMembers_Description;

	public static String CodeFormatingTabPage_SortMembersExclusive_radio0;
	public static String CodeFormatingTabPage_SortMembersFields_CheckBoxLabel;

	public static String CodeFormatingTabPage_RemoveTrailingWhitespace_all_radio;

	public static String CodeFormatingTabPage_RemoveTrailingWhitespace_checkbox_text;

	public static String CodeFormatingTabPage_RemoveTrailingWhitespace_ignoreEmpty_radio;

	public static String CodeFormatingTabPage_SortMembersSemanticChange_warning;

	public static String CodeStyleTabPage_CheckboxName_Switch;
	public static String CodeStyleTabPage_CheckboxName_UseAddAllRemoveAll;
	public static String CodeStyleTabPage_CheckboxName_UseBlocks;
	public static String CodeStyleTabPage_CheckboxName_UseFinal;
	public static String CodeStyleTabPage_CheckboxName_UseFinalForFields;
	public static String CodeStyleTabPage_CheckboxName_UseFinalForLocals;
	public static String CodeStyleTabPage_CheckboxName_UseFinalForParameters;

	public static String CodeStyleTabPage_CheckboxName_UseParentheses;
	public static String CodeStyleTabPage_GroupName_ControlStatements;

	public static String CodeStyleTabPage_GroupName_Expressions;
	public static String CodeStyleTabPage_CheckboxName_CheckSignOfBitwiseOperation;
	public static String CodeStyleTabPage_CheckboxName_PullUpAssignment;
	public static String CodeStyleTabPage_CheckboxName_ElseIf;

	public static String CodeStyleTabPage_GroupName_NumberLiteral;
	public static String CodeStyleTabPage_CheckboxName_NumberSuffix;

	public static String CodeStyleTabPage_GroupName_VariableDeclarations;
	public static String CodeStyleTabPage_RadioName_AlwaysUseBlocks;
	public static String CodeStyleTabPage_RadioName_AlwaysUseParantheses;
	public static String CodeStyleTabPage_RadioName_NeverUseBlocks;
	public static String CodeStyleTabPage_RadioName_NeverUseParantheses;

	public static String CodeStyleTabPage_RadioName_UseBlocksSpecial;

	public static String CodeStyleTabPage_CheckboxName_SimplifyLambdaExpressionAndMethodRefSyntax;

	public static String OptimizationTabPage_GroupName_Optimization;

	public static String OptimizationTabPage_CheckboxName_BreakLoop;
	public static String OptimizationTabPage_CheckboxName_StringBuilder;
	public static String OptimizationTabPage_CheckboxName_UseLazyLogicalOperator;
	public static String OptimizationTabPage_CheckboxName_PrimitiveSerialization;
	public static String OptimizationTabPage_CheckboxName_PrecompileRegEx;
	public static String OptimizationTabPage_CheckboxName_NoStringCreation;
	public static String OptimizationTabPage_CheckboxName_BooleanLiteral;

	public static String ContributedCleanUpTabPage_ErrorPage_message;

	public static String MemberAccessesTabPage_CheckboxName_ChangeAccessesThroughInstances;
	public static String MemberAccessesTabPage_CheckboxName_ChangeAccessesThroughSubtypes;
	public static String MemberAccessesTabPage_CheckboxName_FieldQualifier;
	public static String MemberAccessesTabPage_CheckboxName_MethodQualifier;
	public static String MemberAccessesTabPage_CheckboxName_QualifyFieldWithDeclaringClass;
	public static String MemberAccessesTabPage_CheckboxName_QualifyMethodWithDeclaringClass;
	public static String MemberAccessesTabPage_CheckboxName_QualifyWithDeclaringClass;
	public static String MemberAccessesTabPage_GroupName_NonStaticAccesses;
	public static String MemberAccessesTabPage_GroupName_StaticAccesses;
	public static String MemberAccessesTabPage_RadioName_AlwaysThisForFields;
	public static String MemberAccessesTabPage_RadioName_AlwaysThisForMethods;
	public static String MemberAccessesTabPage_RadioName_NeverThisForFields;
	public static String MemberAccessesTabPage_RadioName_NeverThisForMethods;


	public static String MissingCodeTabPage_CheckboxName_AddMissingAnnotations;
	public static String MissingCodeTabPage_CheckboxName_AddMissingDeprecatedAnnotations;
	public static String MissingCodeTabPage_CheckboxName_AddMissingOverrideAnnotations;

	public static String MissingCodeTabPage_CheckboxName_AddMissingOverrideInterfaceAnnotations;
	public static String MissingCodeTabPage_CheckboxName_AddMethods;
	public static String MissingCodeTabPage_CheckboxName_AddSUID;
	public static String MissingCodeTabPage_GroupName_Annotations;
	public static String MissingCodeTabPage_GroupName_UnimplementedCode;
	public static String MissingCodeTabPage_GroupName_PotentialProgrammingProblems;
	public static String MissingCodeTabPage_Label_CodeTemplatePreferencePage;
	public static String MissingCodeTabPage_RadioName_AddDefaultSUID;
	public static String MissingCodeTabPage_RadioName_AddGeneratedSUID;

	public static String UnnecessaryCodeTabPage_CheckboxName_UnnecessaryCasts;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnnecessaryNLSTags;
	public static String UnnecessaryCodeTabPage_CheckboxName_ArraysFill;
	public static String UnnecessaryCodeTabPage_CheckboxName_EvaluateNullable;
	public static String UnnecessaryCodeTabPage_CheckboxName_PushDownNegation;
	public static String UnnecessaryCodeTabPage_CheckboxName_DoubleNegation;
	public static String UnnecessaryCodeTabPage_CheckboxName_ComparisonStatement;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantSuperCall;
	public static String UnnecessaryCodeTabPage_CheckboxName_UseDirectlyMapMethod;
	public static String UnnecessaryCodeTabPage_CheckboxName_CollectionCloning;
	public static String UnnecessaryCodeTabPage_CheckboxName_MapCloning;
	public static String UnnecessaryCodeTabPage_CheckboxName_OverriddenAssignment;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantModifiers;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantModifiers_description;
	public static String UnnecessaryCodeTabPage_CheckboxName_EmbeddedIf;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantSemicolons;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantSemicolons_description;
	public static String UnnecessaryCodeTabPage_CheckboxName_RedundantArrayCreation_description;
	public static String UnnecessaryCodeTabPage_CheckboxName_UselessReturn;
	public static String UnnecessaryCodeTabPage_CheckboxName_UselessContinue;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnnecessaryVarargsArrayCreation;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedConstructors;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedFields;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedImports;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedLocalVariables;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedMembers;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedMethods;
	public static String UnnecessaryCodeTabPage_CheckboxName_UnusedTypes;
	public static String UnnecessaryCodeTabPage_GroupName_UnnecessaryCode;
	public static String UnnecessaryCodeTabPage_GroupName_UnusedCode;

	public static String DuplicateCodeTabPage_GroupName_DuplicateCode;

	public static String DuplicateCodeTabPage_CheckboxName_TernaryOperator;
	public static String DuplicateCodeTabPage_CheckboxName_StrictlyEqualOrDifferent;
	public static String DuplicateCodeTabPage_CheckboxName_MergeConditionalBlocks;
	public static String DuplicateCodeTabPage_CheckboxName_RedundantFallingThroughBlockEnd;
	public static String DuplicateCodeTabPage_CheckboxName_RedundantIfCondition;

	public static String UnnecessaryCodeTabPage_CheckboxName_PatternMatchingForInstanceof;

	public static String JavaFeatureTabPage_GroupName_Java14;
	public static String JavaFeatureTabPage_CheckboxName_ConvertToSwitchExpressions;

	public static String JavaFeatureTabPage_GroupName_Java10;

	public static String JavaFeatureTabPage_CheckboxName_UseVar;

	public static String JavaFeatureTabPage_GroupName_Java1d8;

	public static String JavaFeatureTabPage_GroupName_FunctionalInterfaces;
	public static String JavaFeatureTabPage_CheckboxName_ConvertFunctionalInterfaces;
	public static String JavaFeatureTabPage_RadioName_UseLambdaWherePossible;
	public static String JavaFeatureTabPage_RadioName_UseAnonymous;
	public static String JavaFeatureTabPage_CheckboxName_Join;

	public static String JavaFeatureTabPage_GroupName_Java1d7;

	public static String JavaFeatureTabPage_CheckboxName_TryWithResource;
	public static String JavaFeatureTabPage_CheckboxName_RedundantTypeArguments;
	public static String JavaFeatureTabPage_CheckboxName_Hash;
	public static String JavaFeatureTabPage_CheckboxName_ObjectsEquals;

	public static String JavaFeatureTabPage_GroupName_Java1d5;

	public static String JavaFeatureTabPage_CheckboxName_ConvertForLoopToEnhanced;
	public static String JavaFeatureTabPage_CheckboxName_ConvertLoopOnlyIfLoopVarUsed;
	public static String JavaFeatureTabPage_CheckboxName_Autoboxing;
	public static String JavaFeatureTabPage_CheckboxName_Unboxing;

	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, CleanUpMessages.class);
	}

	private CleanUpMessages() {
	}
}
