###############################################################################
# Copyright (c) 2007, 2008 WSO2 Inc. 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:
# WSO2 Inc. - initial API and implementation
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
#										 runtime to the framework for 168762
# 20070426   183046 sandakith@wso2.com - Lahiru Sandakith
# 20070501   180284 sandakith@wso2.com - Lahiru Sandakith
# 20070508   184450 sandakith@wso2.com - Lahiru Sandakith fix 184450, more information for user
# 20070511   186440 sandakith@wso2.com - Lahiru Sandakith fix 186440
# 20070510   172926 sandakith@wso2.com - Lahiru Sandakith, Fix 172926 Use Util Classes
# 20070517   187307 sandakith@wso2.com - Lahiru Sandakith, Fix 187307 Property File Fix
# 20070604   190067 pmoogk@ca.ibm.com - Peter Moogk
# 20080130   216997 katep@wso2.com - Kate Price
###############################################################################

LABEL_BROUSE=Browse...
LABEL_WEB_SERVICE_CODEGEN=Web service code generation options
LABEL_WEB_SERVICE_CLIENT_CODEGEN=Web service client code generation options
LABEL_WEB_SERVICE_AAR=Web service archive options
LABEL_DATABINDING=Default Databinding:
LABEL_AAR_EXTENTION=AAR default extension:
LABEL_AXIS2_RUNTIME_LOAD=Axis2 runtime loaded successfully
LABEL_AXIS2_RUNTIME_LOAD_ERROR=Error occurred while loading Axis2 runtime. Select the correct Axis2 runtime folder.
LABEL_GENERATE_TESTCASE_CAPTION=Generate a JUnit test case to test the service
LABEL_GENERATE_SERVERSIDE_INTERFACE=Generate an interface for the skeleton
LABEL_GENERATE_ALL=Generate all types for all elements referred to by schemas
LABEL_CLIENT_SIDE=Client mode
LABEL_SYNC_AND_ASYNC=Generate a client which supports both synchronous and asynchronous invocation
LABEL_SYNC=Generate a synchronous client
LABEL_ASYNC=Generate an asynchronous client

AXIS2_LOCATION=Axis2 Runtime
AXIS2_RUNTIME=Axis2 Runtime
AXIS2_PREFERENCES=Axis2 Preferences
AXIS2_RUNTIME_TOOLTIP=Select the Axis2 binary distribution folder or the folder which contains the Axis2 war distribution
AXIS2_PREFERENCES_TOOLTIP=Select the default preferences for Axis2 runtime
AXIS2_RUNTIME_LOCATION=Axis2 runtime location:
AXIS2_RUNTIME_PREFERENCES=Axis2 Runtime Preferences
LABEL_AXIS2_RUNTIME_NOT_EXIT=Select the location of the Axis2 binary distribution or the folder which contains the Axis2 war distribution. 
ERROR_INVALID_AXIS2_SERVER_LOCATION=Invalid Axis2 runtime location

ERROR_INVALID_FILE_READ_WRITEL=Exception occurred while reading or writing file {0}
ERROR_SERVER_IS_NOT_SET=The Axis2 facets cannot be installed since the Axis2 runtime location has not been set.  \nGo to the Web Services preference page and set the Axis2 runtime location under Axis2 Preferences.

PROGRESS_INSTALL_AXIS2_RUNTIME=Installing Axis2 Runtime
PROGRESS_UNINSTALL_AXIS2_RUNTIME=Uninstalling the Axis2 Runtime
