################################################################################
# Copyright (c) 2011, 2013 Oracle. 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:
#     Oracle - initial API and implementation
################################################################################

# JptDbwsEclipseLinkUiMessages

DBWS_GENERATOR_WIZARD__TITLE=New Database Web Services from Builder XML
DBWS_GENERATOR_WIZARD__GENERATING_DBWS=Generating Database Web Services

WEB_DYNAMIC_PROJECT_WIZARD_PAGE__TITLE=Web Dynamic Project
WEB_DYNAMIC_PROJECT_WIZARD_PAGE__DESC=Specify project for Database Web Services
WEB_DYNAMIC_PROJECT_WIZARD_PAGE__DESTINATION_PROJECT=Select destination project:

BUILDER_XML_WIZARD_PAGE__TITLE=Select Builder XML File
BUILDER_XML_WIZARD_PAGE__DESC=Specify XML file to generate Database Web Services from
BUILDER_XML_WIZARD_PAGE__ERROR_URI_CANNOT_BE_LOCATED=The selected catalog entry specifies a URI that can not be located.

JDBC_DRIVER_WIZARD_PAGE__TITLE=Driver files
JDBC_DRIVER_WIZARD_PAGE__DESC=Specify driver JAR files
JDBC_DRIVER_WIZARD_PAGE__DRIVER_FILES=Driver files:
JDBC_DRIVER_WIZARD_PAGE__ADD_BUTTON=Add...
JDBC_DRIVER_WIZARD_PAGE__REMOVE_BUTTON=Remove
JDBC_DRIVER_WIZARD_PAGE__CHOOSE_A_DRIVER_FILE=Driver File Selection

DBWS_GENERATOR_UI__RUNNING_DBWS_WARNING_TITLE=Generating Database Web Services
DBWS_GENERATOR_UI__RUNNING_DBWS_WARNING_MESSAGE=\
		Warning: Running DBWS Builder will overwrite existing files in your project.\
		\n\nAre you sure you want to continue?
DBWS_GENERATOR_UI__DBWS_NOT_ON_CLASSPATH_MESSAGE=\
		Warning: DBWS Builder is not on your project classpath.\
		\n\nAre you sure you want to continue?
DBWS_GENERATOR_UI__NOT_JAVA_PROJECT=Not a java project
DBWS_GENERATOR_UI__NOT_WEB_DYNAMIC_PROJECT=Not a WebDynamic project
DBWS_GENERATOR_UI__GENERATING_DBWS=Generating Database Web Services

BUILDER_XML_WIZARD_PAGE__XML_CATALOG_TABLE_TITLE=XML Catalog
BUILDER_XML_WIZARD_PAGE__XML_CATALOG_KEY_COLUMN=Key
BUILDER_XML_WIZARD_PAGE__XML_CATALOG_URI_COLUMN=URI
