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

#
# 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=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
