/*******************************************************************************
 *  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_1;
	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);
	}
}
