package org.eclipse.wst.xsl.internal.debug.ui.tabs.output;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.internal.debug.ui.tabs.output.messages"; //$NON-NLS-1$
	public static String OutputPropertiesBlock_0;
	public static String OutputPropertiesBlock_1;
	public static String OutputPropertiesBlock_13;
	public static String OutputPropertiesBlock_3;
	public static String OutputPropertiesBlock_4;
	public static String OutputPropertiesBlock_5;
	public static String OutputPropertiesBlock_7;
	public static String OutputPropertiesBlock_8;
	public static String OutputPropertiesBlock_9;
	public static String OutputTab_0;
	public static String OutputTab_1;
	
	public static String OutputTypeBlock_Group_Name;

	public static String OutputFileBlock_0;

	public static String OutputFileBlock_7;

	public static String OutputFileBlock_8;

	public static String OutputFileBlock_9;

	public static String OutputFileBlock_DIRECTORY_NOT_SPECIFIED;

	public static String OutputFileBlock_DIRECTORY_DOES_NOT_EXIST;

	public static String OutputFileBlock_GROUP_NAME;

	public static String OutputFileBlock_DEFAULT_RADIO;

	public static String OutputFileBlock_OTHER_RADIO;

	public static String OutputFileBlock_DIALOG_MESSAGE;

	public static String OutputFileBlock_WORKSPACE_DIALOG_MESSAGE;

	public static String OutputFileBlock_VARIABLES_BUTTON;

	public static String OutputFileBlock_FILE_SYSTEM_BUTTON;

	public static String OutputFileBlock_WORKSPACE_BUTTON;

	public static String OutputFileBlock_Name;

	public static String OutputFileBlock_Exception_occurred_reading_configuration;

	public static String OutputFileBlock_WORKSPACE_DIALOG_TITLE;

	public static String OutputFileBlock_Exception_occurred_saving_configuration;

	public static String OutputFOFileBlock_DIRECTORY_NOT_SPECIFIED;

	public static String OutputFOFileBlock_DIRECTORY_DOES_NOT_EXIST;

	public static String OutputFOFileBlock_GROUP_NAME;

	public static String OutputFOFileBlock_DEFAULT_RADIO;

	public static String OutputFOFileBlock_OTHER_RADIO;

	public static String OutputFOFileBlock_DIALOG_MESSAGE;

	public static String OutputFOFileBlock_WORKSPACE_DIALOG_MESSAGE;

	public static String OutputFOFileBlock_VARIABLES_BUTTON;

	public static String OutputFOFileBlock_FILE_SYSTEM_BUTTON;

	public static String OutputFOFileBlock_WORKSPACE_BUTTON;

	public static String OutputFOFileBlock_Name;

	public static String OutputFOFileBlock_Exception_occurred_reading_configuration;

	public static String OutputFOFileBlock_WORKSPACE_DIALOG_TITLE;

	public static String OutputFOFileBlock_Exception_occurred_saving_configuration;
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
