###############################################################################
# Copyright (c) 2003, 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
###############################################################################
# ----------------------------------------------------------------------
# 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.

