/*******************************************************************************
 *  Copyright (c) 2000, 2016 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 - Initial API and implementation
 *  Wind River Systems - Ted Williams - [Memory View] Memory View: Workflow Enhancements (Bug 215432)
 *  Remy Chi Jian Suen - Make WorkingDirectoryBlock from JDT a Debug API class (Bug 221973)
 *******************************************************************************/
package org.eclipse.debug.internal.ui;

import org.eclipse.osgi.util.NLS;

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

    public static String AbstractAsyncTableRendering_2;

	public static String AbstractDebugCheckboxSelectionDialog_0;

	public static String AbstractDebugCheckboxSelectionDialog_1;

	public static String DebugUIPlugin_23;
	public static String DebugUIPlugin_24;
	public static String DebugUIPlugin_0;

	public static String DebugUIPlugin_25;
	public static String DebugUIPlugin_Build_error__Check_log_for_details__2;
	public static String DebugUIPlugin_Run_Debug_1;

	public static String DefaultLabelProvider__disconnected__1;

	public static String DefaultLabelProvider_0;
	public static String DefaultLabelProvider_1;
	public static String DefaultLabelProvider__unknown__1;
	public static String DefaultLabelProvider_Breakpoint_1;
	public static String DefaultLabelProvider_12;
	public static String DefaultLabelProvider_13;
	public static String DefaultLabelProvider_15;
	public static String DefaultLabelProvider_16;
	public static String MultipleInputDialog_6;
	public static String MultipleInputDialog_7;
	public static String MultipleInputDialog_8;

	public static String SwitchMemoryBlockAction_4;

    public static String WorkingDirectoryStatusHandler_0;
	public static String WorkingDirectoryStatusHandler_Eclipse_Runtime_1;

	public static String DebugUITools_3;
	public static String DebugUITools_Error_1;
	public static String DebugUITools_Exception_occurred_during_launch_2;

	public static String InstructionPointerAnnotation_0;
	public static String InstructionPointerAnnotation_1;

	public static String DefaultLabelProvider_17;

	//
	// Action
	//
	public static String AddMemoryBlockAction_title;
	public static String AddMemoryBlockAction_tooltip;
	public static String AddMemoryBlockAction_failed;
	public static String AddMemoryBlockAction_input_invalid;
	public static String AddMemoryRenderingDialog_Memory_Monitor;
	public static String AddMemoryRenderingAction_Add_renderings;
	public static String AddMemoryRenderingDialog_Memory_renderings;
	public static String AddMemoryRenderingDialog_Add_memory_rendering;
	public static String AddMemoryBlockAction_noMemoryBlock;
	public static String AddMemoryRenderingDialog_Add_New;
	public static String AddMemoryRenderingDialog_Unknown;
	public static String RemoveMemoryBlockAction_title;
	public static String RemoveMemoryBlockAction_tooltip;
	public static String MemoryViewCellModifier_failure_title;
	public static String MemoryViewCellModifier_failed;
	public static String MemoryViewCellModifier_data_is_invalid;
	public static String ResetMemoryBlockAction_title;
	public static String ResetMemoryBlockAction_tootip;
	public static String GoToAddressAction_title;
	public static String GoToAddressAction_Go_to_address_failed;
	public static String GoToAddressAction_Address_is_invalid;
	public static String CopyViewToClipboardAction_title;
	public static String CopyViewToClipboardAction_tooltip;
	public static String PrintViewTabAction_title;
	public static String PrintViewTabAction_tooltip;
	public static String PrintViewTabAction_jobtitle;
	public static String ReformatAction_title;

	//
	// Dialog
	//
	public static String MonitorMemoryBlockDialog_EnterExpressionToMonitor;
	public static String MonitorMemoryBlockDialog_MonitorMemory;
	public static String MonitorMemoryBlockDialog_NumberOfBytes;
	public static String GoToAddressDialog_Address;
	public static String GoToAddressDialog_GoToAddress;
	public static String CodePagesPrefDialog_1;
	public static String CodePagesPrefDialog_2;
	public static String CodePagesPrefDialog_4;
	public static String CodePagesPrefDialog_6;
	public static String CodePagesPrefDialog_7;
	public static String CodePagesPrefDialog_8;
	public static String CodePagesPrefDialog_9;
	public static String CodePagesPrefDialog_0;

	//
	// View Tab
	//
	public static String MemoryView_Memory_monitors;
	public static String MemoryBlocksTreeViewPane_0;
	public static String MemoryBlocksTreeViewPane_1;
	public static String MemoryBlocksTreeViewPane_2;
	public static String MemoryView_Memory_renderings;
	public static String MemoryViewContentProvider_Unable_to_retrieve_content;

	//
	// Views
	//
	public static String RemoveMemoryRenderingAction_Remove_rendering;
	public static String EmptyViewTab_Unable_to_create;
	public static String CreateRenderingTab_Memory_monitor;
	public static String CreateRenderingTab_Select_renderings_to_create;
	public static String CreateRenderingTab_Add_renderings;
	public static String CreateRenderingTab_0;
	public static String CreateRenderingTab_1;
	public static String CreateRenderingTab_2;

	public static String CreateRenderingTab_label;

	public static String CreateRendering_0;
	public static String CreateRendering_1;

	//
	// Managers
	//
	public static String ShowAddressColumnAction_0;
	public static String ShowAddressColumnAction_1;
	public static String ImageDescriptorRegistry_0;
	public static String ErrorRendering_0;
	public static String AbstractTableRendering_1;
	public static String AbstractTableRendering_2;
	public static String AbstractTableRendering_3;
	public static String AbstractTableRendering_4;
	public static String AbstractTableRendering_6;
	public static String AbstractTableRendering_8;
	public static String AbstractTableRendering_10;
	public static String AbstractTableRendering_11;
	public static String AbstractTableRendering_12;
	public static String AbstractTableRendering_13;
	public static String AbstractTableRendering_16;
	public static String AbstractTableRendering_18;
	public static String AbstractTableRendering_20;
	public static String SetPaddedStringDialog_0;
	public static String SetPaddedStringDialog_1;


	public static String TableRenderingPropertiesPage_1;
	public static String TableRenderingPropertiesPage_2;
	public static String TableRenderingPropertiesPage_3;
	public static String TableRenderingPropertiesPage_4;
	public static String TableRenderingPropertiesPage_5;
	public static String TableRenderingPropertiesPage_6;
	public static String TableRenderingPropertiesPage_8;
	public static String TableRenderingPropertiesPage_9;
	public static String TableRenderingPropertiesPage_10;
	public static String TableRenderingPropertiesPage_11;
	public static String TableRenderingPropertiesPage_12;
	public static String TableRenderingPropertiesPage_13;
	public static String TableRenderingPropertiesPage_14;
	public static String TableRenderingPropertiesPage_15;
	public static String TableRenderingPropertiesPage_16;
	public static String TableRenderingPropertiesPage_17;
	public static String TableRenderingPropertiesPage_18;
	public static String TableRenderingPropertiesPage_19;
	public static String TableRenderingPropertiesPage_20;
	public static String TableRenderingPropertiesPage_21;
	public static String TableRenderingPropertiesPage_22;
	public static String TableRenderingPropertiesPage_23;
	public static String TableRenderingPropertiesPage_25;
	public static String TableRenderingPropertiesPage_26;
	public static String TableRenderingPrefAction_0;
	public static String TableRenderingPreferencePage_0;
	public static String TableRenderingPreferencePage_2;
	public static String TableRenderingPreferencePage_3;
	public static String TableRenderingPreferencePage_4;
	public static String TableRenderingPreferencePage_5;
	public static String TableRenderingPreferencePage_6;
	public static String TableRenderingPreferencePage_7;
	public static String TableRenderingPreferencePage_8;
	public static String TableRenderingPreferencePage_9;
	public static String TableRenderingPreferencePage_10;
	public static String TableRenderingContentProvider_0;
	public static String TableRenderingContentProvider_1;
	public static String TableRenderingContentProvider_2;
	public static String SwitchMemoryBlockAction_0;
	public static String ResetMemoryBlockPreferencePage_0;
	public static String ResetMemoryBlockPreferencePage_1;
	public static String ResetMemoryBlockPreferencePage_2;
	public static String ResetMemoryBlockPreferencePage_3;
	public static String FormatTableRenderingAction_0;
	public static String FormatTableRenderingAction_1;
	public static String FormatTableRenderingAction_2;
	public static String FormatTableRenderingAction_3;
	public static String FormatTableRenderingAction_4;
	public static String FormatTableRenderingAction_5;
	public static String FormatTableRenderingAction_6;
	public static String FormatTableRenderingAction_7;
	public static String FormatTableRenderingAction_8;
	public static String FormatTableRenderingAction_9;
	public static String FormatTableRenderingAction_11;
	public static String FormatTableRenderingAction_13;
	public static String FormatTableRenderingAction_15;
	public static String FormatTableRenderingAction_16;
	public static String FormatTableRenderingDialog_0;
	public static String FormatTableRenderingDialog_1;
	public static String FormatTableRenderingDialog_2;
	public static String FormatTableRenderingDialog_3;
	public static String FormatTableRenderingDialog_4;
	public static String FormatTableRenderingDialog_5;
	public static String AbstractAsyncTableRendering_1;
	public static String CreateRendering_2;
	public static String SetPaddedStringPreferencePage_0;
	public static String ViewPaneOrientationAction_0;
	public static String ViewPaneOrientationAction_1;
	public static String ViewPaneOrientationAction_2;
	public static String ViewPaneOrientationAction_3;
	public static String GoToAddressComposite_0;
	public static String GoToAddressComposite_1;
	public static String GoToAddressComposite_2;
	public static String GoToAddressComposite_4;
	public static String GoToAddressComposite_5;
	public static String GoToAddressComposite_6;
	public static String GoToAddressComposite_7;

	//
	// Launch Groups
	//
	public static String GroupLaunch_Cannot_launch;
	public static String GroupLaunch_Cycle;
	public static String GroupLaunch_Error;
	public static String GroupLaunchConfigurationSelectionDialog_0;

	public static String GroupLaunchConfigurationSelectionDialog_10;
	public static String GroupLaunchConfigurationSelectionDialog_11;
	public static String GroupLaunchConfigurationSelectionDialog_12;
	public static String GroupLaunchConfigurationSelectionDialog_13;
	public static String GroupLaunchConfigurationSelectionDialog_14;
	public static String GroupLaunchConfigurationSelectionDialog_15;
	public static String GroupLaunchConfigurationSelectionDialog_4;
	public static String GroupLaunchConfigurationSelectionDialog_5;
	public static String GroupLaunchConfigurationSelectionDialog_7;
	public static String GroupLaunchConfigurationSelectionDialog_8;
	public static String GroupLaunchConfigurationSelectionDialog_9;
	public static String GroupLaunchConfigurationSelectionDialog_adoptText;
	public static String GroupLaunchConfigurationSelectionDialog_adoptTooltip;
	public static String GroupLaunchConfigurationSelectionDialog_errorNoRegexp;
	public static String GroupLaunchConfigurationSelectionDialog_regexp;
	public static String GroupLaunchConfigurationTabGroup_0;
	public static String GroupLaunchConfigurationTabGroup_1;
	public static String GroupLaunchConfigurationTabGroup_10;
	public static String GroupLaunchConfigurationTabGroup_12;
	public static String GroupLaunchConfigurationTabGroup_13;
	public static String GroupLaunchConfigurationTabGroup_14;
	public static String GroupLaunchConfigurationTabGroup_15;
	public static String GroupLaunchConfigurationTabGroup_16;
	public static String GroupLaunchConfigurationTabGroup_2;
	public static String GroupLaunchConfigurationTabGroup_3;
	public static String GroupLaunchConfigurationTabGroup_4;
	public static String GroupLaunchConfigurationTabGroup_5;
	public static String GroupLaunchConfigurationTabGroup_6;
	public static String GroupLaunchConfigurationTabGroup_7;
	public static String GroupLaunchConfigurationTabGroup_lblAdopt;

	//
	// Blocks
	//
	public static String WorkingDirectoryBlock_4;
	public static String WorkingDirectoryBlock_7;
	public static String WorkingDirectoryBlock_0;
	public static String WorkingDirectoryBlock_Working_Directory_8;
	public static String WorkingDirectoryBlock_10;
	public static String WorkingDirectoryBlock_12;
	public static String WorkingDirectoryBlock_17;
	public static String WorkingDirectoryBlock_18;
	public static String WorkingDirectoryBlock_19;
	public static String WorkingDirectoryBlock_20;
	public static String WorkingDirectoryBlock_1;
	public static String WorkingDirectoryBlock_Exception_occurred_reading_configuration___15;

	//
	// Elements
	//
    public static String ExpressionManagerContentProvider_1;

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