###############################################################################
# <copyright>
#
# Copyright (c) 2012, 2012 SAP AG.
# 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:
#    SAP AG - initial API, implementation and documentation
#
# </copyright>
#
###############################################################################
pluginName = Graphiti New Project Wizard (Incubation)
providerName = Eclipse Modeling Project

pluginContent.newgraphitieditorwizard.name = Plug-in with a Graphiti Editor
pluginContent.newgraphitieditorwizard.description =\
<p>This wizard creates a standard plug-in directory structure and adds\
the following:</p><li>A sample Graphiti <b>Diagram Type</b>.</li><li>A\
sample Graphiti <b>Diagram Type Provider</b>. Defines the Eclipse editor\
and its feature provider.</li><li>A sample <b>Feature Provider</b> that\
is used in the Diagram Type Provider and registers a default set of features\
for the editor.</li><li>A feature set for a generic domain object consisting\
of a create, an add and a layout feature.</li><li>A feature set for a generic\
connection consisting of a create and an add feature.</li><p><b>Extensions\
Used</b></p><li>org.eclipse.graphiti.ui.diagramTypes</li>\
<li>org.eclipse.graphiti.ui.diagramTypeProviders</li>