###############################################################################
# Copyright (c) 2008 IONA Technologies PLC
# 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:
# IONA Technologies PLC - initial API and implementation
###############################################################################

#CXF Preference Pages
CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_HOME_TAB_NAME=&CXF Runtime
CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_HOME_TAB_TOOLTIP=Browse and select CXF Binary distribution folder
CXF_RUNTIME_PREFERENCE_PAGE_CXF_HOME_DIR_LABEL=CXF &home:
CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_NOT_SET=Missing CXF jar: Please select the CXF home directory.
CXF_RUNTIME_PREFERENCE_PAGE_ADD_BUTTON_LABEL=&Add...
CXF_RUNTIME_PREFERENCE_PAGE_EDIT_BUTTON_LABEL=&Edit...
CXF_RUNTIME_PREFERENCE_PAGE_REMOVE_BUTTON_LABEL=&Remove
CXF_RUNTIME_PREFERENCE_PAGE_BROWSE_BUTTON_LABEL=&Browse...
CXF_RUNTIME_PREFERENCE_PAGE_CXF_VERSION_LABEL=Version:
CXF_RUNTIME_PREFERENCE_PAGE_CXF_TYPE_LABEL=Type:
CXF_RUNTIME_PREFERENCE_PAGE_EXPORT_CXF_CLASSPATH_CONTAINER=Export runtime libraries to WEB-INF/lib at deployment time
CXF_RUNTIME_PREFERENCE_PAGE_DESCRIPTION_LABEL=Add, remove or edit CXF runtimes. By default, the checked CXF runtime is added to the build path of a project when installing the CXF facet.
CXF_RUNTIME_PREFERENCE_PAGE_VERSION_COLUMN_NAME=Version
CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_COLUMN_NAME=Location
CXF_RUNTIME_PREFERENCE_PAGE_TYPE_COLUMN_NAME=Type
CXF_RUNTIME_PREFERENCE_PAGE_ENTER_TYPE_NAME=Enter type name
CXF_RUNTIME_PREFERENCE_PAGE_INVALID_TYPE_NAME=Invalid type name: {0}
CXF_PROPERTY_PAGE_RUNTIME_LABEL=CXF runtime:
CXF_CONFIGURE_INSTALLED_RUNTIMES_LABEL=<A>Configure installed runtimes</A>

CXF_INSTALL_WIZARD_PAGE_TITLE=CXF Runtime
CXF_INSTALL_WIZARD_PAGE_DESCRIPTION=Specify the home directory of the CXF runtime.
CXF_INSTALL_WIZARD_ADD_WINDOW_TITLE=Add CXF Runtime
CXF_INSTALL_WIZARD_EDIT_WINDOW_TITLE=Edit CXF Runtime

CXF_FACET_INSTALL_WIZARD_PAGE_TITLE=CXF Facet
CXF_FACET_INSTALL_WIZARD_PAGE_DESCRIPTION=Configure the CXF facet settings.
    
JAVA2WSDL_PREFERENCES_TAB_NAME=Java2WSDL
JAVA2WSDL_PREFERENCES_TAB_TOOLTIP=Please select the default preferences for the Java2WSDL tool

JAVA2WS_PREFERENCES_TAB_NAME=&Java2WS
JAVA2WS_PREFERENCES_TAB_TOOLTIP=Please select the default preferences for the Java2WS tool

ANNOTATIONS_PREFERENCES_LINK=See the <A>'JAX-WS'</A> tab for the annotation preferences.

ANNOTATIONS_PREFERENCES_TAB_NAME=JA&X-WS
ANNOTATIONS_PREFERENCES_TAB_TOOLTIP=Please select the JAX-WS annotations that are generated by default on the class or interface before input to Java2WS

WSDL2JAVA_PREFERENCES_TAB_NAME=&WSDL2Java
WSDL2JAVA_PREFERENCES_TAB_TOOLTIP=Please select the default preferences for the WSDL2Java tool

SPRING_CONFIG_PREFERENCES_TAB_NAME=&Endpoint Config
SPRING_CONFIG_PREFERENCES_TAB_TOOLTIP=Please select the default option for Spring configuration generation
SPRING_CONFIG_USE_CXF_SERVLET=Use CX&F Servlet
SPRING_CONFIG_USE_CXF_SPRING_APPLICATION_CONTEXT=Use Spring &Application Context

CXF_DEFAULT_FRONTEND_LABEL=Default &Frontend:
CXF_DEFAULT_DATABINDING_LABEL=Default &Databindng:
JAVA2WS_GROUP_LABEL=Java2WS Generation Options:
JAVA2WSDL_GROUP_LABEL=Java2WSDL Generation Options:
WSDL2JAVA_GROUP_LABEL=WSDL2Java Generation Options:
JAVA2WS_GEN_CLIENT_LABEL=Generate Cli&ent
JAVA2WS_GEN_SERVER_LABEL=Generate Ser&ver
JAVA2WS_GEN_IMPLEMENTATION_LABEL=Generate &Implementation
JAVA2WS_GEN_WRAPPER_FAULT_LABEL=Generate Wrapper and Fault &Beans
JAVA2WS_GEN_WSDL_LABEL=Generate WSD&L
JAVA2WS_DEFAULT_SOAPBINDING_LABEL=Default S&OAP Binding:
JAVA2WS_GEN_XSD_IMPORTS=Generate separate XSD for the &types
CXF_INVALID_VERSION_FORMAT=Invalid Version Format
CXF_VERSION_NOT_SPECIFIED=CXF version value not specified
SPRING_CONFIG_GROUP_LABEL=CXF Endpoint Configuration Options:
WSDL2JAVA_PROCESS_SOAP_HEADERS=Enable &processing of implicit SOAP headers
WSDL2JAVA_LOAD_DEFAULT_NAMESPACE_PACKAGE_MAPPING=Enable &loading of the default namespace package name mapping
WSDL2JAVA_USE_DEFAULT_EXCLUDES_NAMESPACE_MAPPING=Enable the use of the default &excludes namespace mapping
WSDL2JAVA_WSDL_VERSION_LABEL=WSDL Version:
WSDL2JAVA_USE_DEFAULT_VALUES=Generate &default values for the generated artifacts

JAXWS_ANNOTATIONS_GROUP_LABEL=JAX-WS Annotation Generation
JAXWS_ANNOTATIONS_GROUP_TOOLTIP=Select the annotations which are generated by default on the class or interface before input to Java2WS
JAXWS_GENERATE_WEB_METHOD=@Web&Method
JAXWS_GENERATE_WEB_PARAM=@Web&Param
JAXWS_GENERATE_REQUEST_WRAPPER=@Re&questWrapper
JAXWS_GENERATE_RESPONSE_WRAPPER=@&ResponseWrapper
JAXWS_ANNOTATIONS_PROCESSING_GROUP_LABEL=JAX-WS Annotation Processing
JAXWS_ENABLE_ANNOTATION_PROCESSING=&Enable annotation validation processing
JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP=Turn JAX-WS annotation processing on or off in projects configured for {0} web services
    
JAVA2WS_SOAP12_BINDING_TOOLTIP=Specify to generate SOAP 1.2 binding
JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP= Output schemas to separate files and use imports to load them instead of inlining them into the wsdl
JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding. Default is jaxb for jaxws frontend
#JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding (aegis or jaxb). Default is jaxb for jaxws frontend, and aegis for simple frontend
JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use
#JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use. jaxws and the simple frontend are supported
JAVA2WS_GENERATE_WSDL_TOOLTIP=Specify to generate the WSDL file
JAVA2WS_GENERATE_WRAPPERBEAN_TOOLTIP=Specify to generate the wrapper and fault bean
JAVA2WS_GENERATE_CLIENT_TOOLTIP=Generate a client mainline using JAX-WS APIs\n.....\n javax.xml.ws.Service service = javax.xml.ws.Service.create(...);\n... client = service.getPort(...);\n
JAVA2WS_GENERATE_SERVER_TOOLTIP=Generate a server mainline using JAX-WS APIs\n.....\n javax.xml.ws.Endpoint.publish(...);\n.....\n
JAVA2WS_GENERATE_ANT_TOOLTIP=Specify to generate an Ant build.xml file
JAVA2WS_BEANS_TOOLTIP=Specify the pathname of a file defining additional Spring beans to customise data binding configuration
JAVA2WS_TARGET_NAMESPACE_TOOLTIP=Specify the target namespace to use in the wsdl
JAVA2WS_SERVICE_NAME_TOOLTIP=Specify the service name to use in the generated wsdl
JAVA2WS_PORT_NAME_TOOLTIP=Specify the port name to use in the generated wsdl
JAVA2WS_ADDRESS_TOOLTIP= Specify the port address

JAVA2WS_WSDL_FILE_NAME=&WSDL File:
JAVA2WS_OUTPUT_FILE_TOOLTIP=Specify the output wsdl file name

JAVA2WS_USE_SEI_BUTTON=&Use a Service Endpoint Interface:
JAVA2WS_USE_SEI_INFO_LABEL=(You may work directly with the {0} Java class. But working from an interface is the recommended approach. Two options are provided here.)
JAVA2WS_SELECT_SEI=Select SEI:
#JAVA2WS_SELECT_SEI_LABEL=Select SEI from &Type Hierarchy:
JAVA2WS_SELECT_SEI_LABEL=Selec&t an SEI:
JAVA2WS_SELECT_SEI_TOOLTIP=Select the Interface from the Type Hierarchy to use as the SEI
JAVA2WS_BROWSE_LABEL=Browse...
JAVA2WS_EXTRACT_SEI=Extract SEI:
JAVA2WS_EXTRACT_SEI_LABEL=&Create an SEI:
JAVA2WS_EXTRACT_SEI_TOOLTIP=Type the name of the Service Endpoint Interface to extract
JAVA2WS_EXTRACT_MEMBERS_LABEL=Members to declare in the extracted SEI:
JAVA2WS_SELECT_ALL_BUTTON=&Select All...
JAVA2WS_DESELECT_ALL_BUTTON=&Deselect All...
JAVA2WS_SELECT_IMPLEMENTATION=Select &Implementation:
JAVA2WS_SELECT_IMPLEMENTATION_TOOLTIP=Select the Implementation

WSDL2JAVA_FRONTEND_TOOLTIP=Specify the frontend. Default is JAXWS. Currently supports only JAXWS frontend
WSDL2JAVA_DATABINDING_TOOLTIP=Specify the databinding. Default is JAXB. Currently supports only JAXB databinding
WSDL2JAVA_WSDL_VERSION_TOOLTIP=Specify the wsdl version .Default is WSDL1.1. Currently supports only WSDL1.1 version
WSDL2JAVA_GENERATE_IMPLEMENTATION_TOOLTIP=Generate starting point code for an implementation object
WSDL2JAVA_GENERATE_CLIENT_TOOLTIP=Generate the client code
WSDL2JAVA_GENERATE_SERVER_TOOLTIP=Generate the server code
WSDL2JAVA_DEFAULT_VALUES_TOOLTIP=Generate default values in the implementation and client. Ignored if implementation or client is not being generated
WSDL2JAVA_EXCLUDE_NAMESPACE_TOOLTIP=Ignore the specified WSDL schema namespaces when generating code
WSDL2JAVA_PROCESS_SOAP_HEADERS_TOOLTIP=Enables or disables processing of extended soap header message binding
WSDL2JAVA_DEFAULT_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default namespace package name mapping
WSDL2JAVA_EXCLUDE_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default excludes namespace mapping
WSDL2JAVA_WSDL_LOCATION_TOOLTIP=Specifies the value of the @WebService annotation's wsdlLocation property
WSDL2JAVA_XML_CATALOG_TOOLTIP=Specify the URL of an XML catalog to use for resolving imported schemas and WSDL documents
WSDL2JAVA_NO_ADDRESS_BINDING=Use the {0} proprietary WS-&Addressing type
WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP=Use the {0} proprietary WS-Addressing type instead of the JAX-WS 2.1 compliant mapping
WSDL2JAVA_AUTO_NAME_RESOLUTION=Enable Auto Name Resolution
WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP=Automatically resolve naming conflicts without requiring the use of binding customizations
WSDL2JAVA_XJC_ARGS_TOOLTIP=Specify the arguments to be passed directly to the XJC
WSDL2JAVA_XJC_ARG_GROUP_TITLE=XJC Arguments
WSDL2JAVA_XJC_ARG_COLUMN_NAME=XJC Arg
WSDL2JAVA_XJC_DESCRIPTION_COLUMN_NAME=Description
WSDL2JAVA_XJC_DEFAULT_VALUES=Initialise fields mapped from elements with their default values
WSDL2JAVA_XJC_TOSTRING=Activate plugin to add a toString() method to generated classes
WSDL2JAVA_XJC_TOSTRING_MULTILINE=Have toString produce multi line output
WSDL2JAVA_XJC_TOSTRING_SIMPLE=Have toString produce single line terse output
WSDL2JAVA_XJC_LOCATOR=Enable source location support for generated code
WSDL2JAVA_XJC_SYNC_METHODS=Generate accessor methods with the 'synchronized' keyword
WSDL2JAVA_XJC_MARK_GENERATED=Add @Generated annotations to the generated code
#Mark the generated code as @javax.annotation.Generated
WSDL2JAVA_XJC_EPISODE_FILE= Generate the episode file for separate compilation
#Resource Selection Dialog
RESOURCE_SELECTIN_DIALOG_BROWSE_WORKSPACE_BUTTON=Browse Workspace...
RESOURCE_SELECTIN_DIALOG_BROWSE_FILE_SYSTEM_BUTTON=Browse File System...
RESOURCE_SELECTIN_DIALOG_BROWSE_FILE_NOT_FOUND_ERROR=File Not Found

WSDL2JAVA_OUTPUT_DIRECTORY=&Output Directory:
WSDL2JAVA_OUTPUT_DIRECTORY_TOOLTIP=Specify the directory into which the generated code files are written

WSDL2JAVA_PACKAGE_NAME=&Package Name:
WSDL2JAVA_PACKAGE_NAME_TOOLTIP=The java package name to use for the generated code

WSDL2JAVA_PACKAGE_NAME_OPTIONAL=Specify &WSDL Namepsace to Package Name Mappings
WSDL2JAVA_PACKAGE_NAME_OPTIONAL_TOOLTIP=Optionally specify the wsdl namespace mapping to a particular java package name

WSDL2JAVA_WSDL_NAMESPACE_COLUMN_HEADER=WSDL Namespace
WSDL2JAVA_PACKAGE_NAME_COLUMN_HEADER=Package Name

WSDL2JAVA_SERVICE_NAME=&Service Name:
WSDL2JAVA_SERVICE_NAME_TOOLTIP=Specify the name of the WSDL service for which code is to be generated. The default is to generate code for every service in the WSDL document

WSDL2JAVA_BINDING_FILES=&Binding Files:
WSDL2JAVA_BINDING_NAME_TOOLTIP=Specify zero, or more, JAXWS or JAXB binding files
WSDL2JAVA_BINDING_FILES_ADD=&Add...
WSDL2JAVA_BINDING_FILES_REMOVE=&Remove...

WSDL2JAVA_BINDING_FILE_DIALOG_TITLE=Browse for Binding File
WSDL2JAVA_BINDING_FILE_DIALOG_MESSAGE=Binding File:
WSDL2JAVA_BINDING_FILE_DIALOG_FILTER_NAME=JAXWS or JAXB Binding Files (*.xml)

WSDL2JAVA_XML_CATLOG=XML Catalog:
WSDL2JAVA_XML_CATLOG_TOOLTIP=Specify catalog file to map the imported wsdl/schema
WSDL2JAVA_XML_CATLOG_BROWSE=Browse...
