###############################################################################
# Copyright (c) 2007, 2009 Innoopract Informationssysteme GmbH.
# 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:
#    Innoopract Informationssysteme GmbH - initial API and implementation
#    EclipseSource - ongoing development
################################################################################

# MANIFEST.MF
Bundle-Vendor = Eclipse.org - RAP
Bundle-Name = RAP Intro Plug-in

# plugin.xml
installTargetCommand.name = Install RAP target platform
launchRAPApplication.name = Run RAP Application from Cheat Sheet
launchRAPApplication.description = Run RAP Application from Cheat Sheet
