# <copyright>
#------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 IBM Corporation 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:
# IBM Corporation - initial implementation
#------------------------------------------------------------------------------
# </copyright>
#
# $Id: plugin.properties,v 1.1 2008/01/15 08:53:18 jtham Exp $

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================
# NLS_MESSAGEFORMAT_VAR

pluginName=EPF Diagram Edit Support
providerName=Eclipse.org

_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_Diagram_type = Diagram
_UI_Link_type = Link
_UI_LinkedObject_type = Linked Object
_UI_NamedNode_type = Named Node
_UI_Node_type = Node
_UI_ActivityDiagram_type = Activity Diagram
_UI_TypedNode_type = Typed Node
_UI_WorkProductDependencyDiagram_type = Work Product Dependency Diagram
_UI_WorkProductNode_type = Work Product Node
_UI_ActivityDetailDiagram_type = Activity Detail Diagram
_UI_NodeContainer_type = Node Container
_UI_RoleNode_type = Role Node
_UI_RoleTaskComposite_type = Role Task Composite
_UI_TaskNode_type = Task Node
_UI_WorkProductDescriptorNode_type = Work Product Descriptor Node
_UI_WorkBreakdownElementNode_type = Work Breakdown Element Node
_UI_WorkProductComposite_type = Work Product Composite
_UI_Unknown_type = Object

_UI_Unknown_datatype= Value

_UI_Link_source_feature = Source
_UI_Link_target_feature = Target
_UI_Link_bendpoints_feature = Bendpoints
_UI_Link_sourceEndPoint_feature = Source End Point
_UI_Link_targetEndPoint_feature = Target End Point
_UI_LinkedObject_linkedElement_feature = Linked Element
_UI_LinkedObject_object_feature = Object
_UI_NamedNode_name_feature = Name
_UI_Node_location_feature = Location
_UI_Node_width_feature = Width
_UI_Node_height_feature = Height
_UI_Node_incomingConnections_feature = Incoming Connections
_UI_Node_outgoingConnections_feature = Outgoing Connections
_UI_Node_readOnly_feature = Read Only
_UI_TypedNode_type_feature = Type
_UI_WorkProductNode_type_feature = Type
_UI_NodeContainer_nodes_feature = Nodes
_UI_WorkProductComposite_type_feature = Type
_UI_Unknown_feature = Unspecified

_UI_Link_name_feature = Name
_UI_ActivityDetailDiagram_autoLayout_feature = Auto Layout
_UI_TaskNode_index_feature = Index
_UI_RoleTaskComposite_rowIndex_feature = Row Index
