###############################################################################
# Copyright (c) 2003, 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
###############################################################################
# ----------------------------------------------------------------------
# Properties for com.ibm.etools.webservice.atk.ui
#
# Entries are of the form CONSTANT=string
#
# File plugins/com.ibm.etools.webservice.atk.ui/plugin.properties, wsa.etools.ws.properties, lunar, 20030922a 26
# Version 1.26 03/09/09 16:41:49
# ----------------------------------------------------------------------

#
# Messages in plugin.xml.
#



#
# Edit models
#
WSDD_EDIT_MODEL_NAME=Web Services Edit Model
EDITOR_EDITMODELS_WEB_SERVICES=Web Services Editor Edit Model
WSCDD_EDIT_MODEL_NAME=Web Services Client Edit Model
EDITOR_EDITMODELS_WEB_SERVICES_CLIENT=Web Services Client Editor Edit Model

#
#Common Editor Messages
#
TITLE_SAVE_ERROR=Save Error
MSG_SAVE_ERROR=An error occurred when attempting to save editor contents.

#
# Messages in WebServicesEditor
#

#
# Messages in WebServicesClientEditor
#



#
# Messages in WebServicesPage
#


#
# Messages in PortComponentPage
#


#
# Messages in HandlerPage
#


#
# Messages in WebServicesClientPage
#


#
# Messages in ServiceRefPage
#


#
# Labels
#
LABEL_UNQUALIFIED_COMPONENT=<unqualified>
LABEL_SERVLET_LINK=Servlet link



#
# Labels for table layout
#
LABEL_TABLE_NAME=Name
LABEL_TABLE_VALUE=Value
LABEL_TABLE_SOAP_ROLE=SOAP role
LABEL_TABLE_PORT_NAME=Port name
LABEL_TABLE_PORT_COMPONENT_LINK=Port component link
LABEL_TABLE_DESCRIPTION=Description

#
# Page and Section titles/descriptions
#




#
# Dialog labels
#


#
# Tooltips
#


#
# Labels for providers
#
_UI_WebServiceDescription_type=Web service description
_UI_PortComponent_type=Port component
_UI_Handler_type=Handler
_UI_PortComponentRef_type=Port component reference
_UI_ServiceRef_type=Service reference
_UI_WebServicesClient_type=Web services client
_UI_ComponentScopedRefs_type=Component scoped reference
_UI_WSDLPort_type=WSDL port
_UI_WebServices_type=Web services
_UI_ServletLink_type=Servlet link
_UI_ServiceImplBean_type=Service implementation bean
_UI_EJBLink_type=EJB link
_UI_BeanLink_type=Bean link
_UI_SOAPRole_type=SOAP role
_UI_SOAPHeader_type=SOAP header
_UI_PortName_type=Port name
_UI_InitParam_type=Initial parameter
_UI_ServiceRef_jaxrpcMappingFile_feature=Jaxrpc Mapping File
_UI_ServiceRef_jaxrpcMappingFile_feature_desc=The jaxrpc mapping file.
_UI_ServiceRef_serviceInterface_feature=Service Interface
_UI_ServiceRef_serviceInterface_feature_desc=The service interface.
_UI_ServiceRef_serviceRefName_feature=Name
_UI_ServiceRef_serviceRefName_feature_desc=The service reference name.
_UI_ServiceRef_wsdlFile_feature=Wsdl File
_UI_ServiceRef_wsdlFile_feature_desc=The .wsdl file.
_UI_PortComponentRef_serviceEndpointInterface_feature=Service Endpoint Interface
_UI_PortComponentRef_serviceEndpointInterface_feature_desc=The service endpoint interface.
_UI_PortComponentRef_portComponentLink_feature=Link
_UI_PortComponentRef_portComponentLink_feature_desc=The port component link.
_UI_Handler_soapRoles_feature=Soap Roles
_UI_Handler_soapRoles_feature_desc=The handler soap roles.
_UI_Handler_portNames_feature=Port Names
_UI_Handler_portNames_feature_desc=The handler port names.
_UI_Handler_handlerName_feature=Handler Name
_UI_Handler_handlerName_feature_desc=The handler name.
_UI_Handler_handlerClass_feature=Handler Class
_UI_Handler_handlerClass_feature_desc=The handler class.
_UI_InitParam_paramName_feature=Name
_UI_InitParam_paramName_feature_desc=The initial parameter name.
_UI_InitParam_description_feature=Description
_UI_InitParam_description_feature_desc=The initial parameter description.
_UI_InitParam_paramValue_feature=Value
_UI_InitParam_paramValue_feature_desc=The initial parameter value.

