################################################################################
# Copyright (c) 2010 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
################################################################################

# ClassesGenerator
ClassesGeneratorWizard_title = JAXB Class Generation

ClassesGeneratorWizard_errorDialogTitle = Generate Classes Failed
ClassesGeneratorWizard_couldNotCreate = Could not create {0}

ClassesGeneratorWizardPage_title = Generate Classes from Schema: {0}
ClassesGeneratorWizardPage_desc = Configure JAXB class generation.

ClassesGeneratorWizardPage_usesMoxyImplementation = Use EclipseLink MOXy as the JAXB implementation

ClassesGeneratorWizardPage_catalog = Catalog:
ClassesGeneratorWizardPage_bindingsFiles = Bindings files:
ClassesGeneratorWizardPage_browseButton = Browse...
ClassesGeneratorWizardPage_addButton = Add...
ClassesGeneratorWizardPage_removeButton = Remove
ClassesGeneratorWizardPage_chooseABindingsFile = External Bindings File Selection
ClassesGeneratorWizardPage_chooseACatalog = Catalog File Selection

ClassesGeneratorWizardPage_jaxbLibrariesNotAvailable = \
		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.

ClassesGeneratorWizardPage_moxyLibrariesNotAvailable = \
		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.

# SchemaGenerator
SchemaGeneratorWizard_title = JAXB Schema Generation

SchemaGeneratorWizard_generatingSchema = Generating Schema

ProjectWizardPage_desc = Select a Java project.
ProjectWizardPage_project = Project:

SchemaGeneratorWizardPage_title = Generate Schema from Classes
SchemaGeneratorWizardPage_desc = Select schema location and included classes.

SchemaGeneratorWizardPage_shemaLocation = Schema file:
SchemaGeneratorWizardPage_shema = Schema name:
SchemaGeneratorWizardPage_packages = Select the classes to include in the schema:
SchemaGeneratorWizardPage_browse = Browse...

SchemaGeneratorWizardPage_chooseSchemaDialogTitle = Select Schema File

SchemaGeneratorWizardPage_errorNoSchema = Schema name cannot be empty
SchemaGeneratorWizardPage_errorNoPackage = No classes included

SchemaGeneratorWizardPage_jaxbLibrariesNotAvailable = \
		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.

SchemaGeneratorWizardPage_moxyLibrariesNotAvailable = \
		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.


