/*******************************************************************************
 * Copyright (c) 2007, 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.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 ApiErrorsWarningsConfigurationBlock_0;
	public static String ApiErrorsWarningsConfigurationBlock_1;
	public static String ApiErrorsWarningsConfigurationBlock_2;
	public static String ApiErrorsWarningsConfigurationBlock_3;
	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_6;
	public static String ApiProfilesPreferencePage_7;
	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 ReportApiComponentResolutionFailureDescription;

	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 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_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_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 VersionManagementReportInvalidApiComponentVersionIncludeMinorWithoutApiChange;
	public static String VersionManagementReportInvalidApiComponentVersionIncludeMajorWithoutBreakingChange;

	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() {
	}
}
