###############################################################################
# Copyright (c) 2004, 2008 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
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
# 20060329   128827 kathy@ca.ibm.com - Kathy Chan
# 20060329   124667 kathy@ca.ibm.com - Kathy Chan
# 20060331   128827 kathy@ca.ibm.com - Kathy Chan
# 20080324   220983 trungha@ca.ibm.com - Trung Ha
# 20080326   171705 trungha@ca.ibm.com - Trung, improve AntTask errors report
###############################################################################

#
# Messages in plugin.xml.
#
PLUGIN_NAME=Web Services Graphical User Interface
PLUGIN_VENDOR=Eclipse.org
PLUGIN_DESC=\
The Web services GUI plugin delivers the graphical \
user interface to the Web services function of the \
Web services plugin.

PLUGIN_NEW_CATEGORY_NAME_WS=Web Services

#
#	Web Services Preferance Pages
#
# Categories
PREFERENCE_CATEGORY_RESOURCE_MANAGEMENT=Resource Management
PREFERENCE_CATEGORY_CODE_GENERATION=Code Generation
PREFERENCE_CATEGORY_SCENARIO_DEFAULTS=Scenario Defaults
PREFERENCE_CATEGORY_PROJECT_TOPOLOGY=Project Topology
PREFERENCE_CATEGORY_DRIVER_JARS=JDBC drivers

#
#Scenario Defaults
BUTTON_LAUNCH_SAMPLE=&Launch the sample when generated
LABEL_MOVE_UP=&Up
LABEL_MOVE_DOWN=&Down
LABEL_MOVE_UP_2=U&p
LABEL_MOVE_DOWN_2=Dow&n

#
# Preferences Tooltips
#

#Scenario Defaults
TOOLTIP_PPSD_PAGE=Set the defaults for the Web service scenarios.
TOOLTIP_PPSD_CHECKBOX_LAUNCH_SAMPLE=Launch the sample application after generation.
TOOLTIP_SERVICE_TYPE_TABLE_VIEWER=Preferred order of the list of service project types
TOOLTIP_CLIENT_TYPE_TABLE_VIEWER=Preferred order of the list of client project types
TOOLTIP_MOVE_UP=Move the selected project type up the list
TOOLTIP_MOVE_DOWN=Move the selected project type down the list

#
# Resource Managment
TOOLTIP_PPRM_PAGE=Set preferences that control resources used/generated by the Web service.
TOOLTIP_PPRM_CHECKBOX_OVERWRITE_FILES=Overwrite files without warning.
TOOLTIP_PPRM_CHECKBOX_CREATE_FOLDERS=Create folders when necessary.
TOOLTIP_PPRM_CHECKBOX_CHECK_OUT=Check out files without warning.
TOOLTIP_PPRM_CHECKBOX_SKELETON_MERGE=Enable merging of generated skeleton file.
BUTTON_CREATE_FOLDERS=&Create folders when necessary
BUTTON_OVERWRITE_FILES=&Overwrite files without warning
BUTTON_CHECKOUT_FILES=C&heck out files without warning
BUTTON_SKELETON_MERGE=&Merge generated skeleton file

#
# General messages.
#
ISTATUS_WITHOUT_EXCEPTION={0}
ISTATUS_WITH_EXCEPTION={0}\nException: {1}
MSG_INFO_SAVED_STATUS=IWAB0297I Press the Details button to see informational messages.
MSG_SEE_ERROR_LOG=See the Platform's error log for detail

#
# TypeSelectionDialog
#
DIALOG_TITLE_CLASS_BROWSE=Browse Classes
LABEL_CLASS_BROWSE=Class name: (? = any character, * = any string)
DIALOG_TITLE_INTERFACE_BROWSE=Browse Interfaces

#
# Common wizard strings.
#
LABEL_SAMPLE_TYPES=Java proxy sample:

#
# ResourceSelectionDialog
#
DIALOG_TITLE_RESOURCE_BROWSE=Browse Files
LABEL_RESOURCE_FILTER=Filter:

#
# Tooltips for dialog.ResourceSelectionDialog
# DRES=Dialog/RESources
#
TOOLTIP_DRES_COMBO_RESOURCE_TYPE=Type of resources to browse.
TOOLTIP_DRES_TREE_RESOURCE=Resources available for selection.

#
# Messages for project topology preference page
#
TOOLTIP_PTPP_PAGE=Preference that control the project topology of your Web service and client scenarios.
TOOLTIP_ENABLE_TWO_EARS=Enable this option if you want to generate your Web service and Web service client in different EAR projects.

LABEL_ENABLE_TWO_EARS=&Generate Web service and Web service client in different EAR projects
LABEL_CLIENT_TYPE_NAME=Client project types
LABEL_SERVICE_TYPE_NAME=Service project types
#
# Resource Browser
#
DIALOG_TITLE_RESOURCE_BROWSER=Resource browser
TOOLTIP_RESOURCE_TREE=Choose a resource.
