/*******************************************************************************
 * 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 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);
	}
}