# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

#module descriptions
OpenIDE-Module-Name=JPDA Debugger Projects Integration
OpenIDE-Module-Display-Category=Debugging
OpenIDE-Module-Short-Description=JPDA Debugger integration with Java projects.
OpenIDE-Module-Long-Description=\
    Contains implementation of SourcePathProvider and EditorContext \
    and other classes, that need to access the Java project system.

# Apply code changes:
MSG_NoDebug=No debugging sessions was found.
MSG_NoJPDADebugger=Current debugger is not Java debugger.
MSG_CanNotFix=The debugger does not support Hot Fix action.
# {0} contains detailed info
MSG_FixUnsupported=The debugger does not support Hot Fix action, details: {0}
MSG_FixMismatch=The bytes do not correspond to the class type (the names don't match): {0}
MSG_FixVerifierProblems=A "verifier" detects that a class, though well formed, contains an internal inconsistency or security problem: {0}
MSG_FixUnsupportedVersion=Major and minor version numbers in bytes are not supported by the VM. {0}
MSG_FixNotValid=The bytes do not represent a valid class. {0}
MSG_FixCircularity=A circularity has been detected while initializing a class: {0}
MSG_FixOOME=Out of memory in the target VM has occurred during Hot Fix.
MSG_FixSuccess=Code updated
