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

	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_7;
	public static String InstalledJREsBlock_8;
	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 InstalledJREsBlock_18;

	public static String JREsComboBlock_1;

	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_Select_the_JRE_used_to_build_this_project__4;
	public static String JREContainerWizardPage_3;

	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_11;
	public static String JREsPreferencePage_13;

	public static String addVMDialog_browse1;
	public static String addVMDialog_duplicateName;
	public static String addVMDialog_enterLocation;
	public static String addVMDialog_enterName;
	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 LibraryStandin_0;

	public static String LibraryStandin_1;

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

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

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

	public static String JREsComboBlock_7;

	public static String JREsComboBlock_8;

	public static String JREsComboBlock_9;

	public static String JREsComboBlock_10;

	public static String JREsComboBlock_11;

	public static String JREsComboBlock_12;

	public static String JREsComboBlock_13;

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

	public static String VMDetailsDialog_0;
}
