###############################################################################
# Copyright (c) 2014, 2020 1C-Soft LLC and others.
#
# This program and the accompanying materials are made available under
# the terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     Vladimir Piskarev (1C) - initial API and implementation
###############################################################################

pluginName = Handly Examples
providerName = Eclipse Handly

category.name.examples = Handly Examples
wizard.name.examples.adapter = Adapter Example
wizard.description.examples.adapter = Create plug-in projects implementing a \
Handly-based model that adapts the JDT Java model
wizard.name.examples.basic = Basic Example
wizard.description.examples.basic = Create plug-in projects implementing a \
Handly-based model for a simple Xtext-based language
wizard.name.examples.jmodel = JModel Example
wizard.description.examples.jmodel = Create plug-in projects implementing a \
Handly-based Java model
wizard.name.examples.xtext.xtext = Xtext-Xtext Example
wizard.description.examples.xtext.xtext = Create a project implementing a \
Handly-based call hierarchy view for the Xtext language
projectDescriptor.description.examples.adapter = This project implements a \
Handly-based model adapting the JDT Java model.\n\
\n\
Note: The project's root folder contains the 'example.target' file that can be used \
to set the target platform for the example.
projectDescriptor.description.examples.adapter.ui = This project contains UI parts \
using the adapter model.
projectDescriptor.description.examples.basic = This project implements a simple \
language based on Xtext.\n\
\n\
Note: The project's root folder contains the 'example.target' file that can be used \
to set the target platform for the example, and the 'example.p2f' file that can \
be used to install the recommended development tools for the example.
projectDescriptor.description.examples.basic.ide = This project contains \
Eclipse-independent IDE parts for the example language.
projectDescriptor.description.examples.basic.ui = This project impelements a \
Handly-based model for the example language, complete with content outline and \
a navigator view.
projectDescriptor.description.examples.basic.ui.tests = This project contains \
plug-in tests.
projectDescriptor.description.examples.jmodel = This project implements a \
Handly-based Java model.\n\
\n\
Note: The project's root folder contains the 'example.target' file that can be used \
to set the target platform for the example.
projectDescriptor.description.examples.jmodel.tests = This project contains \
plug-in tests.
projectDescriptor.description.examples.jmodel.ui = This project contains UI parts \
using the Java model.
projectDescriptor.description.examples.xtext.xtext = This project implements a \
Handly-based call hierarchy view for the Xtext language.\n\
\n\
Note: The project's root folder contains the 'example.target' file that can be used \
to set the target platform for the example, and the 'example.p2f' file that can \
be used to install the recommended development tools for the example.
