# Copyright (c) 2004 - 2010 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

pluginName = CDO Dawn Examples Class Diagram Editor
providerName = Eclipse Modeling Project

editorName=Classdiagram Diagram Editing
context.description=Classdiagram Diagram Editing
context.name=In Classdiagram Diagram Editor
newWizardName=Classdiagram Diagram
newWizardDesc=Creates Classdiagram diagram.

initDiagramActionLabel=Initialize classdiagram_diagram diagram file


navigatorContentName=*.classdiagram_diagram diagram contents
domainNavigatorContentName=*.classdiagram model contents
update.diagram.name=Update Classdiagram diagram
update.diagram.description=Perform Classdiagram diagram update


# Property Sheet
tab.appearance=Appearance
tab.diagram=Rulers & Grid
tab.domain=Core

# Preferences
prefpage.org.eclipse.emf.cdo.dawn.reference.editor.diagram.general=Classdiagram Diagram
prefpage.org.eclipse.emf.cdo.dawn.reference.editor.diagram.appearance=Appearance
prefpage.org.eclipse.emf.cdo.dawn.reference.editor.diagram.connections=Connections
prefpage.org.eclipse.emf.cdo.dawn.reference.editor.diagram.printing=Printing
prefpage.org.eclipse.emf.cdo.dawn.reference.editor.diagram.rulersAndGrid=Rulers And Grid


# Providers
metatype.name.ClassDiagram_1000=Undefined
metatype.name.AInterface_2001=AInterface
metatype.name.AClass_2002=AClass
metatype.name.AnAttribute_3001=AnAttribute
metatype.name.AnOperation_3002=AnOperation
metatype.name.AnAttribute_3003=AnAttribute
metatype.name.AnOperation_3004=AnOperation
metatype.name.AClassSubClasses_4001=Undefined
metatype.name.AClassImplementedInterfaces_4002=Undefined
metatype.name.AClassAssociations_4003=Undefined
metatype.name.AClassAggregations_4004=Undefined
metatype.name.AClassCompositions_4005=Undefined

# Commands and menu actions
cmdcategory.name=Classdiagram Editor Commands
cmdcategory.desc=Classdiagram Editor Commands
