###############################################################################
# Copyright (c) 2001, 2010 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
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20060515   141536 pmoogk@ca.ibm.com - Peter Moogk
# 20070820   191585 pmoogk@ca.ibm.com - Peter Moogk
# 20070917   202303 pmoogk@ca.ibm.com - Peter Moogk
# 20080325   184761 gilberta@ca.ibm.com - Gilbert Andrews
# 20090909   244814 mahutch@ca.ibm.com - Mark Hutchinson
# 20100811   322429 mahutch@ca.ibm.com - Mark Hutchinson, Improve performance of launching the Web Services Wizard
###############################################################################

#
# Messages in plugin.xml.
#
PLUGIN_NAME=Web Services Consumption Graphical User Interface
PLUGIN_PROVIDER=Eclipse Web Tools Platform

FEATURE_DESCRIPTION=Web services
WEBSERVICES_CATEGORY=Web services

XP_wsImpl=Web service implementations
XP_wsClientImpl=Web service client implementations
XP_runtimes=Web service runtimes
XP_serviceRuntimes=Combination of a Web service runime, service implementation type, and required facets
XP_clientRuntimes=Combination of a Web service runime, client implementation type, and required facets
XP_tester=Web service test facilities

XP_serviceRuntimesProperties=Web service runtime properties
XP_clientRuntimesProperties=Client runtime properties

XP_PUBLIC_UDDI_REGISTRY_TYPES=Public UDDI Registry Types
XP_PRIVATE_UDDI_REGISTRY_TYPES=Private UDDI Registry Types
XP_WEB_SERVICE_CLIENT_TYPES=Web Service Client Types
XP_WEB_SERVICE_TEST=Web Service Test
XP_WEB_SERVICE_SERVER_RUNTIME_TYPES=Web Service Server Runtime Types
XP_WEB_SERVICE_CLIENT_PROJECT_TYPE=clientProjectType
XP_OBJECT_SELECTION_WIDGET=objectSelectionWidget

#
# Wizards.
#
WIZARD_TITLE_WSC=Web Service Client

PLUGIN_NEW_WIZARD_NAME_WS_CLIENT=Web Service Client
PLUGIN_IMPORT_WIZARD_NAME_WS=Web Service
PLUGIN_NEW_WIZARD_DESC_WS_CLIENT=Access an existing XML web service
PLUGIN_IMPORT_WIZARD_DESC_WS=A wizard for importing a web service
IMPORT_WIZARD_DESC_WSIL=Import WSDL references to a WSIL document

#
# Web Samples IDs
#
SAMPLE_TYPE_WEBSERVICES_ID=JAX-RPC JSPs

#
# Pop-up actions
#
ACTION_GENERATE_JAVA_PROXY=Generate Client
ACTION_GEN_SAMPLE=Generate JAX-RPC JSPs

#
# Dialogs
#
CHECKBOX_SHOW_GENERATE_JAVA_PROXY_DIALOG=Hide &Generate Java bean Proxy Dialog
CHECKBOX_SHOW_PROXY2SAMPLE_DIALOG=Hide &Proxy To Sample Generation Dialog
TOOLTIP_PPAD_CHECKBOX_WSDL2PROXY=Hide the dialog for generating the Java bean proxy action.
TOOLTIP_PPAD_CHECKBOX_PROXY2SAMPLE=Hide the dialog for generating the sample application action.

#
#       Web Services Preferance Pages
#
# Categories

PREFERENCE_CATEGORY_SERVER_RUNTIME=Server and Runtime
PREFERENCE_CATEGORY_PROJECT_TOPOLOGY=Project Topology
PREFERENCE_CATEGORY_TEST_FACILITY=Test Facility Defaults
PREFERENCE_CATEGORY_DIALOGS=Popup Dialog Selection


#
# WebServiceTestPage
#
WSEXPLORER_ID=Web Services Explorer

#
# PublicUDDIRegistryType
#
PUBLICUDDIREGISTRYTYPE_NAME_SAP=SAP UDDI Registry
PUBLICUDDIREGISTRYTYPE_NAME_SAP_TEST=SAP UDDI Test Registry
PUBLICUDDIREGISTRYTYPE_NAME_XMETHODS=XMethods Registry
PUBLICUDDIREGISTRYTYPE_NAME_NTTCOMM=NTT Communications Registry

#
# WSIL proxy
#
IMPORT_WIZARD_NAME_WSIL=WSIL
POPUP_GENERATE_WSIL=Generate WSIL

#
# Web Service Server Runtime Type
#
WEBSERVICETYPE_NAME_WSDL=Skeleton Java bean Web Service
WEBSERVICETYPE_NAME_JAVA=Java bean Web Service

#
# Web service client implementation type
#
JAVA_PROXY=Java Proxy
#
# Client project type
#
LABEL_CLIENT_TYPE_WEB=Web
LABEL_CLIENT_TYPE_EJB=EJB
LABEL_CLIENT_TYPE_APP_CLIENT=Application Client
LABEL_CLIENT_TYPE_CONTAINERLESS=Java

#
# Handlers Configuration wizard page
#
POPUP_ADD_HANDLERS=Configure Handlers
POPUP_CONFIG_CLIENT_HANDLERS=Configure Client Handlers
LABEL_HANDLERS_CONFIG=Configure Handlers
