/*******************************************************************************
 *  Copyright (c) 2000, 2015 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
 *  Frits Jalvingh - Contribution for Bug 459831 - [launching] Support attaching 
 *     	external annotations to a JRE container
 *******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.jres;

import org.eclipse.osgi.util.NLS;

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

	public static String AbstractJavaCommandTab_1;
	public static String AbstractJavaCommandTab_2;
	public static String AbstractJavaCommandTab_3;
	public static String AbstractJavaCommandTab_4;
	public static String AbstractJavaCommandTab_Java_executable_must_be_specified_5;

	public static String AddVMDialog_22;

	public static String AddVMInstallWizard_0;

	public static String BuildJREDescriptor_0;
	public static String BuildJREDescriptor_1;

	public static String InstalledJREsBlock_0;
	public static String InstalledJREsBlock_1;
	public static String InstalledJREsBlock_2;
	public static String InstalledJREsBlock_3;
	public static String InstalledJREsBlock_4;
	public static String InstalledJREsBlock_5;
	public static String InstalledJREsBlock_6;
	public static String InstalledJREsBlock_9;
	public static String InstalledJREsBlock_10;
	public static String InstalledJREsBlock_11;
	public static String InstalledJREsBlock_12;
	public static String InstalledJREsBlock_13;
	public static String InstalledJREsBlock_14;
	public static String InstalledJREsBlock_15;
	public static String InstalledJREsBlock_16;

	public static String JREsComboBlock_1;

	public static String JREsComboBlock_10;

	public static String JREsComboBlock_11;

	public static String JREsComboBlock_12;

	public static String JREsComboBlock_13;

	public static String JREsComboBlock_2;
	public static String JREsComboBlock_3;
	public static String JREsComboBlock_15;
	public static String JREsComboBlock_16;

	public static String JREContainerWizardPage_JRE_System_Library_1;
	public static String JREContainerWizardPage_3;

	public static String JREContainerWizardPage_4;

	public static String JREsPreferencePage_0;

	public static String JREsPreferencePage_1;

	public static String JREsPreferencePage_14;
	public static String JREsPreferencePage_2;
	public static String JREsPreferencePage_10;
	public static String JREsPreferencePage_13;

	public static String JREsPreferencePage_3;
	public static String JREsPreferencePage_4;
	public static String JREsPreferencePage_5;
	public static String JREsPreferencePage_6;
	public static String JREsPreferencePage_7;
	public static String JREsPreferencePage_8;

	public static String addVMDialog_duplicateName;
	public static String addVMDialog_enterLocation;
	public static String addVMDialog_enterName;

	public static String EditVMInstallWizard_0;
	public static String addVMDialog_jreHome;
	public static String addVMDialog_jreName;
	public static String addVMDialog_jreType;
	public static String addVMDialog_locationNotExists;
	public static String addVMDialog_pickJRERootDialog_message;
	public static String AddVMDialog_JRE_system_libraries__1;
	public static String AddVMDialog_JRE_name_must_be_a_valid_file_name___0__1;
	public static String AddVMDialog_23;

	public static String MacVMSearch_0;

	public static String VMLibraryBlock_12;

	public static String VMLibraryBlock_13;

	public static String VMLibraryBlock_14;

	public static String VMLibraryBlock_15;

	public static String VMLibraryBlock_16;

	public static String VMLibraryBlock_17;

	public static String VMLibraryBlock_18;

	public static String JREsUpdater_0;

	public static String EEVMPage_0;

	public static String EEVMPage_1;

	public static String EEVMPage_2;

	public static String EEVMPage_3;

	public static String EEVMPage_4;

	public static String EEVMPage_5;

	public static String EEVMPage_6;

	public static String EEVMPage_7;

	public static String VMTypePage_0;

	public static String VMTypePage_1;

	public static String VMTypePage_2;

	public static String VMTypePage_3;
	public static String VMLibraryBlock_0;
	public static String VMLibraryBlock_1;

	public static String VMLibraryBlock_2;
	public static String VMLibraryBlock_3;
	public static String VMLibraryBlock_4;
	public static String VMLibraryBlock_5;
	public static String VMLibraryBlock_6;
	public static String VMLibraryBlock_7;
	public static String VMLibraryBlock_9;
	public static String VMLibraryBlock_10;
	public static String VMLibraryBlock_11;
	public static String VMExternalAnnsBlock_1;
	public static String VMExternalAnnsBlock_2;
	public static String VMExternalAnnsBlock_3;
	public static String VMExternalAnnsBlock_4;

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

	public static String JREsComboBlock_0;

	public static String JREsComboBlock_4;

	public static String JREsComboBlock_5;

	public static String StandardVMPage_0;

	public static String StandardVMPage_1;

	public static String StandardVMPage_2;

	public static String StandardVMPage_3;

	public static String JREProfilesPreferencePage_0;

	public static String JREProfilesPreferencePage_1;

	public static String JREProfilesPreferencePage_2;

	public static String JREProfilesPreferencePage_3;

	public static String JREProfilesPreferencePage_4;

	public static String JREsEnvironmentLabelProvider_0;

	public static String JREsEnvironmentLabelProvider_1;

	public static String JREsComboBlock_14;

	public static String JREsComboBlock_6;

	public static String JREsComboBlock_7;

	public static String JREsComboBlock_8;

	public static String JREsComboBlock_9;

	public static String InstalledJREsBlock_19;

	public static String InstalledJREsBlock_7;

	public static String LibraryLabelProvider_0;

	public static String VMDetailsDialog_0;
}
