# 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 - NatTable DocumentStructureTemplate Integration 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_PapyrusTableView_type = Papyrus Table View
_UI_Table_type = Table
_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_PapyrusTableView_tableKindId_feature = Table Kind Id
_UI_PapyrusTableView_tableType_feature = Table Type
_UI_PapyrusTableView_contextFilterRule_feature = Context Filter Rule
_UI_PapyrusTableView_importMethod_feature = Import Method
_UI_Unknown_feature = Unspecified
_UI_ContextFilterBehavior_SEMANTIC_CONTEXT_literal = SEMANTIC_CONTEXT
_UI_ContextFilterBehavior_GRAPHICAL_CONTEXT_literal = GRAPHICAL_CONTEXT
_UI_ContextFilterBehavior_BOTH_literal = BOTH
_UI_ImportMethod_IMAGE_literal = IMAGE
_UI_ImportMethod_TABLE_literal = TABLE
