# /**
#  * Copyright (c) 2002-2008 IBM Corporation and others.
#  * All rights reserved.   This program and the accompanying materials
#  * are made available under the terms of the Eclipse Public License v2.0
#  * which accompanies this distribution, and is available at
#  * http://www.eclipse.org/legal/epl-v20.html
#  *
#  * Contributors:
#  *   IBM - Initial API and implementation
#  */

# NLS_MESSAGEFORMAT_VAR

pluginName = EMF Java Edit Example
providerName = Eclipse Modeling Project


_UI_CreateChild_text = {0}
_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_JClass_type = JClass
_UI_JCompilationUnit_type = JCompilation Unit
_UI_JField_type = JField
_UI_JInitializer_type = JInitializer
_UI_JMember_type = JMember
_UI_JMethod_type = JMethod
_UI_JModelElement_type = JModel Element
_UI_JPackage_type = JPackage
_UI_JParameter_type = JParameter
_UI_Unknown_type = Object

_UI_JClass_abstract_feature = Abstract
_UI_JClass_final_feature = Final
_UI_JClass_interface_feature = Interface
_UI_JClass_throwable_feature = Throwable
_UI_JClass_javaClass_feature = Java Class
_UI_JClass_fields_feature = Fields
_UI_JClass_methods_feature = Methods
_UI_JClass_superTypes_feature = Super Types
_UI_JClass_allSuperTypes_feature = All Super Types
_UI_JClass_members_feature = Members
_UI_JClass_componentType_feature = Component Type
_UI_JClass_unit_feature = Unit
_UI_JClass_allMethods_feature = All Methods
_UI_JClass_allFields_feature = All Fields
_UI_JClass_package_feature = Package
_UI_JCompilationUnit_imports_feature = Imports
_UI_JCompilationUnit_comment_feature = Comment
_UI_JCompilationUnit_types_feature = Types
_UI_JCompilationUnit_importedPackages_feature = Imported Packages
_UI_JCompilationUnit_importedTypes_feature = Imported Types
_UI_JCompilationUnit_package_feature = Package
_UI_JField_final_feature = Final
_UI_JField_transient_feature = Transient
_UI_JField_volatile_feature = Volatile
_UI_JField_javaField_feature = Java Field
_UI_JField_initializer_feature = Initializer
_UI_JField_type_feature = Type
_UI_JInitializer_body_feature = Body
_UI_JMember_static_feature = Static
_UI_JMember_visibility_feature = Visibility
_UI_JMember_comment_feature = Comment
_UI_JMember_containingType_feature = Containing Type
_UI_JMethod_abstract_feature = Abstract
_UI_JMethod_final_feature = Final
_UI_JMethod_native_feature = Native
_UI_JMethod_synchronized_feature = Synchronized
_UI_JMethod_javaMethod_feature = Java Method
_UI_JMethod_constructor_feature = Constructor
_UI_JMethod_javaConstructor_feature = Java Constructor
_UI_JMethod_body_feature = Body
_UI_JMethod_parameters_feature = Parameters
_UI_JMethod_exceptions_feature = Exceptions
_UI_JMethod_returnType_feature = Return Type
_UI_JModelElement_name_feature = Name
_UI_JModelElement_jNode_feature = JNode
_UI_JPackage_javaPackage_feature = Java Package
_UI_JPackage_types_feature = Types
_UI_JParameter_final_feature = Final
_UI_JParameter_method_feature = Method
_UI_JParameter_type_feature = Type
_UI_Unknown_feature = Unspecified

_UI_JClass_abstract_description = The abstract of the jclass
_UI_JClass_final_description = The final of the jclass
_UI_JClass_interface_description = The interface of the jclass
_UI_JClass_throwable_description = The throwable of the jclass
_UI_JClass_javaClass_description = The java class of the jclass
_UI_JClass_fields_description = The fields of the jclass
_UI_JClass_methods_description = The methods of the jclass
_UI_JClass_superTypes_description = The super types of the jclass
_UI_JClass_allSuperTypes_description = The all super types of the jclass
_UI_JClass_members_description = The members of the jclass
_UI_JClass_componentType_description = The component type of the jclass
_UI_JClass_unit_description = The unit of the jclass
_UI_JClass_allMethods_description = The all methods of the jclass
_UI_JClass_allFields_description = The all fields of the jclass
_UI_JClass_package_description = The package of the jclass
_UI_JCompilationUnit_imports_description = The imports of the jcompilation unit
_UI_JCompilationUnit_comment_description = The comment of the jcompilation unit
_UI_JCompilationUnit_types_description = The types of the jcompilation unit
_UI_JCompilationUnit_importedPackages_description = The imported packages of the jcompilation unit
_UI_JCompilationUnit_importedTypes_description = The imported types of the jcompilation unit
_UI_JCompilationUnit_package_description = The package of the jcompilation unit
_UI_JField_final_description = The final of the jfield
_UI_JField_transient_description = The transient of the jfield
_UI_JField_volatile_description = The volatile of the jfield
_UI_JField_javaField_description = The java field of the jfield
_UI_JField_initializer_description = The initializer of the jfield
_UI_JField_type_description = The type of the jfield
_UI_JInitializer_body_description = The body of the jinitializer
_UI_JMember_static_description = The static of the jmember
_UI_JMember_visibility_description = The visibility of the jmember
_UI_JMember_comment_description = The comment of the jmember
_UI_JMember_containingType_description = The containing type of the jmember
_UI_JMethod_abstract_description = The abstract of the jmethod
_UI_JMethod_final_description = The final of the jmethod
_UI_JMethod_native_description = The native of the jmethod
_UI_JMethod_synchronized_description = The synchronized of the jmethod
_UI_JMethod_javaMethod_description = The java method of the jmethod
_UI_JMethod_constructor_description = The constructor of the jmethod
_UI_JMethod_javaConstructor_description = The java constructor of the jmethod
_UI_JMethod_body_description = The body of the jmethod
_UI_JMethod_parameters_description = The parameters of the jmethod
_UI_JMethod_exceptions_description = The exceptions of the jmethod
_UI_JMethod_returnType_description = The return type of the jmethod
_UI_JModelElement_name_description = The name of the jmodel element
_UI_JModelElement_jNode_description = The jnode of the jmodel element
_UI_JPackage_javaPackage_description = The java package of the jpackage
_UI_JPackage_types_description = The types of the jpackage
_UI_JParameter_final_description = The final of the jparameter
_UI_JParameter_method_description = The method of the jparameter
_UI_JParameter_type_description = The type of the jparameter
_UI_PropertyDescriptor_description = The {0} of the {1}

_UI_JClass_allTypes_feature = All Types
_UI_JClass_types_feature = Types
_UI_JClass_arrayType_feature = Array Type
_UI_JVisibility_package_literal = package
_UI_JVisibility_protected_literal = protected
_UI_JVisibility_public_literal = public
_UI_JVisibility_private_literal = private
_UI_Unknown_datatype= Value
