//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 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 implementation
//------------------------------------------------------------------------------
/**
 * 
 */
package org.eclipse.epf.diagramming.base;

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, DiagrammingResources.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;
}
