/*******************************************************************************
 * Copyright (c) 2003, 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 Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.j2ee.internal.navigator.ui;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {

	public static final String BUNDLE_NAME = "org.eclipse.jst.j2ee.internal.navigator.ui.messages"; //$NON-NLS-1$
	public static String LoadingDDNode_Loading_0_;
	public static String ClearPlaceHolderJob_Removing_place_holder_;
	public static String AddProjectToEARDropAssistant_The_dragged_project_cannot_be_added_;
	public static String AddModuleToEarDropAssistant_Adding_module_to_ea_;
	public static String AddUtilityJarToEarDropAssistant_Add_Utility_Jar_to_0_; 
	public static String ImportJ2EEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts;
	public static String ImportJ2EEModuleDropAssistant_Could_not_recognize_extension_0_;
	public static String AddProjectToEARDropAssistant_The_project_0_cannot_be_accesse_;
	public static String AddProjectToEARDropAssistant_Could_not_add_module_to_Enterprise_;

	static {
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

}
