# Copyright (c) 2019 CEA LIST.
# 
#  All rights reserved. This program and the accompanying materials
#  are made available under the terms of the Eclipse Public License 2.0
#  which accompanies this distribution, and is available at
#  https://www.eclipse.org/legal/epl-2.0/
# 
#  SPDX-License-Identifier: EPL-2.0
# 
#  Contributors:
#  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation

pluginName = Papyrus-Model2Doc - EMF DocumentStructureTemplate Edit Support (Incubation)
providerName = Eclipse Modeling Project
_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
_UI_PropertyDescriptor_description = The {0} of the {1}
_UI_DocumentTemplate_type = Document Template
_UI_DocumentTemplatePrototype_type = Document Template Prototype
_UI_TextDocumentTemplate_type = Text Document Template
_UI_DocumentPart_type = Document Part
_UI_TableOfContents_type = Table Of Contents
_UI_Body_type = Body
_UI_IBodyPartTemplate_type = IBody Part Template
_UI_IBodySectionPartTemplate_type = IBody Section Part Template
_UI_IComposedBodyPartTemplate_type = IComposed Body Part Template
_UI_ISubBodyPartTemplate_type = ISub Body Part Template
_UI_ILeafBodyPartTemplate_type = ILeaf Body Part Template
_UI_IComposedSubBodyPartTemplate_type = IComposed Sub Body Part Template
_UI_ILeafSubBodyPartTemplate_type = ILeaf Sub Body Part Template
_UI_EClassPartTemplate_type = EClass Part Template
_UI_EClassTemplate_type = EClass Template
_UI_EReferencePartTemplate_type = EReference Part Template
_UI_EReferenceTemplate_type = EReference Template
_UI_ITemplatePartView_type = ITemplate Part View
_UI_ITableView_type = ITable View
_UI_IColumn_type = IColumn
_UI_EReferenceTableView_type = EReference Table View
_UI_EStructuralFeatureColumn_type = EStructural Feature Column
_UI_EStructuralFeatureTemplate_type = EStructural Feature Template
_UI_IListItemTemplate_type = IList Item Template
_UI_ILeafListItemTemplate_type = ILeaf List Item Template
_UI_IRootListItemTemplate_type = IRoot List Item Template
_UI_IComposedListItemTemplate_type = IComposed List Item Template
_UI_ISubListItemTemplate_type = ISub List Item Template
_UI_IComposedSubListItemTemplate_type = IComposed Sub List Item Template
_UI_ILeafSubListItemTemplate_type = ILeaf Sub List Item Template
_UI_EReferenceListItemTemplate_type = EReference List Item Template
_UI_EAttributeListItemTemplate_type = EAttribute List Item Template
_UI_EAttributeTemplate_type = EAttribute Template
_UI_EClassListItemTemplate_type = EClass List Item Template
_UI_TreeListView_type = Tree List View
_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_DocumentTemplate_semanticContext_feature = Semantic Context
_UI_DocumentTemplate_graphicalContext_feature = Graphical Context
_UI_DocumentTemplate_documentTemplatePrototype_feature = Document Template Prototype
_UI_DocumentTemplate_name_feature = Name
_UI_DocumentTemplate_description_feature = Description
_UI_DocumentTemplate_kindId_feature = Kind Id
_UI_DocumentTemplate_documentStructureGeneratorConfiguration_feature = Document Structure Generator Configuration
_UI_DocumentTemplate_author_feature = Author
_UI_DocumentTemplatePrototype_type_feature = Type
_UI_DocumentTemplatePrototype_iconPath_feature = Icon Path
_UI_DocumentTemplatePrototype_description_feature = Description
_UI_DocumentTemplatePrototype_documentTemplate_feature = Document Template
_UI_TextDocumentTemplate_mainTitle_feature = Main Title
_UI_TextDocumentTemplate_documentPart_feature = Document Part
_UI_TableOfContents_tocTitle_feature = Toc Title
_UI_Body_bodyPartTemplate_feature = Body Part Template
_UI_IBodySectionPartTemplate_generate_feature = Generate
_UI_IBodySectionPartTemplate_generateTitle_feature = Generate Title
_UI_IBodySectionPartTemplate_customTitle_feature = Custom Title
_UI_IBodySectionPartTemplate_generateBranchCondition_feature = Generate Branch Condition
_UI_IComposedBodyPartTemplate_subBodyPartTemplate_feature = Sub Body Part Template
_UI_IComposedSubBodyPartTemplate_bodyPartTemplate_feature = Body Part Template
_UI_EClassTemplate_eClass_feature = EClass
_UI_EClassTemplate_filterRule_feature = Filter Rule
_UI_EReferenceTemplate_eReference_feature = EReference
_UI_ITableView_columns_feature = Columns
_UI_ITableView_generateRowHeader_feature = Generate Row Header
_UI_ITableView_generateColumnHeader_feature = Generate Column Header
_UI_IColumn_customColumnTitle_feature = Custom Column Title
_UI_EStructuralFeatureTemplate_feature_feature = Feature
_UI_IListItemTemplate_generateItem_feature = Generate Item
_UI_IListItemTemplate_customItemLabel_feature = Custom Item Label
_UI_IComposedListItemTemplate_subListItemTemplate_feature = Sub List Item Template
_UI_IComposedSubListItemTemplate_listItemTemplate_feature = List Item Template
_UI_EAttributeTemplate_eAttribute_feature = EAttribute
_UI_TreeListView_rootListItemTemplate_feature = Root List Item Template
_UI_Unknown_feature = Unspecified
_UI_EClassFilterBehavior_TYPE_OF_literal = TYPE_OF
_UI_EClassFilterBehavior_KIND_OF_literal = KIND_OF
_UI_InsertFileTemplate_type = Insert File Template
_UI_TableOfFigures_type = Table Of Figures
_UI_TableOfFigures_tofTitle_feature = Tof Title
_UI_EAttributeAsParagraph_type = EAttribute As Paragraph
_UI_IBodySectionPartTemplate_generateIfEmpty_feature = Generate If Empty
_UI_IBodySectionPartTemplate_defaultTextIfEmpty_feature = Default Text If Empty
