/*
 * 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.diagram.ad.part;

import org.eclipse.osgi.util.NLS;

/**
 * @generated
 */
public class Messages extends NLS {

	/**
	 * @generated
	 */
	static {
		NLS.initializeMessages("messages", Messages.class); //$NON-NLS-1$
	}

	/**
	 * @generated
	 */
	private Messages() {
	}

	/**
	 * @generated
	 */
	public static String UMLDiagramEditorUtil_OpenModelResourceErrorDialogTitle;

	/**
	 * @generated
	 */
	public static String UMLDiagramEditorUtil_OpenModelResourceErrorDialogMessage;

	/**
	 * @generated
	 */
	public static String UMLDiagramEditorUtil_CreateDiagramProgressTask;

	/**
	 * @generated
	 */
	public static String UMLDiagramEditorUtil_CreateDiagramCommandLabel;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_isModifiable;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_handleElementContentChanged;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_IncorrectInputError;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_UnableToLoadResourceError;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_NoDiagramInResourceError;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_DiagramLoadingError;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_UnsynchronizedFileSaveError;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_SaveDiagramTask;

	/**
	 * @generated
	 */
	public static String UMLDocumentProvider_SaveNextResourceTask;

	/**
	 * @generated
	 */
	public static String UMLInitDiagramFileAction_InitDiagramFileResourceErrorDialogTitle;

	/**
	 * @generated
	 */
	public static String UMLInitDiagramFileAction_InitDiagramFileResourceErrorDialogMessage;

	/**
	 * @generated
	 */
	public static String UMLInitDiagramFileAction_InitDiagramFileWizardTitle;

	/**
	 * @generated
	 */
	public static String UMLInitDiagramFileAction_OpenModelFileDialogTitle;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_CreationPageName;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_CreationPageTitle;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_CreationPageDescription;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageName;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageTitle;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageDescription;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageSelectionTitle;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageNoSelectionMessage;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_InitDiagramCommand;

	/**
	 * @generated
	 */
	public static String UMLNewDiagramFileWizard_IncorrectRootError;

	/**
	 * @generated
	 */
	public static String Flows1Group_title;

	/**
	 * @generated
	 */
	public static String Flows1Group_desc;

	/**
	 * @generated
	 */
	public static String Nodes2Group_title;

	/**
	 * @generated
	 */
	public static String Nodes2Group_desc;

	/**
	 * @generated
	 */
	public static String ControlFlow1CreationTool_title;

	/**
	 * @generated
	 */
	public static String ControlFlow1CreationTool_desc;

	/**
	 * @generated
	 */
	public static String ActivityPartition1CreationTool_title;

	/**
	 * @generated
	 */
	public static String ActivityPartition1CreationTool_desc;

	/**
	 * @generated
	 */
	public static String StartNode2CreationTool_title;

	/**
	 * @generated
	 */
	public static String StartNode2CreationTool_desc;

	/**
	 * @generated
	 */
	public static String ForkNode3CreationTool_title;

	/**
	 * @generated
	 */
	public static String ForkNode3CreationTool_desc;

	/**
	 * @generated
	 */
	public static String MergeNode4CreationTool_title;

	/**
	 * @generated
	 */
	public static String MergeNode4CreationTool_desc;

	/**
	 * @generated
	 */
	public static String DecisionNode5CreationTool_title;

	/**
	 * @generated
	 */
	public static String DecisionNode5CreationTool_desc;

	/**
	 * @generated
	 */
	public static String EndNode6CreationTool_title;

	/**
	 * @generated
	 */
	public static String EndNode6CreationTool_desc;

	/**
	 * @generated
	 */
	public static String JoinNode7CreationTool_title;

	/**
	 * @generated
	 */
	public static String JoinNode7CreationTool_desc;

	/**
	 * @generated
	 */
	public static String Activity9CreationTool_title;

	/**
	 * @generated
	 */
	public static String Activity9CreationTool_desc;

	/**
	 * @generated
	 */
	public static String Phase10CreationTool_title;

	/**
	 * @generated
	 */
	public static String Phase10CreationTool_desc;

	/**
	 * @generated
	 */
	public static String Iteration11CreationTool_title;

	/**
	 * @generated
	 */
	public static String Iteration11CreationTool_desc;

	/**
	 * @generated
	 */
	public static String TaskDescriptor12CreationTool_title;

	/**
	 * @generated
	 */
	public static String TaskDescriptor12CreationTool_desc;

	/**
	 * @generated
	 */
	public static String Milestone13CreationTool_title;

	/**
	 * @generated
	 */
	public static String Milestone13CreationTool_desc;

	/**
	 * @generated
	 */
	public static String ActivityPartitionPartitionCampartmentEditPart_title;

	/**
	 * @generated
	 */
	public static String ActivityPartitionPartitionCampartment2EditPart_title;

	/**
	 * @generated
	 */
	public static String CommandName_OpenDiagram;

	//TODO: put accessor fields manually	
}
