/*
 * Copyright (c) 2010, 2012, 2015 Eike Stepper (Berlin, Germany) 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:
 *     Martin Fluegge - initial API and implementation
 *
 */
package org.eclipse.emf.cdo.dawn.examples.acore.diagram.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 AcoreCreationWizardTitle;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  // TODO: put accessor fields manually
}
