###############################################################################
# Copyright (c) 2001, 2004 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 in plugin.xml.
#
PLUGIN_NAME=Web Services Explorer
PLUGIN_PROVIDER=Eclipse.org

#
# Messages for the client type extension
#
WEBSERVICECLIENTTYPE_NAME_WSEXPLORER=Stubless (Web Services Explorer)
TASK_LABEL_EXPLORE_WSDL_USING_WSE=Explorer WSDL using Web Services Explorer.

#
# Messages for the WSExplorer type extension
#
MSG_ERROR_LAUNCH_WSEXPLORER=IWAB0366E Unable to launch Web Services Explorer.
MSG_ERROR_LOAD_LAUNCH_OPTIONS=IWAB0367E Unable to load launch options.
MSG_BROKEN_VM_DOES_NOT_SUPPORT_UTF-8=Broken VM does not support UTF-8.

#
# Messages for popup action (Test with Web Services Explorer)
#
POPUP_TEST_WSDL=Test with Web Services Explorer

