###############################################################################
# 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
###############################################################################

#Java2WS Pre Config Widget Factory
JAVA2WS_CLASS_CONFIG_PAGE_TITLE={0} {1} Web Service Java Class Starting Point Configuration
JAVA2WS_CLASS_CONFIG_PAGE_DESCRIPTION=Select the Service Endpoint Interface (SEI) from the Type Hierarchy or Extract an SEI from the class

JAVA2WS_INTERFACE_CONFIG_PAGE_TITLE={0} {1} Web Service Java Interface Starting Point Configuration
JAXWS_ANNOTATE_JJAVA_WIDGET_PREVIEW=Preview:
JAVA2WS_INTERFACE_CONFIG_PAGE_DESCRIPTION=Select an implementation for the interface. Optional step for configuration purposes.

#Java2WS Config Widget Factory
JAVA2WS_JAXWS_ANNOTATE_PAGE_TITLE={0} {1} Web Service Annotate Java Configuration
JAVA2WS_JAXWS_ANNOTATE_PAGE_DESCRIPTION=Set the Annotation options on this page

JAVA2WS_PAGE_TITLE={0} {1} Web Service Java2WS Configuration
JAVA2WS_PAGE_DESCRIPTION=Customise your Web Service generation by selecting options on this page

#WSDL2Java Config Widget Factory
WSDL2JAVA_PAGE_TITLE={0} {1} Web Service WSDL2Java Configuration
WSDL2JAVA_PAGE_DESCRIPTION=Customise your Web Service generation by selecting options on this page

WSDL2JAVA_DEFAULTS_PAGE_TITLE={0} {1} Web Service WSDL2Java Configuration
WSDL2JAVA_DEFAULTS_PAGE_DESCRIPTION=The page allows the overriding of the default preferences for this Web Service generation

#Java2WS Config Widget
JAVA2WS_GROUP_LABEL=Java2WS Generation Options:

JAVA2WS_ENTER_SEI_NAME=Please enter the name of the SEI to extract
JAVA2WS_SELECT_SEI_EXTRACTED_METHODS=Please select the methods you wish to extract from the {0} class
JAVA2WS_SELECT_SEI_FROM_TYPE_HIERARCHY=Please select an Interface from the Type Hierarchy
JAVA2WS_SELECT_SEI_OPTION=Please select an SEI option

JAVA2WS_ENTER_VALID_WSDL_NAME=Please enter a valid WSDL File name

#WSDL2Java Defaults Config Widget
WSDL2JAVA_GROUP_LABEL=WSDL2Java Generation Options
WSDL2JAVA_XJC_ARG_GROUP_LABEL=XJC Arguments
JAXWS_ANNOTATE_JJAVA_WIDGET_SELECT_METHOD_TO_ANNOTATE=Select the Methods to annotate:
