###############################################################################
# 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.
#
PLUGIN_NAME=Web Services
PLUGIN_VENDOR=International Business Machines Corp.
PLUGIN_DESC=\
The Web Services plugin delivers the graphic user interface \
for editing Web services deployment descriptors.

#
# 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_REDIRECT=Redirecting Editor
MSG_REDIRECT_ERROR=An error occurred when loading one of the descriptors. Ensure that the descriptors contain well-formed XML. Redirecting to the XML Editor.
MSG_OPEN_EDITOR2_ERROR=An error occured while opening the editor.
ERROR_PAGE_TITLE=Error Page
ERROR_PAGE_DESC=An error occurred when loading one the descriptors. Ensure that the descriptors contain well-formed XML.

TITLE_CLOSE=Closing Editor
MSG_SAVE_CONTENTS=The editor for the file at {0} is closing due to the removal of one or more files. Save editor contents prior to closing?

TITLE_SAVE_ERROR=Save Error
MSG_SAVE_ERROR=An error occurred when attempting to save editor contents.
MSG_ERROR_FOUND_BOTH_QUALIFIED_AND_UNQUALIFIED_SERVICE_REFS=IWAE0001E Web services client deployment descriptor cannot have both qualified and unqualified service references.  Please correct this before saving.

#
# Messages in WebServicesEditor
#
EDITOR_NAME_WEB_SERVICES=Web Services Editor
EDITOR_PAGES_WEB_SERVICES=Pages of Web Services Editor

#
# Messages in WebServicesClientEditor
#
EDITOR_NAME_WEB_SERVICES_CLIENT=Web Services Client Editor
EDITOR_PAGES_WEB_SERVICES_CILENT=Pages of Web Services Client Editor

#
# Messages in WebServicesPage
#
PAGE_WEB_SERVICES=Web Services
PAGE_TITLE_WEB_SERVICES=Web Services
PAGE_DESC_WEB_SERVICES=Editor for Web service deployment descriptor (webservices.xml)
TITLE_WEB_SERVICE_OVERVIEW=Web service overview
DESC_WEB_SERVICE_OVERVIEW=Details of the Web service deployment descriptor (webservices.xml)
TITLE_ICONS=Icons
DESC_WEB_SERVICE_ICONS=The following icons represent this Web service deployment descriptor
DESC_WEB_SERVICE_DESC_ICONS=The following icons represent the selected Web service description
TITLE_WEB_SERVICE_DESCRIPTIONS=Web service descriptions
DESC_WEB_SERVICE_DESCRIPTIONS=The following are the deployed Web services in this module
TITLE_WEB_SERVICE_DESC_OVERVIEW=Web service description overview
DESC_WEB_SERVICE_DESC_OVERVIEW=Details of the selected Web service description
TITLE_WEB_SERVICE_DESC_IMPL_DETAILS=Web service description implementation details
DESC_WEB_SERVICE_DESC_IMPL_DETAILS=Implementation details of the selected Web service description
TITLE_PORT_COMPONENTS=Port components
DESC_PORT_COMPONENTS=The following are port components defined in this Web service description.  Each port component associates a WSDL port with a Web service interface and implementation

#
# Messages in PortComponentPage
#
PAGE_PORT_COMPONENTS=Port Components
PAGE_TITLE_PORT_COMPONENTS=Port Components
PAGE_DESC_PORT_COMPONENTS=Editor for port components
TITLE_PORT_COMPONENT_OVERVIEW=Port component overview
DESC_PORT_COMPONENT_OVERVIEW=Details of the selected port component
DESC_PORT_COMPONENT_ICONS=The following icons represent the selected port component
TITLE_PORT_COMPONENT_IMPL_DETAILS=Port component implementation details
DESC_PORT_COMPONENT_IMPL_DETAILS=Implementation details of the selected port component
TITLE_HANDLERS=Handlers
DESC_HANDLERS=The following are handlers of the selected port component

#
# Messages in HandlerPage
#
PAGE_HANDLERS=Handlers
PAGE_TITLE_HANDLERS=Handlers
PAGE_DESC_HANDLERS=Editor for handlers
TITLE_HANDLER_OVERVIEW=Handler overview
DESC_HANDLER_OVERVIEW=Details of the selected handler
DESC_HANDLER_ICONS=The following icons represent the selected handler
TITLE_HANDLER_IMPL_DETAILS=Handler implementation details
DESC_HANDLER_IMPL_DETAILS=Implementation details of the selected handler
TITLE_HANDLER_INIT_PARAMS=Initial parameters
DESC_HANDLER_INIT_PARAMS=Initial parameters of the selected handler
TITLE_HANDLER_SOAP_HEADERS=SOAP headers
DESC_HANDLER_SOAP_HEADERS=SOAP headers of the selected handler
TITLE_HANDLER_SOAP_ROLES=SOAP roles
DESC_HANDLER_SOAP_ROLES=SOAP roles of the selected handler
TITLE_HANDLER_PORT_NAMES=Port names
DESC_HANDLER_PORT_NAMES=Port names of the selected handler

#
# Messages in WebServicesClientPage
#
PAGE_WEB_SERVICES_CLIENT=Web Services Client
PAGE_TITLE_WEB_SERVICES_CLIENT=Web Services Client
PAGE_DESC_WEB_SERVICES_CLIENT=Editor for Web service client deployment descriptor (Webservicesclient.xml)
TITLE_COMPONENT_SCOPED_REFS=Component scoped references
DESC_COMPONENT_SCOPED_REFS=The following are component scoped references in this Web service client deployment descriptor
TITLE_COMPONENT_SCOPED_REF_DETAILS=Component scoped reference details
DESC_COMPONENT_SCOPED_REF_DETAILS=Details of the selected component scoped reference

#
# Messages in ServiceRefPage
#
PAGE_SERVICE_REFS=Service References
PAGE_TITLE_SERVICE_REFS=Service References
PAGE_DESC_SERVICE_REFS=Editor for service references
TITLE_SERVICE_REFS=Service references
DESC_SERVICE_REFS=The following are Web services referenced by this module
TITLE_SERVICE_REF_OVERVIEW=Service reference overview
DESC_SERVICE_REF_OVERVIEW=Details of the selected service reference
DESC_SERVICE_REF_ICONS=The following icons represent the selected service reference
TITLE_SERVICE_REF_IMPL_DETAILS=Service reference implementation details
DESC_SERVICE_REF_IMPL_DETAILS=Implementation details of the selected service reference
TITLE_PORT_COMPONENT_REFS=Port component references
DESC_PORT_COMPONENT_REFS=The following are port components referenced by the selected service reference
TITLE_CLIENT_HANDLERS=Handlers
DESC_CLIENT_HANDLERS=The following are handlers referenced by the selected service reference

#
# Labels
#
LABEL_ADD=Add
LABEL_REMOVE=Remove
LABEL_MOVE=Move
LABEL_COPY=Copy
LABEL_EDIT=Edit
LABEL_UNQUALIFIED_COMPONENT=<unqualified>
LABEL_NAME=Name:
LABEL_VALUE=Value:
LABEL_DESCRIPTION=Description:
LABEL_DISPLAY_NAME=Display name:
LABEL_SMALL_ICON=Small icon:
LABEL_LARGE_ICON=Large icon:
LABEL_BROWSE=Browse
LABEL_WEB_SERVICE_DESC_NAME=Web service description name:
LABEL_WSDL_FILE=WSDL file:
LABEL_JAX_RPC_MAPPING_FILE=JAX RPC mapping file:
LABEL_PORT_COMPONENT_NAME=Port component name:
LABEL_WSDL_PORT=WSDL Port:
LABEL_NAMESPACE_URI=Namespace URI:
LABEL_LOCAL_PART=Local part:
LABEL_SERVICE_ENDPOINT_INTERFACE=Service endpoint interface:
LABEL_SERVICE_IMPL_BEAN=Service implementation bean:
LABEL_EJB_LINK=EJB link
LABEL_SERVLET_LINK=Servlet link
LABEL_HANDLER_NAME=Handler name:
LABEL_HANDLER_CLASS=Handler class:
LABEL_COMPONENT_NAME=Component name:
LABEL_SERVICE_REF_NAME=Service reference name:
LABEL_SERVICE_INTERFACE_NAME=Service interface name:
LABEL_SERVICE_QNAME=Qualified service name:
LABEL_WEB_SERVICE_DESC=Web service description:
LABEL_PORT_COMPONENT=Port component:
LABEL_COMPONENT_SCOPED_REF=Component scoped references:
LABEL_SERVICE_REF=Service references:

#
# Labels for table layout
#
LABEL_TABLE_NAME=Name
LABEL_TABLE_VALUE=Value
LABEL_TABLE_NAMESPACE_URI=Namespace URI
LABEL_TABLE_LOCAL_PART=Local part
LABEL_TABLE_SOAP_ROLE=SOAP role
LABEL_TABLE_PORT_NAME=Port name
LABEL_TABLE_SERVICE_ENDPOINT_INTERFACE=Service endpoint interface
LABEL_TABLE_PORT_COMPONENT_LINK=Port component link
LABEL_TABLE_DESCRIPTION=Description

#
# Page and Section titles/descriptions
#
TITLE_ALERT=Alert
DESC_ALERT=Alert
TITLE_CHOOSE_SMALL_ICON=Choose Small Icon
DESC_CHOOSE_SMALL_ICON=Select the small icon
TITLE_CHOOSE_LARGE_ICON=Choose Large Icon
DESC_CHOOSE_LARGE_ICON=Select the large icon

#
# Dialog labels
#
DIALOG_TITLE_ADD=Add {0}
DIALOG_TITLE_EDIT=Edit {0}
DIALOG_TITLE_CLASS_BROWSER=Class browser
DIALOG_DESC_CLASS_BROWSER=Browse for a Java class
DIALOG_TITLE_RESOURCE_BROWSER=Resource browser
DIALOG_TITLE_SERVICE_REF=Select a Service Reference
MSG_NO_SERVICE_REFS=There are no remaining service references.
DIALOG_TITLE_COMP_SCOPED_REF=Select a Component Scoped Reference
MSG_NO_COMP_SCOPED_REF=There are no remaining component scoped references.
DIALOG_TITLE_WEB_SERVICE_DESC=Select a Web Service Description
MSG_NO_WS_DESC=There are no remaining Web service descriptions.

#
# Tooltips
#
TOOLTIP_RESOURCE_TREE=Choose a resource.
TOOLTIP_DESCRIPTION=Enter a description.
TOOLTIP_DISPLAY_NAME=Enter a display name.
TOOLTIP_SMALL_ICON=Enter the location of the small icon.
TOOLTIP_BROWSE_SMALL_ICON=Browse for the small icon.
TOOLTIP_LARGE_ICON=Enter the location of the large icon.
TOOLTIP_BROWSE_LARGE_ICON=Browse for the large icon.
TOOLTIP_WEB_SERVICE_DESC_NAME=Enter the name of this Web service description.
TOOLTIP_WSDL_FILE=Enter the location of the WSDL file.
TOOLTIP_BROWSE_WSDL_FILE=Browse for the WSDL file.
TOOLTIP_JAX_RPC_MAPPING_FILE=Enter the location of the JAX-RPC mapping file.
TOOLTIP_BROWSE_JAX_RPC_MAPPING_FILE=Browse for the JAX-RPC mapping file.
TOOLTIP_PORT_COMPONENT_NAME=Enter the name of this port component.
TOOLTIP_WSDL_PORT_NS_URI=Enter the namespace URI of the WSDL port.
TOOLTIP_WSDL_PORT_LOCAL_PART=Enter the local part of the WSDL port.
TOOLTIP_SERVICE_ENDPOINT_INTERFACE=Enter the fully-qualified class name of the port component's service endpoint interface.
TOOLTIP_BROWSE_SERVICE_ENDPOINT_INTERFACE=Browse for the service endpoint interface.
TOOLTIP_SERVICE_IMPL_BEAN=Choose the Web service implementation.
TOOLTIP_EJB_LINK=EJB link is used when an enterprise bean is used as the Web service implementation.
TOOLTIP_SERVLET_LINK=Servlet link is used when a servlet is used as the Web service implementation.
TOOLTIP_COMBO_WEB_SERVICE_DESC=Choose a Web service description.
TOOLTIP_COMBO_PORT_COMPONENT=Choose a port component.
TOOLTIP_HANDLER_NAME=Enter the name of the handler.
TOOLTIP_HANDLER_CLASS=Enter the fully-qualified class name of the handler.
TOOLTIP_BROWSE_HANDLER_CLASS=Browse for the handler class.
TOOLTIP_SERVICE_REF_NAME=Enter the name of the service reference.
TOOLTIP_SERVICE_INTERFACE=Enter the fully-qualified class name of the service interface.
TOOLTIP_BROWSE_SERVICE_INTERFACE=Browse for the service interface class.
TOOLTIP_SERVICE_QNAME_NS_URI=Enter the namespace URI of the qualified service name.
TOOLTIP_SERVICE_QNAME_LOCAL_PART=Enter the local part of the qualified service name.
TOOLTIP_COMBO_COMP_SCOPED_REF=Choose a component scoped reference.
TOOLTIP_COMBO_SERVICE_REF=Choose a service reference.
TOOLTIP_SECTION_WEB_SERVICE_DESC=List of Web service descriptions defined in this module.
TOOLTIP_SECTION_PORT_COMPONENTS=List of port components defined in the selected Web service description.
TOOLTIP_SECTION_HANDLERS_WS=List of handlers defined in the selected port component.
TOOLTIP_SECTION_INIT_PARAMS=List of name/value pairs used as initialization parameters of the handler.
TOOLTIP_SECTION_SOAP_HEADERS=List of qualified SOAP header names that will be processed by the handler.
TOOLTIP_SECTION_SOAP_ROLES=List of SOAP actor definitions that the handler will play as a role.
TOOLTIP_SECTION_COMPONENT_SCOPED_REF=List of component scoped references defined in this module.
TOOLTIP_SECTION_SERVICE_REF=List of service references defined in the selected component scoped reference.
TOOLTIP_SECTION_PORT_COMPONENT_REF=List of client dependencies on the container for resolving a service endpoint interface to a WSDL port.
TOOLTIP_SECTION_HANDLER_WSC=List of handlers defined in the selected service reference.
TOOLTIP_SECTION_PORT_NAMES=List of WSDL port names that the handler should be associated with.

#
# 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_ServiceQname_type=Service Qname
_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.

