/*******************************************************************************
 *  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
 *  Ian Pun & Lucas Bullen (Red Hat Inc.) - Bug 518652
 *  Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes
 *******************************************************************************/
package org.eclipse.debug.internal.ui.launchConfigurations;

import org.eclipse.osgi.util.NLS;

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

	public static String CommonTab__Browse_6;
	public static String CommonTab__Common_15;
	public static String CommonTab_Display_in_favorites_menu__10;
	public static String CommonTab_Invalid_shared_configuration_location_14;
	public static String CommonTab_Invalid_stdin_file_location_15;
	public static String CommonTab_L_ocal_3;
	public static String CommonTab_S_hared_4;
	public static String CommonTab_Select_a_location_for_the_launch_configuration_13;
	public static String CommonTab_Select_a_location_for_the_Input_File_15;
	public static String CommonTab_Cannot_save_launch_configuration_in_a_closed_project__1;
	public static String CommonTab_10;
	public static String CommonTab_11;
	public static String CommonTab_12;
	public static String CommonTab_13;
	public static String CommonTab_14;
	public static String CommonTab_0;
	public static String CommonTab_1;

	public static String CommonTab_15;
	public static String CommonTab_16;
	public static String CommonTab_17;
	public static String CommonTab_18;
	public static String CommonTab_19;
	public static String CommonTab_2;
	public static String CommonTab_20;
	public static String CommonTab_3;
	public static String CommonTab_4;
	public static String CommonTab_5;
	public static String CommonTab_6;
	public static String CommonTab_7;
	public static String CommonTab_8;
	public static String CommonTab_9;

	public static String CommonTab_AttributeLabel_ConsoleEncoding;
	public static String CommonTab_AttributeLabel_CaptureOutput;
	public static String CommonTab_AttributeLabel_CaptureInConsole;
	public static String CommonTab_AttributeLabel_CaptureStdInFile;
	public static String CommonTab_AttributeLabel_CaptureInFile;
	public static String CommonTab_AttributeLabel_AppendToFile;
	public static String CommonTab_AttributeLabel_LaunchInBackground;
	public static String CommonTab_AttributeLabel_FavoriteGroups;

	public static String CompileErrorProjectPromptStatusHandler_0;
	public static String CompileErrorProjectPromptStatusHandler_1;
	public static String CompileErrorPromptStatusHandler_0;
	public static String CompileErrorPromptStatusHandler_1;
	public static String CompileErrorPromptStatusHandler_2;
	public static String EnvironmentTab_22;

	public static String EnvironmentTab_7;

	public static String LaunchConfigurationDialog__Apply_17;
	public static String LaunchConfigurationDialog__Name__16;
	public static String LaunchConfigurationDialog_An_exception_occurred_while_retrieving_launch_configurations_20;
	public static String LaunchConfigurationEditDialog_0;
	public static String LaunchConfigurationEditDialog_1;
	public static String LaunchConfigurationFilteredTree_discard_changes;
	public static String LaunchConfigurationFilteredTree_save_changes;

	public static String LaunchConfigurationFilteredTree_search_with_changes;
	public static String LaunchConfigurationFilteredTree_search_with_errors;
	public static String LaunchConfigurationDialog_Create__manage__and_run_launch_configurations_8;
	public static String LaunchConfigurationDialog_Discard_changes__38;
	public static String LaunchConfigurationDialog_Do_you_wish_to_discard_changes_37;
	public static String LaunchConfigurationDialog_Error_19;
	public static String LaunchConfigurationDialog_Exception_occurred_creating_launch_configuration_tabs_27;
	public static String LaunchConfigurationDialog_Exception_occurred_while_saving_launch_configuration_47;
	public static String LaunchConfigurationDialog_Launch_configuration_already_exists_with_this_name_12;
	public static String LaunchConfigurationDialog_Launch_Configuration_Error_46;
	public static String LaunchConfigurationDialog_Launch_Configurations_18;
	public static String LaunchConfigurationDialog_Name_required_for_launch_configuration_11;
	public static String LaunchConfigurationDialog_Ready_to_launch_2;
	public static String LaunchConfigurationDialog_The_configuration___29;
	public static String LaunchConfigurationDialog_The_configuration___35;
	public static String LaunchConfigurationDialog_unspecified_28;
	public static String LaunchConfigurationDialog_Save_Button;
	public static String LaunchConfigurationDialog_Dont_Save_Button;
	public static String LaunchConfigurationDialog_Discard_Button;
	public static String LaunchConfigurationDialog_Dont_Discard_Button;
	public static String LaunchConfigurationDialog_Do_you_wish_to_delete_the_selected_launch_configurations__1;
	public static String LaunchConfigurationDialog_Do_you_wish_to_delete_the_selected_launch_configuration__2;
	public static String LaunchConfigurationDialog_Confirm_Launch_Configuration_Deletion_3;
	public static String LaunchConfigurationDialog_Close_1;
	public static String LaunchConfigurationDialog_Revert_2;
	public static String LaunchConfigurationsDialog_Error_1;
	public static String LaunchConfigurationsDialog_Warning_2;
	public static String LaunchConfigurationsDialog_Information_3;
	public static String LaunchConfigurationDialog_ShowCommandLine;
	public static String LaunchConfigurationDialog_ShowCommandLine_Title;
	public static String LaunchConfigurationDialog_ShowCommandLine_Copy;
	public static String LaunchConfigurationDialog_ShowCommandLine_Close;
	public static String LaunchConfigurationDialog_ShowCommandLine_Default;
	public static String LaunchConfigurationDialog_ShowCommandLine_Apply_Revert_Title;
	public static String LaunchConfigurationDialog_ShowCommandLine_Apply_Revert_Question;
	public static String LaunchConfigurationDialog_ShowCommandLine_Apply_Revert_Apply;
	public static String LaunchConfigurationDialog_ShowCommandLine_Apply_Revert_Revert;
	public static String LaunchConfigurationDialog_ShowCommandLine_Apply_Revert_Cancel;
	public static String LaunchConfigurationSelectionDialog_0;
	public static String LaunchConfigurationSelectionDialog_1;
	public static String LaunchConfigurationSelectionDialog_deleteButtonLabel;

	public static String LaunchConfigurationTabGroupViewer_14;

	public static String LaunchConfigurationTabGroupViewer_15;

	public static String LaunchConfigurationTabGroupViewer_16;

	public static String LaunchConfigurationTabGroupViewer_17;

	public static String LaunchConfigurationTabGroupViewer_18;
	public static String LaunchConfigurationTabGroupViewer_13;
	public static String LaunchConfigurationView_0;

	public static String LaunchShortcutSelectionDialog_0;

	public static String LaunchShortcutSelectionDialog_1;

	public static String LaunchShortcutSelectionDialog_2;

	public static String LaunchShortcutSelectionDialog_3;

	public static String LaunchShortcutSelectionDialog_4;

	public static String PerspectiveManager_Error_1;
	public static String PerspectiveManager_Unable_to_switch_perpsectives_as_specified_by_launch___0__4;
	public static String PerspectiveManager_Unable_to_switch_to_perspective___0__2;

	public static String LaunchConfigurationPresentationManager_0;

	public static String LaunchConfigurationPropertiesDialog_Edit_launch_configuration_properties_1;
	public static String LaunchConfigurationPropertiesDialog_Properties_for__0__2;

	public static String LaunchConfigurationDialog_Modify_attributes_and_launch__1;

	public static String LaunchConfigurationTabGroupViewer_No_tabs_defined_for_launch_configuration_type__0__1;

	public static String DuplicateLaunchConfigurationAction__Duplicate_1;

	public static String DeleteLaunchConfigurationAction_Dele_te_1;

	public static String CreateLaunchConfigurationAction_Ne_w_1;
	public static String ExportLaunchConfigurationAction_Export_1;
	public static String CreateLaunchConfigurationAction_New_configuration_2;
	public static String CreateLaunchConfigurationPrototypeAction_Ne_w_1;
	public static String CreateLaunchConfigurationPrototypeAction_New_prototype_2;
	public static String LinkPrototypeAction_Link_prototype_1;
	public static String UnlinkPrototypeAction_Unlink_prototype_1;
	public static String ResetWithPrototypeValuesAction_Reset_with_prototype_values_1;

	public static String EnvironmentTab_Variable_1;
	public static String EnvironmentTab_Value_2;
	public static String EnvironmentTab_Environment_variables_to_set__3;
	public static String EnvironmentTab_New_4;
	public static String EnvironmentTab_Edit_5;
	public static String EnvironmentTab_Remove_6;
	public static String EnvironmentTab_Environment_7;
	public static String EnvironmentTab_8;
	public static String EnvironmentTab_9;
	public static String EnvironmentTab_11;
	public static String EnvironmentTab_12;
	public static String EnvironmentTab_13;
	public static String EnvironmentTab_16;
	public static String EnvironmentTab_17;
	public static String EnvironmentTab_18;
	public static String EnvironmentTab_19;
	public static String EnvironmentTab_20;
	public static String EnvironmentTab_AttributeLabel_AppendEnvironmentVariables;
	public static String EnvironmentTab_AttributeLabel_EnvironmentVariables;

	public static String PrototypeTab_Prototype_1;
	public static String PrototypeTab_Label_2;
	public static String PrototypeTab_Link_Button_Label_3;
	public static String PrototypeTab_Unlink_Button_Label_4;
	public static String PrototypeTab_Select_Message_5;
	public static String PrototypeTab_Select_Empty_Message_6;
	public static String PrototypeTab_Select_Prototype_Error_7;
	public static String PrototypeTab_Reset_Button_Label_8;
	public static String PrototypeTab_Reset_Menu_Action_9;
	public static String PrototypeTab_Explanation_Label_10;
	public static String PrototypeTab_Explanation_Label_11;
	public static String PrototypeTab_Atrribute_label;
	public static String PrototypeTab_Modified_label;
	public static String PrototypeTab_Property_Value_label;

	public static String FavoritesDialog_1;
	public static String FavoritesDialog_2;
	public static String FavoritesDialog_3;
	public static String FavoritesDialog_4;
	public static String FavoritesDialog_5;
	public static String FavoritesDialog_6;
	public static String FavoritesDialog_7;
	public static String FavoritesDialog_0;

	public static String OrganizeFavoritesAction_0;
	public static String PerspectiveManager_12;
	public static String PerspectiveManager_13;
	public static String PerspectiveManager_15;
	public static String PerspectiveManager_suspend_description;
	public static String PerspectiveManager_launch_description;
	public static String PerspectiveManager_switch;

	public static String DebugModePromptStatusHandler_0;
	public static String DebugModePromptStatusHandler_1;

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

	public static String LaunchConfigurationTabGroupViewer_1;
	public static String LaunchConfigurationTabGroupViewer_2;
	public static String LaunchConfigurationTabGroupViewer_3;
	public static String LaunchConfigurationTabGroupViewer_4;
	public static String LaunchConfigurationTabGroupViewer_5;
	public static String LaunchConfigurationTabGroupViewer_6;
	public static String LaunchConfigurationTabGroupViewer_9;
	public static String LaunchConfigurationTabGroupViewer_10;
	public static String LaunchConfigurationTabGroupViewer_11;
	public static String LaunchConfigurationTabGroupViewer_12;
	public static String LaunchConfigurationTabGroupViewer_7;

	public static String SaveScopeResourcesHandler_1;
	public static String SaveScopeResourcesHandler_2;
	public static String SaveScopeResourcesHandler_3;

	public static String FavoritesDialog_8;

	public static String LaunchConfigurationsDialog_0;
	public static String LaunchConfigurationsDialog_1;
	public static String LaunchConfigurationsDialog_2;
	public static String LaunchConfigurationsDialog_4;
	public static String LaunchConfigurationsDialog_5;
	public static String LaunchConfigurationsDialog_6;
	public static String LaunchConfigurationsDialog_7;
	public static String LaunchConfigurationsDialog_8;
	public static String LaunchConfigurationsDialog_9;
	public static String FilterLaunchConfigurationAction_0;


	public static String LaunchConfigurationTabGroupViewer_8;

	public static String FilterDropDownMenuCreator_0;
	public static String FilterDropDownMenuCreator_1;
	public static String FilterDropDownMenuCreator_2;
	public static String FilterDropDownMenuCreator_3;
	public static String FilterDropDownMenuCreator_4;

	public static String LaunchConfigurationsDialog_c_ancel;

	public static String LaunchConfigurationsDialog_configurations;

	public static String CollapseAllLaunchConfigurationAction_0;
	public static String CollapseAllLaunchConfigurationAction_1;
	public static String CollapseAllLaunchConfigurationAction_2;

	public static String SelectLaunchersDialog_0;
	public static String SelectLaunchersDialog_1;
	public static String SelectLaunchersDialog_2;
	public static String SelectLaunchersDialog_4;
	public static String SelectLaunchersDialog_5;

	public static String SelectLaunchersDialog_launchers;
	public static String SelectLaunchOptionsDialog_3;
	public static String SelectLaunchOptionsDialog_4;

}
