/*******************************************************************************
 * 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";

	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 ProcessorDetailsDialog_Title;

	public static String ProcessorDetailsDialog_installName;

	public static String ProcessorDetailsDialog_installType;

	public static String ProcessorDetailsDialog_installClasspath;

	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_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_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_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);
	}

}
