/*******************************************************************************
 * 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.processor;

import org.eclipse.osgi.util.NLS;

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

	public static String ProcessorBlock_0;

	public static String ProcessorBlock_1;

	public static String ProcessorBlock_2;

	public static String ProcessorBlock_4;

	public static String ProcessorBlock_6;

	public static String ProcessorBlock_7;

	public static String ProcessorsComboBlock;
	public static String ProcessorsComboBlock_0;
	public static String ProcessorsComboBlock_1;
	public static String SpecificProcessor;

	public static String InputFileBlock_WORKSPACE_DIALOG_TITLE;

	public static String InstalledProcessorsBlock_0;

	public static String InstalledProcessorsBlock_1;

	public static String InstalledProcessorsBlock_2;

	public static String InstalledProcessorsBlock_3;

	public static String InstalledProcessorsBlock_4;

	public static String InstalledProcessorsBlock_5;

	public static String InstalledProcessorsBlock_6;

	public static String InstalledProcessorsBlock_7;

	public static String InstalledProcessorsBlock_8;

	public static String ProcessorDetailsDialog_Title;

	public static String ProcessorDetailsDialog_installName;

	public static String ProcessorDetailsDialog_installType;

	public static String ProcessorDetailsDialog_installClasspath;

	public static String AddProcessorDialog_1;

	public static String AddProcessorDialog_7;

	public static String AddProcessorDialog_Edit_Title;

	public static String AddProcessorDialog_Add_Title;

	public static String AddProcessorDialog_jars;

	public static String AddProcessorDialog_features;

	public static String AddProcessorDialog_processorName;

	public static String AddProcessorDialog_processorType;

	public static String ProcessorLibraryBlock_6;

	public static String ProcessorLibraryBlock_AddButton;

	public static String ProcessorLibraryBlock_RemoveButton;

	public static String ProcessorLibraryBlock_AddWorkspaceButton;

	public static String AddProcessorDialog_enterName;

	public static String AddProcessorDialog_duplicateName;

	public static String AddProcessorDialog_Processor_name_must_be_a_valid_file_name;

	public static String ProcessorLibraryBlock_FileDialog_Title;

	public static String ProcessorLibraryBlock_WorkspaceFileDialog_Title;

	public static String ProcessorLibraryBlock_WorkspaceFileDialog_Message;

	public static String ProcessorsUpdater;

	public static String WorkingDirectoryBlock_1;

	public static String WorkingDirectoryBlock_2;

	public static String WorkingDirectoryBlock_3;

	public static String WorkingDirectoryBlock_DIRECTORY_NOT_SPECIFIED;
	public static String WorkingDirectoryBlock_DIRECTORY_DOES_NOT_EXIST;
	public static String WorkingDirectoryBlock_DEFAULT_RADIO;
	public static String WorkingDirectoryBlock_OTHER_RADIO;
	public static String WorkingDirectoryBlock_DIALOG_MESSAGE;
	public static String WorkingDirectoryBlock_WORKSPACE_DIALOG_MESSAGE;
	public static String WorkingDirectoryBlock_VARIABLES_BUTTON;
	public static String WorkingDirectoryBlock_FILE_SYSTEM_BUTTON;
	public static String WorkingDirectoryBlock_WORKSPACE_BUTTON;
	public static String WorkingDirectoryBlock_WORKSPACE_DIALOG_TITLE;

	public static String URIResolverBlock_3;

	public static String URIResolverBlock_5;

	public static String URIResolverBlock_6;

	public static String URIResolverBlock_8;

	public static String URIResolverBlock_DIRECTORY_NOT_SPECIFIED;
	public static String URIResolverBlock_DIRECTORY_DOES_NOT_EXIST;
	public static String URIResolverBlock_DEFAULT_RADIO;
	public static String URIResolverBlock_OTHER_RADIO;
	public static String URIResolverBlock_DIALOG_MESSAGE;
	public static String URIResolverBlock_WORKSPACE_DIALOG_MESSAGE;
	public static String URIResolverBlock_VARIABLES_BUTTON;
	public static String URIResolverBlock_FILE_SYSTEM_BUTTON;
	public static String URIResolverBlock_WORKSPACE_BUTTON;
	public static String URIResolverBlock_WORKSPACE_DIALOG_TITLE;

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

}
