###############################################################################
# Copyright (c) 2001, 2006 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} is already existed in current PageFlow.
Pageflow.PageflowEditor.Alert.ExistingAction	= The action {0} is already existed 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.
