/**********************************************************************
 * Copyright (c) 2004, 2009 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.ant.internal.ui.datatransfer;

import org.eclipse.osgi.util.NLS;

public class DataTransferMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ant.internal.ui.datatransfer.DataTransferMessages";//$NON-NLS-1$
    
	public static String AntNewJavaProjectPage_23;

	public static String AntNewJavaProjectPage_24;

	public static String AntNewJavaProjectWizard_0;
	public static String AntBuildfileExportWizard_0;
	public static String AntBuildfileExportPage_0;
    public static String AntBuildfileExportPage_10;
    public static String AntBuildfileExportPage_11;
    public static String AntBuildfileExportPage_12;
    public static String AntBuildfileExportPage_13;
    public static String AntBuildfileExportPage_14;
    public static String AntBuildfileExportPage_15;
    public static String AntBuildfileExportPage_16;
    public static String AntBuildfileExportPage_17;
    public static String AntBuildfileExportPage_1;
	public static String AntBuildfileExportPage_2;
	public static String AntBuildfileExportPage_3;
	public static String AntBuildfileExportPage_4;
	public static String AntBuildfileExportPage_6;
	public static String AntNewJavaProjectPage_9;
	public static String AntNewJavaProjectPage_0;
	public static String AntNewJavaProjectPage_10;
	public static String AntNewJavaProjectPage_11;
	public static String AntNewJavaProjectPage_12;
	public static String AntNewJavaProjectPage_13;
	public static String AntNewJavaProjectPage_14;
	public static String AntNewJavaProjectPage_15;
	public static String AntNewJavaProjectPage_16;
	public static String AntNewJavaProjectPage_17;
	public static String AntNewJavaProjectPage_18;
	public static String AntNewJavaProjectPage_19;
	public static String AntNewJavaProjectPage_1;
	public static String AntNewJavaProjectPage_21;
	public static String AntNewJavaProjectPage_22;
	public static String AntNewJavaProjectPage_2;
    public static String AntNewJavaProjectPage_3;
	public static String ProjectCreator_0;
    public static String JavacTableLabelProvider_0;
    public static String SourceAnalyzer_0;
    public static String SourceAnalyzer_1;
    public static String SourceAnalyzer_2;
    public static String SourceAnalyzer_3;

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

	public static String AntBuildfileExportPage_18;

	public static String AntBuildfileExportPage_19;

	public static String AntBuildfileExportPage_20;

	public static String AntBuildfileExportPage_creating_build_files;

	public static String BuildFileCreator_generating_buildfile_for;
}