###############################################################################
# Copyright (c) 2003, 2011 Wind River Systems, Inc. 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
#
# Initial Contributors:
# The following Wind River employees contributed to the Terminal component
# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb,
# Helmut Haigermoser and Ted Williams.
#
# Contributors:
# Michael Scharf (Wind River) - split into core, view and connector plugins 
# Martin Oberhuber (Wind River) - fixed copyright headers and beautified
###############################################################################

# NLS_MESSAGEFORMAT_NONE

pluginName = Target Management Terminal Widget
providerName = Eclipse TM Project

terminal.context.name=Terminal Widget
terminal.context.description=Override ALT+x menu access keys

terminal.insertion.description=Terminal view insertion
terminal.insertion.name=Terminal view insert
terminal.insertion.category.name=Terminal Widget
