#/*******************************************************************************
# * Copyright (c) 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 v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/


# ====================================================================
# 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 %%%
# ====================================================================

pluginName = STEM Transport Model Tests
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_PipeStyleTransportSystem_type = Pipe Style Transport System
_UI_TransportSystem_type = System
_UI_PipeTransportEdge_type = Pipe Transport Edge
_UI_PipeTransportEdgeLabel_type = Pipe Transport Edge Label
_UI_PipeTransportEdgeLabelValue_type = Pipe Transport Edge Label Value
_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_PipeStyleTransportSystem_inTransportEdges_feature = In Transport Edges
_UI_PipeStyleTransportSystem_outTransportEdges_feature = Out Transport Edges
_UI_PipeStyleTransportSystem_maxCapacity_feature = Max Capacity
_UI_PipeTransportEdgeLabelValue_maxFlow_feature = Max Flow
_UI_PipeTransportEdgeLabelValue_timePeriod_feature = Time Period
_UI_Unknown_feature = Unspecified
