/**
 * 
 */
package org.eclipse.epf.diagramming.base;

import org.eclipse.epf.diagram.DiagramResources;
import org.eclipse.osgi.util.NLS;

/**
 * @author Shashidhar Kannoori
 *
 */
public class DiagrammingResources extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.epf.diagramming.Resources";//$NON-NLS-1$
	/**
	 * 
	 */
	public DiagrammingResources() {
		// TODO Auto-generated constructor stub
	}
	
	static {
		NLS.initializeMessages(BUNDLE_NAME, DiagramResources.class);
	}
	
	public static String FileDocumentProvider_createElementInfo;
	public static String FileDocumentProvider_error_out_of_sync;
	public static String FileDocumentProvider_task_saving;
	public static String FileDocumentProvider_resetDocument;
	public static String FileDocumentProvider_resourceChanged;
	public static String FileDocumentProvider_handleElementContentChanged;
	
	public static String StorageDocumentProvider_createElementInfo;
	public static String StorageDocumentProvider_updateCache;
	public static String StorageDocumentProvider_isReadOnly;
	public static String StorageDocumentProvider_isModifiable;
	
	public static String WizardPage_DIAGRAM_CREATION_FAIL_EXC_;

	public static String WizardPage_Message_FileExists_ERROR_;

	public static String FileCreator_TaskTitle;
	public static String EditorWizardPage_DialogInternalErrorTitle;
	public static String EditorWizardPage_InvalidFilename; 
	
	public static String FileSaveAs_DialogTitle;
	public static String FileSaveAs_DialogMessageText;
}
