###############################################################################
# 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.

JSFFacetInstallDelegate_InternalErr=Internal Error creating JSF Facet.  Missing configuration.
JSFFacetInstallDelegate_ConfigErr=''{0}'' : unable to configure web module for JavaServer Faces
JSFFacetInstallDelegate_NonUpdateableWebXML=JSF Facet was not installed on ''{0}''.  The web.xml file needs to be updateable.
JSFFacetUninstallDelegate_ConfigErr=''{0}'' : unable to de-configure web module for JavaServer Faces
JSFFacetUninstallDelegate_NonUpdateableWebXML=JSF Facet was not un-installed from ''{0}''.  The web.xml file needs to be updateable.

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

JSFFacet11_presetLabel = JavaServer Faces v1.1 Project
JSFFacet11_presetDescription = Configures a Dynamic Web application to use JSF v1.1
