###############################################################################
# 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
###############################################################################
NEW_BUTTON_LABEL=New...
NEW_HANDLER_WIZARD_WINDOW_TITLE=New Handler
NEW_HANDLER_WIZARD_PAGE_TITLE=Web Service Handler
NEW_HANDLER_WIZARD_PAGE_DESC=Create a new web service handler.
HANDLER_DISPLAY_NAME_LABEL=Dispaly name:
HANDLER_DESCRIPTION_LABEL=Description:
HANDLER_NAME_LABEL=Handler name:
HANDLER_CLASS_NAME_LABEL=Handler class:
HANDLER_INIT_PARAM_WIZARD_WINDOW_TITLE=Handler Initialization Parameter
HANDLER_INIT_PARAM_WIZARD_PAGE_TITLE=Enter Handler Initialization Parameter
HANDLER_INIT_PARAM_WIZARD_PAGE_DESC=Creare a new handler initialization parameter.
HANDLER_SOAP_HEADER_WIZARD_WINDOW_TITLE=Handler SOAP Headers
HANDLER_SOAP_HEADER_WIZARD_PAGE_TITLE=Enter Handler SOAP Headers
HANDLER_SOAP_HEADER_WIZARD_PAGE_DESC=Create a new SOAP header.
HANDLER_NAMESPACE_URL_LABEL=Namespace URL:
HANDLER_LOCAL_PART_LABEL=Local part:
PortComponentRefLabelProvider_UI_1=Service Endpoint Interface:
PortComponentRefLabelProvider_UI_2=Port Component Link:
WebServiceNavigatorGroupType_UI_0=Services
WebServiceNavigatorGroupType_UI_1=Clients
WebServiceNavigatorGroupType_UI_2=Handlers
WebServiceFilesContribution_UI_0=Files
WebServiceGroupContentExtension_UI_1=Web Browser
WebServiceNavigatorGroup_UI_0=Web Services
Server_Invalid_For_Exisitng_EAR_UI_=Selected target server "{0}" is invalid for the existing EAR project "{1}"
ServiceReferenceSelectionWizard_UI_6=Service Reference Selection
ServiceReferenceSelectionWizard_UI_7=Service Reference Snippet
ServiceReferenceSelectionPage_UI_0=Select a Service Reference
ServiceReferenceSelectionPage_UI_1=Service Reference owner:
ServiceReferenceSelectionPage_UI_2=New Service Reference...
SERVICE_CLASSES_UI_=Service Classes
PORT_UI_=Port:
HANDLER_UI_=Handler:
WSDL_PORT_UI_=WSDL Port:
SERVICE_IMPL_UI_=ServiceImpl:
WSDL_UI_=WSDL: