###############################################################################
# Copyright (c) 2005 Oracle Corporation.
# 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:
#    Gerry Kessler - initial API and implementation
#    Ian Trimble - change key names for use with org.eclipse.osgi.util.NLS
###############################################################################
JSFLibraryRegistry_ErrorCreatingURL=Error creating URL for JSF Library Registry
JSFLibraryRegistry_NoLoadCreatingNew=Could not load JSF Library Registry; creating new registry
JSFLibraryRegistry_ErrorSaving=Error saving JSF Library Registry
JSFLibraryRegistry_DEFAULT_IMPL_LABEL=<Default>
JSFLibraryConfigModel_Null_Data_Source=Data Source is not provided.
JSFLibraryRegistry_ErrorLoadingFromExtPt=Error while loading JSF Libaries from extension points
JSFLibraryClasspathContainer_IMPL_LIBRARY=[JSF Library - implementation]

JSFFacetInstallDataModelProvider_ValidateServletName=Specify a servlet name to use
JSFLibraryConfigPersistData_SAVED_IMPLLIB_NOT_FOUND=Saved JSF implementation library in {0} is unavailable in JSF Library Registry
JSFLibraryConfigPersistData_SAVED_COMPLIB_NOT_FOUND=Saved JSF component library in {0} is unavailable in JSF Library Registry
JSFLibraryClasspathContainer_NON_IMPL_LIBRARY=[JSF Library]
JSFLibrariesContainerInitializer_missing_library=[missing JSF Library]
JSFFacetInstallDataModelProvider_ValidateJSFImpl=A JSF implementation library has not been chosen
JSFFacetInstallDataModelProvider_DupeJarValidation=Duplicated jar on classpath: {0}
JSFFacetInstallDataModelProvider_ValidateConfigFilePath=The configuration file path is not valid
JSFFacetInstallDataModelProvider_ValidateConfigFileEmpty=Specify a valid name and location for JSF configuration file
JSFFacetInstallDataModelProvider_ClientImplValidationMsg=JSF Implementation library must be specified.
JSFFacetInstallDataModelProvider_ValidateConfigFileRelative1=Configuration file must be specified relative to the project's {0} folder
JSFFacetInstallDataModelProvider_ValidateConfigFileRelative2=Configuration file must be located in the project's {0} folder
JSFFacetInstallDataModelProvider_INITIAL_VALIDATION_IMPL_TYPE=Select an implementation library.   If a server supplied library is chosen , the chosen server adapter must be capable of providing the JSF Implementation jars, or the application will not validate or compile.
JSFFacetInstallDataModelProvider_ValidateConfigFileXML=JSF configuration file must be an XML file
JSFFacetInstallDataModelProvider_ValidateConfigFileSlashes=Configuration file path must not contain "\\"s.   Use "/" instead.
JSFLibCfgDialogSettingData_Sticky_Component_Lib_Not_Exist=A sticky component library selection no longer exists.

ArchiveFileImpl_CannotCopyFile=Cannot copy file
ArchiveFileImpl_CannotCloseFile=Cannot close file
ArchiveFileImpl_CannotLocatePluginRelativeFile=Cannot locate plugin-relative file "{0}"

PluginProvidedJSFLibraryCreationHelper_ErrorCreating=Unable to create JSF Library: {0}
PluginProvidedJSFLibraryCreationHelper_ErrorMultipleDefinition={0} defined multiple times in {1}

JSFUtils_ErrorCreatingConfigFile=Error creating config file
JSFUtils_ErrorClosingConfigFile=Error closing config file

JSFAppConfigUtils_ErrorOpeningJarFile=Error opening JarFile "{0}"

JARFileJSFAppConfigProvider_ErrorLoadingModel=Error loading model for file "{0}"
JSFUtils_MissingJAR= Missing JSF Library Jar: {0} in {1}

J2EEModuleDependencyDelegate_UpdatingJ2EEModuleDependencies=Updating J2EE Module Dependencies
J2EEModuleDependencyDelegate_UpdatingJ2EEModuleDependenciesForProject=Updating J2EE Module Dependencies for project "{0}"

JSFRegistryMigration05_to_10_title=User Intervention Required
JSFRegistryMigration05_to_10_message=IMPORTANT! Please read below:
JSFRegistryMigration05_to_10_customMessage=You have loaded a workspace created with a previous \
version of JSF Tools.\nYour JSF Library Registry is out of date and needs to be migrated forward to continue.\n\
If you choose to proceed, be aware of the following consequences:\n\
\n\
1) Projects in this workspace will need to be manually migrated by you to work in this version of JSF Tools.\n\
2) Once migrated, this workspace will no longer work in older versions of JSF Tools.\n\
\n\
If this is not what you want, exit immediately and your workspace will still load in older versions.

JSFRegistryMigrationCannot05_to_10_title=Error During Registry Upgrade
JSFRegistryMigrationCannot05_to_10_message=IMPORTANT! Please read below:
JSFRegistryMigrationCannot05_to_10_customMessage=You a loaded a workspace created with a previous \
version of JSF Tools.\nYour JSF Library Registry is out of date and needs to be migrated forward to continue.\n\
However, the existing registry has a problem and cannot be upgraded. 
RegistryMigrationStartupHandler_Error_committing_migration=Error committing migration\!
RegistryMigrationStartupHandler_Error_Rolling_Back_Migration=Error rolling back migration\!
RegistryMigrationStartupHandler_Dialog_Confirm_Migration=Confirm
RegistryMigrationStartupHandler_Dialog_Abort_And_Exit_Migration=Abort and Exit
RegistryMigrationStartupHandler_Launch_Migration_Doc_On_Confirm=Launch Migration Doc on Confirm
