/*******************************************************************************
 * Copyright (c) 2007, 2019 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.pde.api.tools.ui.internal.preferences;

import org.eclipse.osgi.util.NLS;

public class PreferenceMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.pde.api.tools.ui.internal.preferences.preferencemessages"; //$NON-NLS-1$
	public static String ApiBaselinesConfigurationBlock_0;
	public static String ApiErrorsWarningsConfigurationBlock_0;
	public static String ApiErrorsWarningsConfigurationBlock_1;
	public static String ApiErrorsWarningsConfigurationBlock_2;
	public static String ApiErrorsWarningsConfigurationBlock_4;
	public static String ApiErrorsWarningsConfigurationBlock_5;
	public static String ApiErrorsWarningsConfigurationBlock_automatically_remove_problem_filters;
	public static String ApiErrorsWarningsPreferencePage_0;
	public static String ApiErrorsWarningsPreferencePage_1;
	public static String ApiProblemSeveritiesConfigurationBlock_3;
	public static String ApiProblemSeveritiesNoImplement;
	public static String ApiProblemSeveritiesNoExtend;
	public static String ApiProblemSeveritiesNoReference;
	public static String ApiProblemSeveritiesNoInstanciate;
	public static String ApiProblemSeveritiesConfigurationBlock_8;
	public static String ApiProblemSeveritiesConfigurationBlock_9;
	public static String ApiProblemSeveritiesConfigurationBlock_10;
	public static String ApiProblemSeveritiesConfigurationBlock_11;
	public static String ApiProfilesPreferencePage_0;
	public static String ApiProfilesPreferencePage_1;
	public static String ApiProfilesPreferencePage_2;
	public static String ApiProfilesPreferencePage_3;
	public static String ApiProfilesPreferencePage_4;
	public static String ApiProfilesPreferencePage_QuestionDialog_Title;
	public static String ApiProfilesPreferencePage_QuestionDialog_Text;
	public static String ApiProfilesPreferencePage_QuestionDialog_buildButtonLabel;
	public static String ApiProfilesPreferencePage_QuestionDialog_dontBuildButtonLabel;
	public static String ApiToolingNotificationsBlock_0;
	public static String ApiToolingNotificationsBlock_1;
	public static String ApiToolingNotificationsBlock_2;
	public static String ApiToolingNotificationsBlock_3;
	public static String ApiToolingNotificationsBlock_4;
	public static String CompatibilityAPIComponentElement;
	public static String CompatibilityAnnotationElement;
	public static String CompatibilityInterfaceElement;
	public static String CompatibilityEnumElement;
	public static String CompatibilityClassElement;
	public static String CompatibilityFieldElement;
	public static String CompatibilityMethodElement;
	public static String CompatibilityConstructorElement;
	public static String CompatibilityTypeParameterElement;
	public static String CompatibilityReportApiBreakageWhenMajorVersionIncremented;

	public static String ReportApiComponentResolutionFailure;


	public static String ApiErrorsWarningsConfigurationBlock_error;
	public static String ApiErrorsWarningsConfigurationBlock_warning;
	public static String ApiErrorsWarningsConfigurationBlock_ignore;
	public static String ApiErrorsWarningsConfigurationBlock_error_button;
	public static String ApiErrorsWarningsConfigurationBlock_extend_non_api_class;
	public static String ApiErrorsWarningsConfigurationBlock_field_decl_non_api;
	public static String ApiErrorsWarningsConfigurationBlock_general;
	public static String ApiErrorsWarningsConfigurationBlock_warning_button;
	public static String ApiErrorsWarningsConfigurationBlock_ignore_button;
	public static String ApiErrorsWarningsConfigurationBlock_implement_non_api;
	public static String ApiErrorsWarningsConfigurationBlock_invalid_annotation_use;
	public static String ApiErrorsWarningsConfigurationBlock_invalid_tag_use;
	public static String ApiErrorsWarningsConfigurationBlock_invalid_reference_to_system_libraries;
	public static String ApiErrorsWarningsConfigurationBlock_leaks;
	public static String ApiErrorsWarningsConfigurationBlock_no_ees_installed;
	public static String ApiErrorsWarningsConfigurationBlock_override_tagged_method;
	public static String ApiErrorsWarningsConfigurationBlock_parameter_non_api;
	public static String ApiErrorsWarningsConfigurationBlock_restrictions;
	public static String ApiErrorsWarningsConfigurationBlock_return_type_non_api;

	public static String ProjectSelectionDialog_title;
	public static String ProjectSelectionDialog_message;
	public static String ProjectSelectionDialog_checkbox_text;
	public static String ApiProfilesConfigurationBlock_options_group_title;
	public static String ApiProfilesConfigurationBlock_missing_default_api_profile_message;
	public static String ApiProfilesConfigurationBlock_plugin_missing_in_baseline_message;

	public static String API_COMPONENT_REMOVED_API_TYPE;
	public static String API_COMPONENT_REMOVED_TYPE;
	public static String API_COMPONENT_REMOVED_REEXPORTED_API_TYPE;
	public static String API_COMPONENT_REMOVED_REEXPORTED_TYPE;

	public static String ANNOTATION_ADDED_METHOD_NO_DEFAULT_VALUE;
	public static String ANNOTATION_ADDED_FIELD;
	public static String ANNOTATION_REMOVED_FIELD;
	public static String ANNOTATION_REMOVED_METHOD;
	public static String ANNOTATION_REMOVED_TYPE_MEMBER;
	public static String ANNOTATION_CHANGED_TYPE_CONVERSION;

	public static String INTERFACE_ADDED_FIELD;
	public static String INTERFACE_ADDED_METHOD;
	public static String INTERFACE_ADDED_DEFAULT_METHOD;
	public static String INTERFACE_ADDED_RESTRICTIONS;
	public static String INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS;
	public static String INTERFACE_ADDED_TYPE_PARAMETER;
	public static String INTERFACE_REMOVED_TYPE_PARAMETER;
	public static String INTERFACE_REMOVED_FIELD;
	public static String INTERFACE_REMOVED_METHOD;
	public static String INTERFACE_REMOVED_TYPE_MEMBER;
	public static String INTERFACE_CHANGED_TYPE_CONVERSION;
	public static String INTERFACE_CHANGED_CONTRACTED_SUPERINTERFACES_SET;

	public static String ENUM_CHANGED_CONTRACTED_SUPERINTERFACES_SET;
	public static String ENUM_CHANGED_TYPE_CONVERSION;
	public static String ENUM_REMOVED_FIELD;
	public static String ENUM_REMOVED_ENUM_CONSTANT;
	public static String ENUM_REMOVED_METHOD;
	public static String ENUM_REMOVED_TYPE_MEMBER;

	public static String CLASS_ADDED_FIELD;
	public static String CLASS_ADDED_METHOD;
	public static String CLASS_ADDED_TYPE_PARAMETER;
	public static String CLASS_CHANGED_CONTRACTED_SUPERINTERFACES_SET;
	public static String CLASS_CHANGED_NON_ABSTRACT_TO_ABSTRACT;
	public static String CLASS_CHANGED_NON_FINAL_TO_FINAL;
	public static String CLASS_CHANGED_TYPE_CONVERSION;
	public static String CLASS_CHANGED_DECREASE_ACCESS;
	public static String CLASS_ADDED_RESTRICTIONS;
	public static String CLASS_REMOVED_FIELD;
	public static String CLASS_REMOVED_METHOD;
	public static String CLASS_REMOVED_CONSTRUCTOR;
	public static String CLASS_REMOVED_SUPERCLASS;
	public static String CLASS_REMOVED_TYPE_MEMBER;
	public static String CLASS_REMOVED_TYPE_PARAMETER;

	public static String FIELD_ADDED_VALUE;
	public static String FIELD_CHANGED_TYPE;
	public static String FIELD_CHANGED_VALUE;
	public static String FIELD_CHANGED_DECREASE_ACCESS;
	public static String FIELD_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT;
	public static String FIELD_CHANGED_NON_FINAL_TO_FINAL;
	public static String FIELD_CHANGED_STATIC_TO_NON_STATIC;
	public static String FIELD_CHANGED_NON_STATIC_TO_STATIC;
	public static String FIELD_REMOVED_VALUE;
	public static String FIELD_REMOVED_TYPE_ARGUMENT;

	public static String METHOD_ADDED_TYPE_PARAMETER;
	public static String METHOD_CHANGED_VARARGS_TO_ARRAY;
	public static String METHOD_CHANGED_DECREASE_ACCESS;
	public static String METHOD_CHANGED_NON_ABSTRACT_TO_ABSTRACT;
	public static String METHOD_CHANGED_NON_STATIC_TO_STATIC;
	public static String METHOD_ADDED_RESTRICTIONS;
	public static String METHOD_CHANGED_STATIC_TO_NON_STATIC;
	public static String METHOD_CHANGED_NON_FINAL_TO_FINAL;
	public static String METHOD_REMOVED_ANNOTATION_DEFAULT_VALUE;
	public static String METHOD_REMOVED_TYPE_PARAMETER;

	public static String CONSTRUCTOR_ADDED_TYPE_PARAMETER;
	public static String CONSTRUCTOR_CHANGED_VARARGS_TO_ARRAY;
	public static String CONSTRUCTOR_CHANGED_DECREASE_ACCESS;
	public static String CONSTRUCTOR_REMOVED_TYPE_PARAMETER;

	public static String TYPE_PARAMETER_ADDED_CLASS_BOUND;
	public static String TYPE_PARAMETER_ADDED_INTERFACE_BOUND;
	public static String TYPE_PARAMETER_CHANGED_CLASS_BOUND;
	public static String TYPE_PARAMETER_CHANGED_INTERFACE_BOUND;
	public static String TYPE_PARAMETER_REMOVED_CLASS_BOUND;
	public static String TYPE_PARAMETER_REMOVED_INTERFACE_BOUND;

	public static String VersionManagementReportChangedExecutionEnv;
	public static String VersionManagementReportMissingSinceTag;
	public static String VersionManagementReportMalformedSinceTags;
	public static String VersionManagementReportInvalidSinceTagVersion;
	public static String VersionManagementReportInvalidApiComponentVersion;
	public static String ApiErrorsWarningsConfigurationBlock_setAllto;
	public static String ApiErrorsWarningsConfigurationBlock_unused_problem_filters;
	public static String VersionManagementReportInvalidApiComponentVersionReportMinorWithoutApiChange;
	public static String VersionManagementReportInvalidApiComponentVersionReportMajorWithoutBreakingChange;

	public static String ApiProblemSeveritiesConfigurationBlock_checkable_ees;
	public static String ApiProblemSeveritiesConfigurationBlock_checkable_ees_tooltip;
	public static String ApiProblemSeveritiesConfigurationBlock_checkable_ees_link_label;
	public static String ApiProblemSeveritiesConfigurationBlock_checkable_ees_error_dialog_title;
	public static String ApiProblemSeveritiesConfigurationBlock_checkable_ees_error_dialog_description;
	public static String ApiUseScanConfigurationBlock_0;
	public static String ApiUseScanConfigurationBlock_unresolvedTypeProblem;
	public static String ApiUseScanConfigurationBlock_unresolvedMethodProblem;
	public static String ApiUseScanConfigurationBlock_unresolvedFieldProblem;
	public static String ApiUseScanPreferencePage_0;
	public static String ApiUseScanPreferencePage_1;
	public static String ApiUseScanPreferencePage_10;
	public static String ApiUseScanPreferencePage_11;
	public static String ApiUseScanPreferencePage_12;
	public static String ApiUseScanPreferencePage_2;
	public static String ApiUseScanPreferencePage_3;
	public static String ApiUseScanPreferencePage_4;
	public static String ApiUseScanPreferencePage_5;
	public static String ApiUseScanPreferencePage_6;
	public static String ApiUseScanPreferencePage_7;
	public static String ApiUseScanPreferencePage_8;
	public static String ApiUseScanPreferencePage_9;
	public static String archives__zip;
	public static String install_ee_descriptions;

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

	private PreferenceMessages() {
	}
}
