###############################################################################
# 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_BROWSE_BUTTON_LABEL=&Browse...
CXF_RUNTIME_PREFERENCE_PAGE_CXF_VERSON_LABEL=Version:
CXF_RUNTIME_PREFERENCE_PAGE_EXPORT_CXF_CLASSPATH_CONTAINER=Export runtime libraries to WEB-INF/lib at deployment time

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 suppports 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 to 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...
