###############################################################################
# Copyright (c) 2001, 2005 IBM 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:
#     IBM Corporation - initial API and implementation
###############################################################################

#
# Messages for SimpleURIFactory
#
MSG_NULL_ARG_SPECIFIED=Null specified as argument to {0}.
MSG_SCHEME_NOT_FOUND=Scheme not found for URI {0}.
MSG_ABSOLUTE_PATH_WITHOUT_SCHEME=Absolute path specified without a scheme for URI {0}.

#
# Common Messages
#
MSG_URI_NOT_RELATIVE=URL: {0} is not relative.
MSG_ERROR_UNEXPECTED_ERROR=Unexpected exception occured.
MSG_INVALID_PLATFORM_URL=Invalid URL: {0} for an Eclipse platform.
MSG_INVALID_FILE_URL=Invalid URL: {0} for the file protocol

#
# Messages for ResouceUtils
#
MSG_ERROR_PATH_NOT_ABSOLUTE=Path {0} is not absolute for creating a file.
MSG_ERROR_PATH_EMPTY=Path {0} is empty while creating a file.
MSG_ERROR_PATH_NOT_FOLDER=Path {0} is not a folder for creating a file.
MSG_ERROR_RESOURCE_NOT_FOLDER=Resource {0} is not a folder.
MSG_ERROR_RESOURCE_NOT_FILE=The following path is not a resource: {0}.
MSG_ERROR_FOLDER_HAS_CHILDREN=Can not create folder: {0} that already has children.
MSG_ERROR_IO=An input/output error occurred while processing the resource "{0}".

LABEL_YES=Yes
LABEL_YES_TO_ALL=Yes All
LABEL_CANCEL=Cancel
