/*******************************************************************************
 * Copyright (c) 2000, 2005 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.epf.importing;

import org.eclipse.osgi.util.NLS;

public final class ImportResources extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.epf.importing.Resources";//$NON-NLS-1$

	private ImportResources() {
		// Do not instantiate
	}

	public static String ConfigurationImportService_MSG2;
	public static String importConfigWizard_title;
	public static String selectConfigDirWizardPage_title;
	public static String selectConfigDirWizardPage_text;
	public static String reviewChangesWizardPage_title;
	public static String reviewChangesWizardPage_text;
	public static String selectConfigSpecsWizardPage_title;
	public static String selectConfigSpecsWizardPage_text;
	public static String importPluginsWizard_title;
	public static String selectPluginsDirWizardPage_title;
	public static String selectPluginsDirWizardPage_text;
	public static String selectPluginsWizardPage_title;
	public static String selectPluginsWizardPage_text;
	public static String importPluginsWizard_ERR_Import_plugin;
	public static String ConfigurationImportService_MSG0;
	public static String ConfigurationImportService_MSG1;
	public static String ConfigurationImportService_MSG3;
	public static String ConfigurationImportService_handleToolVersion_error;
	public static String ImportConfigurationWizard_MSG1;
	public static String FileModifyChecker_Checkout_failed_msg;
	public static String FileModifyChecker_Checkout_failed_title;
	public static String ImportConfigurationWizard_ERR_Import_configuration;
	public static String ImportConfigReportPage_title;
	public static String ImportPluginWizard_readonly;
	public static String ImportPluginWizard_MSG1;
	public static String ImportPluginWizard_error;
	public static String ImportNoSynLib_ConvertMsg;
	public static String ImportSynLibToNoSynLib_Error;
	public static String ImportNoSynLibToSynLib_Error;
	public static String ImportPluginWizard_warn_existing_plugins;
	public static String ImportPluginWizard_confirm_continue;
	public static String ImportPluginWizard_warn_circular_plugins;
	public static String SelectConfigsToImport_label1;
	public static String ImportConfigurationWizard_error;
	public static String SelectImportConfigurationSource_MSG1;
	public static String SelectConfigSpecsToImportPage_title2;
	public static String SelectImportPluginSource_not_used;
	public static String SelectImportPluginSource_no_path;
	public static String SelectImportPluginSource_no_dir;
	public static String SelectPluginsToImport_label_plugins;
	public static String SelectPluginsToImport_label_author;
	public static String SelectPluginsToImport_label_version;
	public static String SelectPluginsToImport_label_desc;
	public static String ImportConfigurationWizard_readonly;
	public static String PluginImportingService_MSG0;
	public static String PluginImportingService_MSG1;
	public static String PluginImportingService_MSG3;
	public static String PluginImportingService_MSG5;
	public static String PluginImportingService_MSG6;
	public static String DiffReportViewer_content;
	public static String DiffReportViewer_in_import;
	public static String SelectPluginsToImport_MSG1;
	public static String DiffReportLabelProvider_yes;
	public static String SelectPluginsToImport_error;
	public static String DiffReportViewer_in_lib;
	public static String DiffReportViewer_status;
	public static String SelectPluginsToImport_libraryPluginExists;
	public static String SelectPluginsToImport_libraryPluginNotExists;
	public static String SelectConfigSpecsToImportPage_libraryConfigSpecExists;
	public static String SelectConfigSpecsToImportPage_configSpecNoSelection;
	public static String SelectConfigSpecsToImportPage_configSpecDataLabel;
	public static String SelectConfigSpecsToImportPage_label_configs;
	public static String SelectImportConfigurationSource_not_used;
	public static String SelectConfigSpecsToImportPage_label_desc;
	public static String SelectImportConfigurationSource_no_path;
	public static String SelectPluginsToImport_pluginNoSelection;
	public static String SelectImportConfigurationSource_no_dir;
	public static String SelectImportConfigurationSource_plugin_readonly;
	public static String SelectImportConfigurationSource_plugin_locked;
	public static String SelectImportConfigurationSource_error_not_updatable;
	public static String SelectPluginsToImport_pluginDataLabel;
	public static String DiffReportViewer_type;
	public static String SelectConfigSpecsToImportPage_libraryConfigSpecNotExists;
	public static String versionMismatch_oldData;
	public static String versionMismatch_oldData_unknown;
	public static String versionMismatch_oldTool;
	public static String versionMismatch_oldTool_unknown;
	public static String optionGroup_text;
	public static String checkBaseRadioButton_text;
	public static String ignoreRemoveRadioButton_text;
		
	static {
		NLS.initializeMessages(BUNDLE_NAME, ImportResources.class);
	}
}