###############################################################################
# Copyright (c) 2001, 2008 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
###############################################################################

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

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_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=Web Service Sample 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
