/*******************************************************************************
 * Copyright (c) 2007 Chase Technology Ltd - http://www.chasetechnology.co.uk
 * 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:
 *     Doug Satchwell (Chase Technology Ltd) - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.xsl.internal.debug.ui.tabs.main;

import org.eclipse.osgi.util.NLS;

public final class MainTabMessages extends NLS
{
	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.internal.debug.ui.tabs.main.MainTabMessages"; //$NON-NLS-1$

	public static String XSLMainTab_LabelText;

	public static String StylesheetEntryLabelProvider_Invalid_path;

	public static String XSLMainTab_Project_Group;

	public static String XSLMainTab_Browse_Projects;

	public static String XSLMainTab_Project_Does_Not_Exist;

	public static String XSLMainTab_Project_Closed;

	public static String XSLMainTab_Project_Name_Invalid;

	public static String XSLMainTab_Choose_Project_Dialog_Title;

	public static String XSLMainTab_Choose_Project_Dialog_Message;

	public static String XSLMainTab_Transforms_Group;

	public static String TransformsBlock_0;

	public static String TransformsBlock_Name;

	public static String InputFileBlock_DIRECTORY_NOT_SPECIFIED;

	public static String InputFileBlock_DIRECTORY_DOES_NOT_EXIST;

	public static String InputFileBlock_GROUP_NAME;

	public static String InputFileBlock_DEFAULT_RADIO;

	public static String InputFileBlock_OTHER_RADIO;

	public static String InputFileBlock_DIALOG_MESSAGE;

	public static String InputFileBlock_WORKSPACE_DIALOG_MESSAGE;

	public static String InputFileBlock_VARIABLES_BUTTON;

	public static String InputFileBlock_FILE_SYSTEM_BUTTON;

	public static String InputFileBlock_WORKSPACE_BUTTON;

	public static String InputFileBlock_Name;

	public static String InputFileBlock_Exception_occurred_reading_configuration;

	public static String InputFileBlock_WORKSPACE_DIALOG_TITLE;

	public static String XSLMainTab_TabName;

	public static String InputFileBlock_Exception_occurred_saving_configuration;

	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;

	public static String TransformsBlock_ParametersLabel;

	public static String TransformsBlock_StylesheetsLabel;

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

}
