###############################################################################
# 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 context
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 view commands
