# ==============================================================================
#*+------------------------------------------------------------------------+
#*| Copyright (c) 2005  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                    |
#*+------------------------------------------------------------------------+
# ==============================================================================
/**
 * <copyright>
 * </copyright>
 *
 * $Id: plugin.properties,v 1.4 2009/01/09 18:56:18 rgronback 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 %%%
# ====================================================================

pluginName = GMF Logicsemantic Edit Support
providerName = Eclipse Modeling Project

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {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_PropertyDescriptor_description = The {0} of the {1}

_UI_LED_type = LED
_UI_Element_type = Element
_UI_WireConnectionPoint_type = Wire Connection Point
_UI_Wire_type = Wire
_UI_Circuit_type = Circuit
_UI_Gate_type = Gate
_UI_FlowContainer_type = Flow Container
_UI_AndGate_type = And Gate
_UI_OrGate_type = Or Gate
_UI_XORGate_type = XOR Gate
_UI_Model_type = Model
_UI_ContainerElement_type = Container Element
_UI_Unknown_type = Object

_UI_LED_value_feature = Value
_UI_Element_wireConnectionPoint_feature = Wire Connection Point
_UI_ContainerElement_Element_feature = Element
_UI_ContainerElement_children_feature = Children
_UI_Unknown_feature = Unspecified

_UI_Element_output_feature = Output
_UI_Terminal_id_feature = Id
_UI_Terminal_type = Terminal
_UI_Wire_source_feature = Source
_UI_Element_input_feature = Input
_UI_Wire_target_feature = Target
_UI_CreateChild_text3 = {1}
_UI_OutputTerminal_type = Output Terminal
_UI_InputTerminal_type = Input Terminal
_UI_InputOutputTerminal_type = Input Output Terminal
_UI_Unknown_datatype= Value
_UI_Element_terminals_feature = Terminals
_UI_Element_outputTerminals_feature = Output Terminals
_UI_Element_inputTerminals_feature = Input Terminals
