/**********************************************************************
 * Copyright (c) 2000, 2006 IBM Corporation and others. 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: 
 * IBM - Initial API and implementation
 **********************************************************************/
package org.eclipse.ui.externaltools.internal.launchConfigurations;

import org.eclipse.osgi.util.NLS;

public class ExternalToolsLaunchConfigurationMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ui.externaltools.internal.launchConfigurations.ExternalToolsLaunchConfigurationMessages";//$NON-NLS-1$

	public static String ExternalToolsMainTab__Location___2;
	public static String ExternalToolsMainTab__Browse_Workspace____3;
	public static String ExternalToolsMainTab_Brows_e_File_System____4;
	public static String ExternalToolsMainTab_Working__Directory__5;
	public static String ExternalToolsMainTab_Browse_Wor_kspace____6;
	public static String ExternalToolsMainTab_Browse_F_ile_System____7;
	public static String ExternalToolsMainTab_Error_reading_configuration_10;
	public static String ExternalToolsMainTab__Main_17;
	public static String ExternalToolsMainTab_External_tool_location_cannot_be_empty_18;
	public static String ExternalToolsMainTab_External_tool_location_does_not_exist_19;
	public static String ExternalToolsMainTab_External_tool_location_specified_is_not_a_file_20;
	public static String ExternalToolsMainTab_External_tool_working_directory_does_not_exist_or_is_invalid_21;
	public static String ExternalToolsMainTab_Select_a_resource_22;
	public static String ExternalToolsMainTab_23;
	public static String ExternalToolsMainTab__Arguments___1;
	public static String ExternalToolsMainTab_Varia_bles____2;
	public static String ExternalToolsMainTab_3;
	public static String ExternalToolsMainTab_Error_reading_configuration_7;
	public static String ExternalToolsMainTab_Not_a_directory;
	public static String ExternalToolsMainTab_30;
	public static String ExternalToolsMainTab_31;
	public static String ExternalToolsMainTab_32;

	public static String ExternalToolsUtil_Location_not_specified_by__0__1;
	public static String ExternalToolsUtil_invalidLocation__0_;
	public static String ExternalToolsUtil_invalidDirectory__0_;

	public static String ExternalToolsBuilderTab_Run_this_builder_for__1;
	public static String ExternalToolsBuilderTab__Full_builds_2;
	public static String ExternalToolsBuilderTab_Full;
	public static String ExternalToolsBuilderTab__Incremental_builds_4;
	public static String ExternalToolsBuilderTab_Inc;
	public static String ExternalToolsBuilderTab__Auto_builds__Not_recommended__6;
	public static String ExternalToolsBuilderTab_Auto;
	public static String ExternalToolsBuilderTab_Build_Options_9;
	public static String ExternalToolsBuilderTab_workingSet_label;
	public static String ExternalToolsBuilderTab_workingSet_tooltip;
	public static String ExternalToolsBuilderTab_buildKindError;
	public static String ExternalToolsBuilderTab_14;
	public static String ExternalToolsBuilderTab_13;
	public static String ExternalToolsBuilderTab_16;
	public static String ExternalToolsBuilderTab_15;
	public static String ExternalToolsBuilderTab_0;
	public static String ExternalToolsBuilderTab_1;
	public static String ExternalToolsBuilderTab_2;

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

    public static String ExternalToolsBuilderTab_17;

    public static String ExternalToolsBuilderTab_18;

    public static String ExternalToolsBuilderTab_19;

    public static String ExternalToolsBuilderTab_20;

    public static String ExternalToolsBuilderTab_21;

    public static String ExternalToolsBuilderTab_22;

    public static String ExternalToolsBuilderTab_23;

    public static String ExternalToolsBuilderTab_24;

    public static String ExternalToolsBuilderTab_25;

    public static String ExternalToolsBuilderTab_26;
}