/*******************************************************************************
 *  Copyright (c) 2000, 2017 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 VMLibraryBlock_19;

	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;
}
