###############################################################################
# Copyright (c) 2001, 2008 Oracle Corporation and others.
# 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 Corporation - initial API and implementation
###############################################################################
common.error=Error
common.warning=Warning
log.StartMessage=Faces Config Editor initialized on eclipse version {0}.
####################################################
# Resource message for Logging
####################################################

log.msg={0}

log.EditorPlugin=Faces Config Editor Plugin initialized on eclipse version {0}.
log.EditorPlugin.image.error=Image ''{0}'' not found.

####################################################
# Resource message for Alert
####################################################

Pageflow.PageflowEditor.Alert.errorOpenEditorTitle 	= Open Pageflow Error
Pageflow.PageflowEditor.Alert.errorOpenEditorInfo 	= An error occured during opening the editor.
Pageflow.PageflowEditor.Alert.errorSaveFileTitle 	= Save Pageflow Error
Pageflow.PageflowEditor.Alert.errorSaveFileInfo 	= The current pageflow model could not be saved.
Pageflow.PageflowEditor.Alert.nullModelManager 	= No model manager found for saving the file.
Pageflow.PageflowEditor.Alert.errorOpenEditor4JSFTitle 	= Open JSF File Error
Pageflow.PageflowEditor.Alert.errorOpenEditor4JSFInfo 	= The JSF file ''{0}'' does not exist.
Pageflow.PageflowEditor.Alert.errorOpenEditor4JSFFolderInfo = Cannot open the page in the page editor.

Pageflow.PageflowEditor.Alert.confirmCreateNewJSFFileTitle = Confirm
Pageflow.PageflowEditor.Alert.confirmCreateNewJSFFile = No jsp file is related with this page.

Pageflow.PageflowEditor.Alert.syncWithFacesConfigTitle = Confirm
Pageflow.PageflowEditor.Alert.syncWithFacesConfigInfo = Synchronizing with faces-config will update the current pageflow model! \nThis command CAN NOT undo. Are you sure?
Pageflow.PageflowEditor.Alert.errorSyncPageflowModel = The current pageflow model could not be synchronized with the specified faces-config file.

Pageflow.PageflowEditor.Alert.updateFacesConfigTitle = Confirm
Pageflow.PageflowEditor.Alert.updateFacesConfigInfo = Update the related faces config file. Are you sure?
Pageflow.PageflowEditor.Alert.errorUpdateFacesConfig = The related faces-config file could not be updated.

Pageflow.Transform.Alert.ResourceTitle = Resource Error
Pageflow.Transform.Alert.LoadResourceError = Error loading resource
Pageflow.Transform.Alert.SaveResourceError = Error saving resource

Pageflow.PageflowEditor.Alert.DNDResourceTitle	= Pageflow Creation Error 
Pageflow.PageflowEditor.Alert.ExistingPage	= The web page ''{0}'' already exists in current PageFlow.
Pageflow.PageflowEditor.Alert.ExistingAction	= The action ''{0}'' already exists in current PageFlow.
Pageflow.PageflowEditor.Alert.PageFromOtherProject 	= The web page ''{0}'' does not belong to current project.

Pageflow.FacesConfig.Alert.ResourceTitle = Faces Configuration File Warning
Pageflow.FacesConfig.Alert.LoadFileError = Invalid content in faces configuration file ''{0}''.
Pageflow.FacesConfig.Alert.ErrorUpdateFacesConfigFromPageflow = Invalid content in faces configuration file. \nThe pageflow diagram can not be transformed.
Pageflow.FacesConfig.Alert.SaveFileError = Failed to save faces configuration file ''{0}''.

ManagedBeanInitializationSection.Remove.Title	= Confirm Remove
ManagedBeanInitializationSection.RemoveManagedProperty = Are you sure you want to remove all the managed-properties?
ManagedBeanInitializationSection.RemoveMapEntries = Are you sure you want to remove map-entries?
ManagedBeanInitializationSection.RemoveListEntries = Are you sure you want to remove list-entries?

Alert.Error.CompletionProcessor.HTML.AttributeCompletionProp=No completions found
Alert.Info.JSPPageEditorContributor.CreateAction.Message=Sample Action Executed

Pageflow.PageflowEditor.Error.invalidPageflowFile 	= The specified input is not a valid pageflow.
Pageflow.PageflowEditor.Error.invalidPageflowModel 	= The model in the pageflow file is not a valid pageflow model.
Pageflow.PageflowEditor.Error.canNotOpenEditor4JSF 	= The jsf file can not be opened in the editor.
Pageflow.PageflowEditor.Error.ResourceChange 	= Failed in the resource change.
Pageflow.PageflowEditor.Error.canNotShowPropertyView	= Failed to show property sheet view.
Pageflow.PageflowEditor.Error.canNotShowPaletteView 	= Failed to show palette sheet view.

Pageflow.PageflowResources.Error.invalidResourceBundle     = The specified resource file is not a valid resourece bundle file.
Pageflow.Transform.Resource.LoadError = Error loading resource ''{0}''

Pageflow.PageflowEditor.Error.UnableRemoveAllMarkers 	= Unable to remove all markers
Pageflow.PageflowEditor.Error.UnableAddMarker 	= Unable to add a marker
Pageflow.PageflowEditor.Error.UnableRemoveMarker 	= Unable to remove a marker
Pageflow.PageflowEditor.Error.invalidMarkerAttribute 	= Unable to get marker's attribute

PageflowEditor.Encoding.Unsupported 			= Unsupported Encoding.
PageflowEditor.Transform.Error.GetPageflowFromFacesConfig 	= Failed to get pageflow model from faces-config'a navigation rule.
