/*******************************************************************************
 * 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
 *     Stephan Herrmann <stephan@cs.tu-berlin.de> - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
 *******************************************************************************/
package org.eclipse.jdt.internal.ui.fix;

import org.eclipse.osgi.util.NLS;

/**
 * @since 1.11
 */
public class MultiFixMessages extends NLS {
	private static final String BUNDLE_NAME= "org.eclipse.jdt.internal.ui.fix.MultiFixMessages"; //$NON-NLS-1$

	private MultiFixMessages() {
	}

	public static String CleanUpRefactoringWizard_CleaningUp11_Title;
	public static String CleanUpRefactoringWizard_CleaningUpN1_Title;
	public static String CleanUpRefactoringWizard_CleaningUpNN_Title;
	public static String CleanUpRefactoringWizard_CleanUpConfigurationPage_title;
	public static String CleanUpRefactoringWizard_Configure_Button;
	public static String CleanUpRefactoringWizard_ConfigureCustomProfile_button;
	public static String CleanUpRefactoringWizard_CustomCleanUpsDialog_title;
	public static String CleanUpRefactoringWizard_EmptySelection_message;
	public static String CleanUpRefactoringWizard_HideWizard_Link;
	public static String CleanUpRefactoringWizard_Profile_TableHeader;
	public static String CleanUpRefactoringWizard_Project_TableHeader;
	public static String CleanUpRefactoringWizard_unknownProfile_Name;
	public static String CleanUpRefactoringWizard_UnmanagedProfileWithName_Name;
	public static String CleanUpRefactoringWizard_use_configured_radio;
	public static String CleanUpRefactoringWizard_use_custom_radio;
	public static String CleanUpRefactoringWizard_XofYCleanUpsSelected_message;
	public static String CodeFormatCleanUp_correctIndentation_description;
	public static String CodeFormatCleanUp_RemoveTrailingAll_description;
	public static String CodeFormatCleanUp_RemoveTrailingNoEmpty_description;
	public static String CodeFormatFix_correctIndentation_changeGroupLabel;
	public static String CodeFormatFix_RemoveTrailingWhitespace_changeDescription;
	public static String ImportsCleanUp_OrganizeImports_Description;
	public static String SortMembersCleanUp_AllMembers_description;
	public static String SortMembersCleanUp_Excluding_description;
	public static String SortMembersCleanUp_RemoveMarkersWarning0;
	public static String StringMultiFix_AddMissingNonNls_description;
	public static String StringMultiFix_RemoveUnnecessaryNonNls_description;

	public static String UnusedCodeMultiFix_RemoveUnusedVariable_description;
	public static String UnusedCodeMultiFix_RemoveUnusedField_description;
	public static String UnusedCodeMultiFix_RemoveUnusedType_description;
	public static String UnusedCodeMultiFix_RemoveUnusedConstructor_description;
	public static String UnusedCodeMultiFix_RemoveUnusedMethod_description;
	public static String UnusedCodeMultiFix_RemoveUnusedImport_description;
	public static String UnusedCodeCleanUp_RemoveUnusedCasts_description;

	public static String CodeStyleMultiFix_ChangeNonStaticAccess_description;
	public static String CodeStyleMultiFix_AddThisQualifier_description;
	public static String CodeStyleMultiFix_QualifyAccessToStaticField;
	public static String CodeStyleMultiFix_ChangeIndirectAccessToStaticToDirect;
	public static String CodeStyleMultiFix_ConvertSingleStatementInControlBodyToBlock_description;
	public static String CodeStyleCleanUp_addDefaultSerialVersionId_description;

	public static String CodeStyleCleanUp_PullUpAssignment_description;
	public static String CodeStyleCleanUp_ElseIf_description;
	public static String CodeStyleCleanUp_numberSuffix_description;
	public static String CodeStyleCleanUp_QualifyNonStaticMethod_description;
	public static String CodeStyleCleanUp_QualifyStaticMethod_description;
	public static String CodeStyleCleanUp_removeFieldThis_description;
	public static String CodeStyleCleanUp_removeMethodThis_description;
	public static String CodeStyleCleanUp_Switch_description;

	public static String Java50MultiFix_AddMissingDeprecated_description;
	public static String Java50MultiFix_AddMissingOverride_description;
	public static String Java50MultiFix_AddMissingOverride_description2;
	public static String Java50CleanUp_ConvertLoopOnlyIfLoopVarUsed_description;
	public static String Java50CleanUp_ConvertToEnhancedForLoop_description;
	public static String Java50CleanUp_AddTypeParameters_description;

	public static String SerialVersionCleanUp_Generated_description;

	public static String CleanUpRefactoringWizard_WindowTitle;
	public static String CleanUpRefactoringWizard_PageTitle;
	public static String CleanUpRefactoringWizard_formatterException_errorMessage;

	public static String ControlStatementsCleanUp_RemoveUnnecessaryBlocks_description;
	public static String ControlStatementsCleanUp_RemoveUnnecessaryBlocksWithReturnOrThrow_description;

	public static String SwitchExpressionsCleanUp_ConvertToSwitchExpressions_description;

	public static String UnimplementedCodeCleanUp_AddUnimplementedMethods_description;
	public static String UnimplementedCodeCleanUp_MakeAbstract_description;

	public static String ExpressionsCleanUp_addParanoiac_description;
	public static String ExpressionsCleanUp_removeUnnecessary_description;

	public static String VariableDeclarationCleanUp_AddFinalField_description;
	public static String VariableDeclarationCleanUp_AddFinalParameters_description;
	public static String VariableDeclarationCleanUp_AddFinalLocals_description;

	public static String CodeFormatCleanUp_description;
	public static String CodeFormatFix_description;

	public static String VarCleanUp_description;
	public static String PatternMatchingForInstanceofCleanup_description;
	public static String LambdaExpressionsCleanUp_use_lambda_where_possible;
	public static String LambdaExpressionsCleanUp_use_anonymous;
	public static String LambdaExpressionAndMethodRefCleanUp_description;
	public static String PatternCleanup_description;
	public static String NoStringCreationCleanUp_description;
	public static String BooleanLiteralCleanup_description;

	public static String NullAnnotationsCleanUp_add_nullable_annotation;
	public static String NullAnnotationsCleanUp_add_nonnull_annotation;
	public static String NullAnnotationsCleanUp_add_nonnullbydefault_annotation;
	public static String NullAnnotationsCleanUp_remove_redundant_nullness_annotation;

	public static String BreakLoopCleanUp_description;
	public static String StringBuilderCleanUp_description;
	public static String CodeStyleCleanUp_LazyLogical_description;
	public static String PrimitiveSerializationCleanUp_description;

	public static String TypeParametersCleanUp_InsertInferredTypeArguments_description;
	public static String TypeParametersCleanUp_RemoveUnnecessaryTypeArguments_description;
	public static String HashCleanup_description;

	public static String RedundantModifiersCleanup_description;
	public static String JoinCleanup_description;
	public static String ArraysFillCleanUp_description;
	public static String EvaluateNullableCleanUp_description;
	public static String EmbeddedIfCleanup_description;
	public static String AutoboxingCleanup_description;
	public static String UnboxingCleanup_description;
	public static String PushDownNegationCleanup_description;
	public static String DoubleNegationCleanUp_description;
	public static String RedundantComparisonStatementCleanup_description;
	public static String RedundantSuperCallCleanup_description;
	public static String TernaryOperatorCleanUp_description;
	public static String StrictlyEqualOrDifferentCleanUp_description;
	public static String MergeConditionalBlocksCleanup_description;
	public static String RedundantFallingThroughBlockEndCleanup_description;
	public static String RedundantIfConditionCleanup_description;
	public static String UseDirectlyMapMethodCleanup_description;
	public static String CollectionCloningCleanUp_description;
	public static String MapCloningCleanUp_description;
	public static String OverriddenAssignmentCleanUp_description;
	public static String RedundantSemicolonsCleanup_description;
	public static String UnnecessaryArrayCreationCleanup_description;
	public static String UselessReturnCleanUp_description;
	public static String UselessContinueCleanUp_description;
	public static String AddAllCleanup_description;
	public static String ObjectsEqualsCleanup_description;

	public static String CheckSignOfBitwiseOperation_description;

	public static String TryWithResourceCleanup_description;

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

}
