###############################################################################
# Copyright (c) 2006, 2010 Actuate Corporation.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
# 
# Contributors:
#  Actuate Corporation - initial API and implementation
#  
###############################################################################
# NLS String
###############################################################################
#
plugin.name=DTP ODA New Plug-in Template Wizard
template.runtimeDriver.name=ODA Data Source Runtime Driver
template.runtimeDriver.desc=\
This wizard creates a plug-in for an Open Data Access (ODA) data source runtime driver.\
<p>An ODA runtime driver plug-in does <b>not</b> make contributions to the UI. \
Do not select the UI contribution check-box under Options in the previous page.</p>\
<p><b>Extensions Used</b></p>\
<li>org.eclipse.datatools.connectivity.oda.dataSource</li>\
<li>org.eclipse.datatools.connectivity.connectionProfile</li>
template.designer.name=ODA Data Source Designer
template.designer.desc=\
This wizard creates a plug-in for an Open Data Access (ODA) data source designer. \
<p>Before using this to create the ODA designer plug-in, first use \
the <b>ODA Data Source Runtime Driver</b> template to create its corresponding \
runtime plug-in.</p>\
<p><b>Extensions Used</b></p>\
<li>org.eclipse.datatools.connectivity.oda.design.ui.dataSource</li>\
<li>org.eclipse.datatools.connectivity.connectionProfile</li>\
<li>org.eclipse.datatools.connectivity.ui.connectionProfileImage</li>\
<li>org.eclipse.ui.propertyPages</li>

