###############################################################################
# Copyright (c) 2000, 2005 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
###############################################################################


pluginName=JDI Debug Model
providerName=Eclipse.org

descriptionCollection=Array
descriptionMap=Map Entries
descriptionMapEntry=Key and Value
descriptionSWTComposite=Children

javaLineBreakpoint.name=Java Line Breakpoints
javaClassLoadBreakpoint.name=Java Class Load Breakpoints
javaExceptionBreakpoint.name=Java Exception Breakpoints
javaWatchpoint.name=Java Watchpoints
javaMethodBreakpoint.name=Java Method Breakpoints

virtualMachineManagerImpl= org.eclipse.jdi.internal.VirtualMachineManagerImpl
javaLogicalStructures= Java Logical Structures

JavaBreakpoint.name = Java Breakpoint
JavaClassLoadBreakpoint.name = Java Class Load Breakpoint
CommonJavaLineBreakpoint.name = Common Java Line Breakpoint
JavaLineBreakpoint.name = Java Line Breakpoint
JavaPatternBreakpoint.name = Java Pattern Breakpoint
JavaTargetPatternBreakpoint.name = Java Target Pattern Breakpoint
JavaExceptionBreakpoint.name = Java Exception Breakpoint
JavaWatchpoint.name = Java Watchpoint
JavaMethodBreakpoint.name = Java Method Breakpoint
JavaMethodEntryBreakpoint.name = Java Method Entry Breakpoint
JavaStratumLineBreakpoint.name = Java Stratum Line Breakpoint

breakpointListeners.name = Java Breakpoint Listeners
