###############################################################################
# Copyright (c) 2007 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
################################################################################

# MANIFEST.MF
bundleName = RAP Templates Plug-in
bundleProvider = Eclipse.org - RAP

# plugin.xml
helloRAP.name = RAP Hello World
helloRAP.description = \
<p>This wizard creates a minimal RAP application that consists of an application window with a title.</p>\
<p><b>Extensions Used</b></p>\
<li>org.eclipse.core.runtime.applications</li>\
<li>org.eclipse.ui.perspectives</li>\
<p>This code will need the <b>RAP target</b> to compile.</p>

viewRAP.name = RAP Application with a view
viewRAP.description = \
<p>This wizard creates a RAP application that consists of an application window with a single view.</p>\
<p><b>Extensions Used</b></p>\
<li>org.eclipse.core.runtime.applications</li>\
<li>org.eclipse.ui.perspectives</li>\
<li>org.eclipse.ui.views</li>\
<li>org.eclipse.rap.ui.branding</li>\
<p>This code will need the <b>RAP target</b> to compile.</p>

mailRAP.name = RAP Mail Template
mailRAP.description = \
<p>This wizard creates a RAP application that shows how to:</p>\
<li>add top-level menu and toolbar with actions</li>\
<li>create views that can't be closed and multiple instances of the same view</li>\
<li>create perspectives with placeholders for new views</li>\
<li>open modal dialogs</li>\
<p><b>Extensions Used</b></p>\
<li>org.eclipse.core.runtime.applications</li>\
<li>org.eclipse.ui.perspectives</li>\
<li>org.eclipse.ui.views</li>\
<li>org.eclipse.ui.commands</li>\
<li>org.eclipse.rap.ui.branding</li>\
<p>This code will need the <b>RAP target</b> to compile.</p>