/*******************************************************************************
 * 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.library;

import org.eclipse.osgi.util.NLS;

public final class LibraryResources extends NLS {

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

	private LibraryResources() {
		// Do not instantiate
	}

	public static String libUpgradeRequired_err_msg;
	public static String oldToolVersion_err_msg;
	public static String toolVersionMismatch_err_msg;
	public static String unknown_text;
	public static String emptyLibraryPathError_reason;
	public static String missingLibraryFileError_reason;
	public static String unresolvedProxyError_reason;
	public static String configClosureWarning_msg1;
	public static String configClosureWarning_msg2;
	public static String configClosureWarning_msg3;
	public static String loadResourcesError_msg;
	public static String unsupportedGuidanceTypeError_msg;
	public static String convertGuidanceError_msg;
	public static String saveConvertedGuidanceError_msg;
	public static String convertActivityError_title;
	public static String convertActivityError_msg;
	public static String saveConvertedActivityError_msg;
	public static String error_reason;
	public static String unsupportedGuidanceTypeError_reason;
	public static String invalidLibraryPathError_reason;
	public static String couldNotLockLibrary_reason;
	public static String copyingAttachmentsTask_name;
	public static String convertGuidanceDialog_title;
	public static String convertGuidanceDialog_text;
	public static String checklist_text;
	public static String concept_text;
	public static String example_text;
	public static String guideline_text;
	public static String estimate_text;
	public static String estimatingMetric_text;
	public static String estimationConsiderations_text;
	public static String report_text;
	public static String template_text;
	public static String supportingMaterial_text;
	public static String toolMentor_text;
	public static String whitepaper_text;
	public static String termDefinition_text;
	public static String practice_text;
	public static String reusableAsset_text;
	public static String ActivityLayout_primaryTasks_text;
	public static String ActivityLayout_additionalTasks_text;
	public static String convertGuidanceError_title;
	public static String loadResourcesError_title;
	public static String loadResourcesError_reason;
	public static String roleDiagramPerforms_text;
	public static String roleDiagramResponsibleFor_text;
	public static String DefaultContentValidator_MSG0;
	public static String DefaultContentValidator_MSG1;
	public static String DefaultContentValidator_MSG4;
	public static String DefaultContentValidator_MSG7;
	public static String DefaultContentValidator_MSG10;
	public static String DefaultContentValidator_MSG11;
	public static String DefaultContentValidator_MSG12;
	public static String DefaultContentValidator_MSG15;
	public static String DefaultContentValidator_MSG17;
	public static String DefaultContentValidator_MSG19;
	public static String ImportExportUtil_MSG8;
	public static String ImportExportUtil_MSG9;
	public static String unknownGuidance_text;
	public static String CopyAttachmentsToNewLocation_log_noContentPath;
	public static String LibraryModificationHelper_cannotUpdate;
	public static String warningDlg_title;
	public static String errorDlg_title;
	public static String errorDlg_saveError;
	public static String roleDiagramFont_name;
	public static String roleDiagramFont_name_win32;
	public static String roleDiagramFont_size;
	public static String roleDiagramFont_size_win32;
	public static String roleDiagram_xMargin;
	public static String roleDiagram_xSpacing;
	public static String roleDiagram_ySpacing;
	public static String activityDiagramName;
	public static String activityDetailDiagramName;
	public static String wpDependencyDiagramName;
	public static String colon_with_space;
	
	public static String ElementError_missing_element;
	public static String ElementError_contributor_missing_base;
	public static String ElementError_extender_missing_base;
	public static String ElementError_replacer_missing_base;	
	public static String ElementError_missing_primary_performer;
	public static String ElementError_missing_mandatory_input;
	public static String ElementError_missing_output;
	
	static {
		NLS.initializeMessages(BUNDLE_NAME, LibraryResources.class);
	}
}