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

# 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 basic RAP application using a few widgets.</p>\
<p>The template is most appropriate for web or mobile applications that don't need an Eclipse-like user interface.</p>\
<p>This code will need the <b>RAP target</b> to compile.</p>

e4RAP.name = RAP e4 Template
e4RAP.description = \
<p>This wizard creates a basic RAP e4 application.</p>\
<p>The template is appropriate for web applications that need an Eclipse-like user interface, \
or are also run as RCP applications.</p>\
<p>This code will need the <b>RAP e4 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 a 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>The template is appropriate for web applications that need an Eclipse-like user interface, \
or are also run as RCP applications.</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.ui.commands</li>\
<li>org.eclipse.rap.ui.branding</li>\
<p>This code will need the <b>RAP target</b> to compile.</p>