/*******************************************************************************
 * 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 Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.ui.jarimport;

import org.eclipse.osgi.util.NLS;

public final class JarImportMessages extends NLS {

	public static String BinaryRefactoringHistoryWizard_error_missing_source_attachment;

	private static final String BUNDLE_NAME= "org.eclipse.jdt.internal.ui.jarimport.JarImportMessages";//$NON-NLS-1$

	public static String JarImportWizard_cleanup_import;

	public static String JarImportWizard_error_copying_jar;

	public static String JarImportWizard_error_shared_jar;

	public static String JarImportWizard_prepare_import;

	public static String JarImportWizard_project_pattern;

	public static String JarImportWizard_replace_title;

	public static String JarImportWizard_window_title;

	public static String JarImportWizard_workspace_caption;

	public static String JarImportWizardPage_browse_button_label;

	public static String JarImportWizardPage_browse_caption;

	public static String JarImportWizardPage_empty_location;

	public static String JarImportWizardPage_import_label;

	public static String JarImportWizardPage_import_message;

	public static String JarImportWizardPage_invalid_location;

	public static String JarImportWizardPage_location_label;

	public static String JarImportWizardPage_no_jar_files;

	public static String JarImportWizardPage_no_refactorings;

	public static String JarImportWizardPage_page_description;

	public static String JarImportWizardPage_page_replace_description;

	public static String JarImportWizardPage_page_replace_title;

	public static String JarImportWizardPage_page_title;

	public static String JarImportWizardPage_replace_jar_file;

	public static String JarImportWizardPage_select_single_jar;

	public static String JarImportWizardPage_version_warning;

	public static String RefactoringImportPreviewPage_description;

	public static String RefactoringImportPreviewPage_title;

	static {
		NLS.initializeMessages(BUNDLE_NAME, JarImportMessages.class);
	}

	private JarImportMessages() {
		// Do not instantiate
	}
}
