/*******************************************************************************
 *  Copyright (c) 2000, 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 - Initial API and implementation
 *  Ian Pun & Lucas Bullen (Red Hat Inc.) - Bug 518652
 *  Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes
 *  Jens Reimann (jreimann@redhat.com) - add copy & paste support
 *******************************************************************************/
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_21;
	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 CommonTab_AttributeLabel_TerminateDescendants;

	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_Edit_5;
	public static String EnvironmentTab_Remove_6;

	public static String EnvironmentTab_Remove_All;
	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_Add_4;



	public static String EnvironmentTab_AttributeLabel_AppendEnvironmentVariables;
	public static String EnvironmentTab_AttributeLabel_EnvironmentVariables;
	public static String EnvironmentTab_Copy;
	public static String EnvironmentTab_Paste;
	public static String EnvironmentTab_Paste_Overwrite_Title;
	public static String EnvironmentTab_Paste_Overwrite_Message;

	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;

}
