###############################################################################
# Copyright (c) 2009, 2013 EclipseSource 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:
#    EclipseSource - initial API and implementation
################################################################################

PortBusyStatusHandler_PortInUseMessage= \
  Port {0,number,\#} is currently in use.\n\
  Proceed with launching ''{1}''?
PortBusyStatusHandler_PortInUseTitle=Port in use

RAPLaunchConfigValidator_BrandingMissing=The branding that defines the servlet name ''{0}'' is not defined in any of the selected bundles.
RAPLaunchConfigValidator_DataLocationErrorMsg=Instance Area must not be empty.
RAPLaunchConfigValidator_EquinoxOnly=The RAP launcher only works with the Equinox OSGi Framework
RAPLaunchConfigValidator_ErrorWhileValidating=An error occured while validating the launch configuration: {0}
RAPLaunchConfigValidator_MalformedUrl=Servlet path and/or context path cause a malformed URL.
RAPLaunchConfigValidator_PortInUse=The port {0,number,\#} is already used by {1}.
RAPLaunchConfigValidator_PortNumberInvalid=Port number must be between {0} and {1}
RAPLaunchConfigValidator_ServletPathEmpty=The servlet path must not be empty
RAPLaunchConfigValidator_ServletPathLeadingSlash=The servlet path must start with a slash.
RAPLaunchConfigValidator_ServletPathInvalid=The servlet path contains invalid characters.
RAPLaunchConfigValidator_ContextPathLeadingSlash=The context path must start with a slash.
RAPLaunchConfigValidator_InvalidContextPath=The context path contains invalid characters.
RAPLaunchConfigValidator_TimeoutInvalid=Session timeout value must be a non-negative integer number.
RAPLaunchConfigValidator_WsEmpty=Program argument ''{0}'' (window system) is not set. For RAP applications, the window system must be set to ''{1}''.
RAPLaunchConfigValidator_WsWrong=Program argument ''{0}'' (window system) has wrong value. For RAP applications, the window system must be set to ''{1}''.

RAPLaunchDelegate_CheckPortTaskName=Checking manual port
RAPLaunchDelegate_DeterminePortTaskName=Determining port number
RAPLaunchDelegate_OpenBrowserFailed=Failed to open browser for URL ''{0}''.
RAPLaunchDelegate_OpenUrlFailed=Failed to open URL ''{0}'' in browser.
RAPLaunchDelegate_PortInUse=Port {0,number,\#} in use. Launch ''{1}'' interrupted by user.
RAPLaunchDelegate_StartClientTaskName=Starting client application
RAPLaunchDelegate_TerminatePreviousTaskName=Terminating previous launch
RAPLaunchDelegate_WaitForHTTPTaskName=Waiting for HTTP service
RAPLaunchDelegate_Error_NotAPlugin = Could not launch the JUnit plug-in tests because project ''{0}'' is not a plug-in project.


SelectionDialogUtil_Unknown=(unknown)
SelectionDialogUtil_UnknownProject=(unknown project)

MainTab_Browser=Open in Browser
MainTab_ConfigureBrowsers=<a>Configure Browsers...</a>
MainTab_ExternalBrowser=E&xternal web browser
MainTab_InternalBrowser=Interna&l web browser
MainTab_ApplicationUrl=Application URL:
MainTab_ManualPortConfig=Use a fixed &port:
MainTab_ManualContextPath=Context pat&h:
MainTab_ManualTimeoutConfig=Session &timeout [s]:
MainTab_Name=&Main
MainTab_OpenApplicationIn=&Open application in
MainTab_ServerSettings=Server Settings
MainTab_RAPSettings=RAP Settings
MainTab_DevelopmentMode=Start in &development mode
MainTab_ServletPath=&Servlet path:
