/*******************************************************************************
 *  Copyright (c) 2000, 2018 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 - Initial API and implementation
 *  BEA - Daniel R Somerfield - Bug 88939
 *  Remy Chi Jian Suen - Bug 221973
 *  Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes
 *******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.launcher;

import org.eclipse.osgi.util.NLS;

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

	public static String JavaArgumentsTab_5;
	public static String JavaArgumentsTab__Arguments_16;
	public static String JavaArgumentsTab__Program_arguments__5;
	public static String JavaArgumentsTab_Exception_occurred_reading_configuration___15;
	public static String JavaArgumentsTab_VM_ar_guments__6;
	public static String JavaArgumentsTab_AttributeLabel_ProgramArguments;
	public static String JavaArgumentsTab_AttributeLabel_VMArguments;
	public static String JavaArgumentsTab_AttributeLabel_UseAtStart;
	public static String JavaArgumentsTab_AttributeLabel_ActivateHelpfulNullPointerExceptions;
	public static String JavaArgumentsTab_AttributeTooltip_ActivateHelpfulNullPointerExceptions;
	public static String JavaArgumentsTab_AttributeLabel_UseArgfile;
	public static String JavaArgumentsTab_AttributeTooltip_UseArgfile;

	public static String JavaArgumentsTab_AttributeLabel_WorkingDirectory;

	public static String JavaClasspathTab_1;

	public static String JavaJRETab_0;

	public static String JavaJRETab_1;

	public static String JavaJRETab_2;

	public static String JavaJRETab_3;
	public static String JavaJRETab_4;

	public static String JavaJRETab_AttributeLabel_JREContainerPath;
	public static String JavaJRETab_AttributeLabel_VMAttributes;

	public static String MainMethodLabelProvider_0;
	public static String RuntimeClasspathAdvancedDialog_6;
	public static String RuntimeClasspathAdvancedDialog_7;

	public static String VMArgumentsBlock_0;
	public static String VMArgumentsBlock_1;
	public static String VMArgumentsBlock_2;
	public static String VMArgumentsBlock_3;

	public static String VMArgumentsBlock_VM_Arguments;
	public static String VMArgumentsBlock_4;

	public static String JavaConnectTab__Allow_termination_of_remote_VM_6;
	public static String JavaConnectTab_Conn_ect_20;
	public static String JavaConnectTab_Connect_ion_Type__7;
	public static String JavaConnectTab_Project_does_not_exist_14;
	public static String JavaConnectTab_Connection_Properties_1;
	public static String JavaConnectTab_Unable_to_display_connection_arguments__2;
	public static String JavaConnectTab__is_invalid__5;

	public static String JavaJRETab__JRE_1;

	public static String JavaJRETab_5;
	public static String JavaJRETab_7;
	public static String JavaJRETab_8;
	public static String JavaJRETab_9;
	public static String JavaJRETab_10;
	public static String JavaJRETab_11;
	public static String JavaJRETab_12;
	public static String JavaJRETab_13;

	public static String JavaMainTab__Main_19;
	public static String JavaMainTab_Choose_a_main__type_to_launch__12;
	public static String JavaMainTab_Choose_Main_Type_11;
	public static String JavaMainTab_E_xt__jars_6;
	public static String JavaMainTab_Main_cla_ss__4;
	public static String JavaMainTab_Main_type_not_specified_16;
	public static String JavaMainTab_St_op_in_main_1;
	public static String JavaMainTab_19;
	public static String JavaMainTab_20;
	public static String JavaMainTab_21;
	public static String JavaMainTab_22;
	public static String JavaMainTab_missing_project;

	public static String JavaLauncherTab_AttributeLabel_ProjectName;
	public static String SharedJavaMainTab_AttributeLabel_MainTypeName;
	public static String JavaMainTab_AttributeLabel_StopInMain;
	public static String JavaMainTab_AttributeLabel_IncludeExternalJars;
	public static String JavaMainTab_AttributeLabel_InheritedMain;

	public static String JavaUISourceLocator_askagain_message;
	public static String JavaUISourceLocator_selectprojects_message;
	public static String JavaUISourceLocator_selectprojects_title;

	public static String jdkLauncher_error_timeout;

	public static String MainMethodSearchEngine_1;
	public static String MainMethodSearchEngine_2;

	public static String SourceLookupBlock_Use_defau_lt_source_lookup_path_1;
	public static String SourceLookupBlock_Unable_to_save_source_lookup_path_1;

	public static String VMConnectTimeoutStatusHandler_Java_Application_1;

	public static String JavaClasspathTab_Cla_ss_path_3;
	public static String JavaClasspathTab_0;
	public static String JavaClasspathTab_Unable_to_save_classpath_1;
	public static String JavaClasspathTab_Invalid_runtime_classpath_1;
	public static String JavaClasspathTab_Exclude_Test_Code;

	public static String JavaClasspathTab_AttributeLabel_DefaultClasspath;
	public static String JavaClasspathTab_AttributeLabel_Classpath;

	public static String JavaDependenciesTab_0;
	public static String JavaDependenciesTab_Dependencies_3;
	public static String JavaDependenciesTab_add_modules_label;

	public static String JavaSourceLookupTab_Source_1;

	public static String SourceLookupBlock_Source_1;
	public static String SourceLookupBlock__Source_Lookup_Path__1;
	public static String SourceLookupBlock__Search_for_duplicate_source_files_on_path_1;

	public static String RuntimeClasspathAdvancedDialog_Advanced_Options_1;
	public static String RuntimeClasspathAdvancedDialog_Unable_to_create_new_entry__3;
	public static String RuntimeClasspathAdvancedDialog_Select_an_advanced_option__1;

	public static String RuntimeClasspathEntryLabelProvider_Invalid_path;

	public static String AbstractJavaMainTab_0;
	public static String AbstractJavaMainTab_1;
	public static String AbstractJavaMainTab_2;
	public static String AbstractJavaMainTab_4;
	public static String AbstractJavaMainTab_3;

	public static String appletlauncher_argumenttab_widthlabel_text;
	public static String appletlauncher_argumenttab_heightlabel_text;
	public static String appletlauncher_argumenttab_namelabel_text;
	public static String appletlauncher_argumenttab_parameterslabel_text;
	public static String appletlauncher_argumenttab_parameters_button_add_text;
	public static String appletlauncher_argumenttab_parameters_button_edit_text;
	public static String appletlauncher_argumenttab_parameters_button_remove_text;
	public static String appletlauncher_argumenttab_width_error_notaninteger;
	public static String appletlauncher_argumenttab_height_error_notaninteger;
	public static String appletlauncher_argumenttab_parameters_dialog_add_title;
	public static String appletlauncher_argumenttab_parameters_dialog_add_name_text;
	public static String appletlauncher_argumenttab_parameters_dialog_add_value_text;
	public static String appletlauncher_argumenttab_parameters_dialog_edit_title;
	public static String appletlauncher_argumenttab_parameters_dialog_edit_name_text;
	public static String appletlauncher_argumenttab_parameters_dialog_edit_value_text;
	public static String appletlauncher_argumenttab_name_defaultvalue;
	public static String appletlauncher_argumenttab_parameterscolumn_name_text;
	public static String appletlauncher_argumenttab_parameterscolumn_value_text;
	public static String appletlauncher_argumenttab_name;

	public static String appletlauncher_maintab_mainclasslabel_name;
	public static String appletlauncher_maintab_selection_applet_dialog_title;
	public static String appletlauncher_maintab_project_error_doesnotexist;
	public static String appletlauncher_maintab_type_error_doesnotexist;
	public static String appletlauncher_maintab_name;

	public static String appletlauncher_utils_error_main_type_not_specified;
	public static String appletlauncher_utils_error_main_type_does_not_exist;

	public static String appletlauncher_search_task_inprogress;

	public static String AppletParametersTab__optional_applet_instance_name__1;
	public static String AppletMainTab_1;
	public static String AppletMainTab_2;
	public static String AppletMainTab_3;

	public static String JREContainerResolution_Select_a_system_library_to_use_when_building__0__2;
	public static String JREContainerResolution_Unable_to_update_classpath_1;
	public static String DefineSystemLibraryQuickFix_Create_a_system_library_definition_2;

	public static String SelectDefaultSystemLibraryQuickFix_Select_Default_System_Library_1;
	public static String SelectDefaultSystemLibraryQuickFix__Select_the_system_library_to_use_by_default_for_building_and_running_Java_projects__2;
	public static String SelectDefaultSystemLibraryQuickFix_Unable_to_update_the_default_system_library__4;
	public static String SelectDefaultSystemLibraryQuickFix_Select_default_system_library_5;

	public static String AppletSelectionDialog_Searching____1;

	public static String ClasspathTooLongStatusHandler_0;

	public static String ClasspathTooLongStatusHandler_1;

	public static String ExecutionEnvironmentSelector_0;
	public static String ExecutionEnvironmentSelector_1;

	public static String JavaAppletLaunchShortcut_0;
	public static String JavaAppletLaunchShortcut_1;
	public static String JavaAppletLaunchShortcut_2;
	public static String JavaApplicationLaunchShortcut_0;
	public static String JavaApplicationLaunchShortcut_1;
	public static String JavaApplicationLaunchShortcut_2;
	public static String JavaLaunchShortcut_0;
	public static String JavaLaunchShortcut_1;
	public static String JavaLaunchShortcut_2;
	public static String JavaLaunchShortcut_3;

	public static String JreResolutionGenerator_open_ee_prefs;
	public static String JreResolutionGenerator_opens_ee_prefs;

	public static String JreResolutionGenerator_open_cc_props;
	public static String JreResolutionGenerator_opens_cc_props;

	public static String ProjectClasspathArugumentSelector_0;
	public static String ProjectClasspathArugumentSelector_1;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, LauncherMessages.class);
	}


}
