###############################################################################
# Copyright (c) 2003 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
#
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
#
# $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties,v $
# $Revision: 1.4 $  $Date: 2004/03/04 16:14:04 $
#



# Exception message - {0} is the name of a project within Eclipse.
NO_OUTPUT_FOLDER_EXC_            = IWAV0071E No output folder for project "{0}."

# These are lines that are placed into a log file listing the outputs from the two different streams.
VM_TERMINATED_INFO_              = IWAV0072I Remote VM terminated before any commands can be sent. Following are the error and output streams.
VM_TERMINATED_LINE1              = -- Error Stream --
VM_TERMINATED_LINE2              = -- Output Stream --
VM_TERMINATED_LINE3              = -- End of Stream Output --

# These are the headers for two parts of a stack trace of an exception. The first one is the trace from the remote system.
# The second is the trace from the local system.
REMOTE_VM_TRACE_INFO_            = IWAV0073I *** RemoteVM Exception - Trace from Remote VM:
REMOTE_VM_LOCAL_TRACE_INFO_      = IWAV0074I *** Local StackTrace:

# In the two below, {0} is a string that is a java creation string, e.g. "new Integer(3)", so they don't participate in translation.
# In Classcast, {1} is a java type name, e.g. java.lang.Integer.
Classcast_EXC_                   = IWAV0124E "{0}" does not evaluate to an object of type {1}
Instantiate_EXC_                 = IWAV0125E "{0}" is too complicated to be evaluated

# {0} is a number, e.g. 1, 2, ...
RemoteCmd_EXC_                   = IWAV0126E Remote command error {0}

# The following is an exception error where {0} is the name of the class of the exception and {1} is the message from the exception
# The message {1} has already been localized (if it supplied it localized). It comes from somewhere outside of our project.
ExceptionErrorMsg_EXC_           = IWAV0135E {0}({1})
OK_7                             = OK
Proxy_NoVM_ERROR_                = IWAV0136E Could not find an installed VM to launch for \"{0}\".
Proxy_NoRunner_ERROR_            = IWAV0137E Could not find a Run type runner to launch for \"{0}\".
Proxy_Error_Title                = Error:
Proxy_Terminated_too_soon_ERROR_ = IWAV0138E Remote VM terminated too soon. See .log file for trace of output. For VM \"{0}\".
PRoxy_NoLaunch_ERROR_            = IWAV0139E Could not launch for \"{0}\".

# This is a launch name for a given project name ({0}).
# WARNING for the ProxyRemoteVMName and ProxyRemoteVMNameWithComment do not use double-quote ("). It will cause problems.
ProxyRemoteVMName=Project ({0})
# This is a launch name that has a comment ({0} is project name, {1} is the comment for this project launch)
ProxyRemoteVMNameWithComment=Project ({0})-{1}

ProxyRemoteNoLaunchKey=Cannot launch local proxy registry. Not launched from valid launcher.

# {0} is the appropriate VMName from the above two entries.
ProxyRemoteLaunchVM=Launching remote vm "{0}"

CleanupJob.title=Remote VM Cleanup GC'd Proxies Job

