# Copyright (c) 2014 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:
#    Eike Stepper - initial API and implementation

pluginName = Oomph Setup Workbench Edit Support
providerName = Eclipse Oomph 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_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_Unknown_feature = Unspecified

_UI_CommandParameter_type = Command Parameter
_UI_CommandParameter_iD_feature = ID
_UI_CommandParameter_value_feature = Value

_UI_FileAssociationsTask_type = File Associations
_UI_FileAssociationsTask_mappings_feature = Mappings
_UI_FileEditor_iD_feature = ID_UI_FileEditor_type = File Editor

_UI_FileMapping_type = File Mapping
_UI_FileMapping_defaultEditorID_feature = Default Editor ID
_UI_FileMapping_editors_feature = Editors
_UI_FileMapping_filePattern_feature = File Pattern

_UI_KeyBindingContext_type = Key Binding Context
_UI_KeyBindingContext_iD_feature = ID

_UI_KeyBindingTask_type = Key Binding
_UI_KeyBindingTask_commandParameters_feature = Command Parameters
_UI_KeyBindingTask_command_feature = Command
_UI_KeyBindingTask_contexts_feature = Contexts
_UI_KeyBindingTask_keys_feature = Keys
_UI_KeyBindingTask_locale_feature = Locale
_UI_KeyBindingTask_platform_feature = Platform
_UI_KeyBindingTask_scheme_feature = Scheme
_UI_FileEditor_type = File Editor
