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

# JptJaxbUiMessages

ADD_SCHEMA_TO_LIBRARY_JOB__NAME=Adding schema to project schema library

JAVA_PROJECT_WIZARD_PAGE_PROJECT=Project:
JAVA_PROJECT_WIZARD_PAGE_DESTINATION_PROJECT=Select destination project:

# ClassesGenerator
CLASSES_GENERATOR_PROJECT_WIZARD_PAGE_TITLE=Java Project
CLASSES_GENERATOR_PROJECT_WIZARD_PAGE_DESC=Specify project for the new classes.

CLASSES_GENERATOR_WIZARD_TITLE=New JAXB Classes from schema

CLASSES_GENERATOR_WIZARD_ERROR_DIALOG_TITLE=Generate Classes Failed
CLASSES_GENERATOR_WIZARD_COULD_NOT_CREATE=Could not create {0}

ERROR_OPENING_EDITOR=Error Opening Editor

JAXB_CONTENT_LABEL=JAXB Content

SCHEMAS_PAGE_DESCRIPTION=Configure JAXB schemas used for validation and content assist
SCHEMAS_PAGE_REVERT=&Revert
SCHEMAS_PAGE_SCHEMAS=&Schema namespaces and locations:
SCHEMAS_PAGE_NAMESPACE_COLUMN_LABEL=Namespace
SCHEMAS_PAGE_LOCATION_COLUMN_LABEL=Location
SCHEMAS_PAGE_ADD_BUTTON_LABEL=&Add ...
SCHEMAS_PAGE_EDIT_BUTTON_LABEL=&Edit ...
SCHEMAS_PAGE_REMOVE_BUTTON_LABEL=Re&move
SCHEMAS_PAGE_ADD_SCHEMA_MESSAGE=Enter a new schema namespace and the location where it can be found.
SCHEMAS_PAGE_EDIT_SCHEMA_MESSAGE=Edit an existing schema namespace and the location where it can be found.
SCHEMAS_PAGE_ADD_SCHEMA_DIALOG_TITLE=Add Schema Location
SCHEMAS_PAGE_EDIT_SCHEMA_DIALOG_TITLE=Edit Schema Location
SCHEMAS_PAGE_ADD_SCHEMA_TITLE=Add a new schema location
SCHEMAS_PAGE_EDIT_SCHEMA_TITLE=Edit an existing schema location
SCHEMAS_PAGE_LOCATION_LABEL=&Location:
SCHEMAS_PAGE_BROWSE_BUTTON_LABEL=&Browse ...
SCHEMAS_PAGE_NAMESPACE_LABEL=&Namespace:
SCHEMAS_PAGE_NO_NAMESPACE_TEXT=<no namespace>
SCHEMAS_PAGE_SCHEMA_UNRESOLVED_MESSAGE=Could not resolve chosen schema location.
SCHEMAS_PAGE_DUPLICATE_NAMESPACE_MESSAGE=That namespace is already in use.
SCHEMAS_PAGE_NO_LOCATION_MESSAGE=You must specify a location.
SCHEMAS_PAGE_CHOOSE_LOCATION_TITLE=Select Schema Location

SCHEMA_WIZARD_PAGE_TITLE=Select Schema
SCHEMA_WIZARD_PAGE_DESC=Specify schema to generate the classes from

SCHEMA_WIZARD_PAGE_XML_CATALOG_TABLE_TITLE=XML Catalog
SCHEMA_WIZARD_PAGE_XML_CATALOG_KEY_COLUMN=Key
SCHEMA_WIZARD_PAGE_XML_CATALOG_URI_COLUMN=URI

SCHEMA_WIZARD_PAGE_ERROR_URI_CANNOT_BE_LOCATED=The selected catalog entry specifies a URI that can not be located.

SELECT_FILE_OR_XML_CATALOG_ID_PANEL_FILE_FROM_WORKSPACE=Select file from Work&space
SELECT_FILE_OR_XML_CATALOG_ID_PANEL_XML_CATALOG_ENTRY=Select XML Catalo&g entry
SELECT_FILE_OR_XML_CATALOG_ID_PANEL_IMPORT_BUTTON=&Import Files...

CLASSES_GENERATOR_WIZARD_PAGE_TITLE=Generate Classes from Schema: {0}
CLASSES_GENERATOR_WIZARD_PAGE_DESC=Configure JAXB class generation.

CLASSES_GENERATOR_WIZARD_PAGE_USES_MOXY_IMPLEMENTATION=Use EclipseLink MO&Xy as the JAXB implementation

CLASSES_GENERATOR_WIZARD_PAGE_CATALOG=Catalo&g:
CLASSES_GENERATOR_WIZARD_PAGE_BINDINGS_FILES=B&indings files:
CLASSES_GENERATOR_WIZARD_PAGE_BROWSE_BUTTON=Brow&se...
CLASSES_GENERATOR_WIZARD_PAGE_ADD_BUTTON=&Add...
CLASSES_GENERATOR_WIZARD_PAGE_REMOVE_BUTTON=Re&move
CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_A_BINDINGS_FILE=External Bindings File Selection
CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_A_CATALOG=Catalog File Selection

CLASSES_GENERATOR_WIZARD_PAGE_SOURCE_FOLDER_SELECTION_DIALOG_TITLE=Source Folder Selection
CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_SOURCE_FOLDER_DIALOG_DESC=&Choose a source folder:

CLASSES_GENERATOR_WIZARD_PAGE_JAXB_LIBRARIES_NOT_AVAILABLE=\
		The classpath for this project does not appear to contain the necessary libraries to proceed with class generation.\
		\nPlease insure that a JAXB implementation is available on the classpath.

CLASSES_GENERATOR_WIZARD_PAGE_MOXY_LIBRARIES_NOT_AVAILABLE=\
		The classpath for this project does not appear to contain the necessary libraries to proceed with class generation.\
		\nPlease insure that EclipseLink MOXy is available on the classpath.

CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TITLE=Classes Generator Options
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_DESC=Configure JAXB compiler options.

CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_PROXY_GROUP=Proxy
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_NO_PROXY=N&o proxy
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_PROXY=&Proxy:
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_PROXY_FILE=Prox&y file:
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_CHOOSE_A_PROXY_FILE=Proxy File Selection

CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_USE_STRICT_VALIDATION=Use strict v&alidation
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_MAKE_READ_ONLY=Generate &read-only files
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_SUPPRESS_PACKAGE_INFO_GEN=Suppress pac&kage-info generation
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_SUPPRESSES_HEADER_GEN=Suppress generation of file &header
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TARGET=Target X&JC 2.0
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_VERBOSE=&Verbose
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_QUIET=Suppress compiler outp&ut

CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TREATS_AS_XML_SCHEMA=Treat input as &XML schema
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TREATS_AS_RELAX_NG=Treat input as RELAX N&G
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TREATS_AS_RELAX_NG_COMPACT=Treat input as RELAX NG &compact syntax
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TREATS_AS_DTD=Treat input as XML D&TD
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_TREATS_AS_WSDL=Treat input as WS&DL and compile schema inside it
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_SHOWS_VERSION=Show vers&ion
CLASSES_GENERATOR_OPTIONS_WIZARD_PAGE_SHOWS_HELP=Show h&elp

CLASSES_GENERATOR_EXTENSION_OPTIONS_WIZARD_PAGE_TITLE=Classes Generator Extension Configuration
CLASSES_GENERATOR_EXTENSION_OPTIONS_WIZARD_PAGE_DESC=Configure JAXB compiler vendor extensions.

CLASSES_GENERATOR_EXTENSION_OPTIONS_WIZARD_PAGE_ALLOW_EXTENSIONS=Allow vendor &extensions
CLASSES_GENERATOR_EXTENSION_OPTIONS_WIZARD_PAGE_CLASSPATH=Class&path:
CLASSES_GENERATOR_EXTENSION_OPTIONS_WIZARD_PAGE_ADDITIONAL_ARGUMENTS=Additional ar&guments:

CLASSES_GENERATOR_UI_GENERATING_ENTITIES=Generating JAXB Classes from Schema
CLASSES_GENERATOR_UI_GENERATING_ENTITIES_TASK=Generating classes

CLASSES_GENERATOR_UI_GENERATING_CLASSES_WARNING_TITLE=Generating JAXB Classes
CLASSES_GENERATOR_UI_GENERATING_CLASSES_WARNING_MESSAGE=\
		Warning: Generating classes will overwrite existing files in your project.\
		\nAre you sure you want to continue?

# SchemaGenerator
SCHEMA_GENERATOR_WIZARD_TITLE=New JAXB Schema File

SCHEMA_GENERATOR_WIZARD_GENERATING_SCHEMA=Generating JAXB Schema
SCHEMA_GENERATOR_WIZARD_OPEN_SCHEMA_FILE_JOB_NAME=Open XSD File

SCHEMA_GENERATOR_PROJECT_WIZARD_PAGE_TITLE=JAXB schema file
SCHEMA_GENERATOR_PROJECT_WIZARD_DESC=Specify default file name and location

SCHEMA_GENERATOR_WIZARD_PAGE_TITLE=Generate Schema from Classes
SCHEMA_GENERATOR_WIZARD_PAGE_DESC=Select classes to include.

SCHEMA_GENERATOR_WIZARD_PAGE_SCHEMA_LOCATION=Schema file:
SCHEMA_GENERATOR_WIZARD_PAGE_SCHEMA=Schema name:
SCHEMA_GENERATOR_WIZARD_PAGE_PACKAGES=Select classes to include in schema:
SCHEMA_GENERATOR_WIZARD_PAGE_BROWSE=Browse...

SCHEMA_GENERATOR_WIZARD_PAGE_CHOOSE_SCHEMA_DIALOG_TITLE=Select Schema File

SCHEMA_GENERATOR_WIZARD_PAGE_ERROR_NO_SCHEMA=Schema name cannot be empty
SCHEMA_GENERATOR_WIZARD_PAGE_ERROR_NO_PACKAGE=No classes included

SCHEMA_GENERATOR_WIZARD_PAGE_JAXB_LIBRARIES_NOT_AVAILABLE=\
		The classpath for this project does not appear to contain the necessary libraries to proceed with schema generation.\
		\nPlease insure that a JAXB implementation is available on the classpath.

SCHEMA_GENERATOR_WIZARD_PAGE_MOXY_LIBRARIES_NOT_AVAILABLE=\
		The classpath for this project does not appear to contain the necessary libraries to proceed with schema generation.\
		\nPlease insure that EclipseLink MOXy is available on the classpath.

SCHEMA_GENERATOR_WIZARD_GENERATE_SCHEMA_TASK=Generating schema {0}

# JptGenerateJob

GENERATE_JAXB_CLASSES_JOB_GENERATING_CLASSES=Generating JAXB Classes from Schema
GENERATE_JAXB_CLASSES_JOB_GENERATING_CLASSES_TASK=Generating classes

# NewSchemaFileWizardPage

NEW_SCHEMA_FILE_WIZARD_PAGE_ERROR_NOT_JAVA_PROJECT=Not a Java project
NEW_SCHEMA_FILE_WIZARD_PAGE_OVERWRITE_EXISTING_SCHEMAS=Schema generation may overwrite existing schemas in the specified directory.


JAXB_PROJECT_WIZARD_TITLE=New JAXB Project

JAXB_PROJECT_WIZARD_FIRST_PAGE_TITLE=JAXB Project
JAXB_PROJECT_WIZARD_FIRST_PAGE_DESC=Configure JAXB project settings.

JAXB_FACET_WIZARD_PAGE_TITLE=JAXB Facet
JAXB_FACET_WIZARD_PAGE_DESC=Configure JAXB settings.
JAXB_FACET_WIZARD_PAGE_PLATFORM_LABEL=&Platform
JAXB_FACET_WIZARD_PAGE_FACETS_PAGE_LINK=<a>Change JAXB version ...</a>
JAXB_FACET_WIZARD_PAGE_JAXB_IMPLEMENTATION_LABEL=JAXB implementation

JAXB_PLATFORM_UI_MISSING_JAXB_PLATFORM=Invalid JAXB platform ''{0}'' specified in extension ''{1}'' from plug-in ''{2}''.
