/*******************************************************************************
 * Copyright (c) 2003, 2019 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 * IBM - Initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.propertypages;

import org.eclipse.osgi.util.NLS;

public class PropertyPageMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdt.internal.debug.ui.propertypages.PropertyPageMessages";//$NON-NLS-1$

	public static String BreakpointConditionEditor_1;
	public static String ExceptionBreakpointEditor_1;
	public static String ExceptionBreakpointEditor_2;
	public static String ExceptionBreakpointEditor_3;

	public static String ExceptionBreakpointEditor_recurrence_label;
	public static String ExceptionBreakpointEditor_recurrence_always;
	public static String ExceptionBreakpointEditor_recurrence_onlyOnce;
	public static String ExceptionBreakpointEditor_recurrence_unconfigured;

	public static String ExceptionFilterEditor_5;
	public static String ExceptionFilterEditor_6;
	public static String ExceptionFilterEditor_7;
	public static String ExceptionFilterEditor_8;
	public static String ExceptionFilterEditor_9;
	public static String ExceptionFilterEditor_10;
	public static String ExceptionFilterEditor_11;
	public static String ExceptionFilterEditor_12;
	public static String ExceptionFilterEditor_13;
	public static String ExceptionFilterEditor_14;
	public static String ExceptionFilterEditor_15;
	public static String ExceptionFilterEditor_16;
	public static String ExceptionFilterEditor_18;
	public static String ExceptionFilterEditor_19;
	public static String ExceptionFilterEditor_20;
	public static String ExceptionFilterEditor_22;

	public static String JavaBreakpointConditionEditor_0;
	public static String JavaBreakpointConditionEditor_1;
	public static String JavaBreakpointConditionEditor_2;
	public static String JavaBreakpointConditionEditor_choosePreviousCondition;
	public static String JavaBreakpointConditionEditor_historySeparator;

	public static String JavaBreakpointPage_0;
	public static String JavaBreakpointPage_10;

	public static String JavaBreakpointPage_11;
	public static String JavaBreakpointPage_12;
	public static String JavaBreakpointPage_13;
	public static String JavaBreakpointPage_3;
	public static String JavaBreakpointPage_4;
	public static String JavaBreakpointPage_5;
	public static String JavaBreakpointPage_7;
	public static String JavaBreakpointPage_8;
	public static String JavaBreakpointPage_9;
	public static String JavaExceptionBreakpointPage_5;

	public static String JavaLineBreakpointPage_18;

	public static String JavaLineBreakpointPage_19;

	public static String JavaLineBreakpointPage_2;
	public static String JavaLineBreakpointPage_3;
	public static String JavaLineBreakpointPage_4;
	public static String JavaLineBreakpointPage_5;
	public static String JavaLineBreakpointPage_20;
	public static String JavaLineBreakpointPage_7;
	public static String JavaLineBreakpointPage_8;
	public static String JavaLineBreakpointPage_10;
	public static String JavaLineBreakpointPage_11;
	public static String ThreadFilterEditor_1;
	public static String ThreadFilterEditor_2;
	public static String InstanceFilterEditor_0;

	public static String JavaVariableDetailsPane_choosePreviousExpression;
	public static String JavaVariableDetailsPane_description;
	public static String JavaVariableDetailsPane_name;
	public static String JavaVariableDetailsPane_settings;


	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, PropertyPageMessages.class);
	}

	public static String VMCapabilitiesPropertyPage_0;
	public static String VMCapabilitiesPropertyPage_1;
	public static String VMCapabilitiesPropertyPage_10;
	public static String VMCapabilitiesPropertyPage_12;
	public static String VMCapabilitiesPropertyPage_14;
	public static String VMCapabilitiesPropertyPage_15;
	public static String VMCapabilitiesPropertyPage_16;
	public static String VMCapabilitiesPropertyPage_18;
	public static String VMCapabilitiesPropertyPage_21;
	public static String VMCapabilitiesPropertyPage_24;
	public static String VMCapabilitiesPropertyPage_25;
	public static String VMCapabilitiesPropertyPage_26;

    public static String VMCapabilitiesPropertyPage_27;

    public static String VMCapabilitiesPropertyPage_28;

    public static String VMCapabilitiesPropertyPage_29;
	public static String VMCapabilitiesPropertyPage_3;

    public static String VMCapabilitiesPropertyPage_30;

    public static String VMCapabilitiesPropertyPage_31;
	public static String VMCapabilitiesPropertyPage_4;
	public static String VMCapabilitiesPropertyPage_6;
	public static String VMCapabilitiesPropertyPage_9;
}
