/*******************************************************************************
 * Copyright (c) 2005 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.ui.navigator.internal;

import org.eclipse.osgi.util.NLS;

/**
 * 
 * <p>
 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
 * part of a work in progress. There is a guarantee neither that this API will
 * work nor that it will remain the same. Please do not use this API without
 * consulting with the Platform/UI team.
 * </p>
 * 
 * @since 3.2
 * 
 */
public class CommonNavigatorMessages extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.ui.navigator.internal.navigator_messages"; //$NON-NLS-1$

	public static String Link_With_Editor_Job_;

	public static String Could_not_provide_children_for_element;

	public static String Could_not_provide_parent_for_element;

	public static String TreeViewerElementCollector_0;

	public static String TreeViewerElementCollector_1;

	public static String NavigatorViewerDescriptor_Popup_Menu_Overridden;

	public static String StructuredViewerManager_0;

	public static String PendingUpdateAdapter_PendingLabel;

	public static String TextAction_selectAll;

	public static String Cut;

	public static String Copy;

	public static String Paste;

	public static String Delete;

	public static String LocalSelectionTransfer_errorMessage;

	public static String PropertyDialog_messageTitle;

	public static String NavigatorContentExtensionRecord_0;

	public static String CommonElementAdapter_0;

	public static String PropertyDialog_noPropertyMessage;

	public static String NavigatorSelectionSerializer_1;

	public static String FetchElementsJob_0;

	public static String NavigatorSelectionSerializer_0;

	public static String DropHandlerDescriptor_10;

	public static String Navigator_statusLineMultiSelect;

	public static String DropHandlerRegistry_0;

	public static String PropertyDialog_toolTip;

	public static String PropertyDialog_text;

	public static String CommonFilterSelectionDialog_4;

	public static String ExtensionFilterDescriptor_11;

	public static String CommonFilterSelectionDialog_3;

	public static String ExtensionFilterDescriptor_10;

	public static String CommonFilterSelectionDialog_2;

	public static String CommonFilterSelectionDialog_1;

	public static String SelectFiltersActionDelegate_1;

	public static String CommonFilterSelectionDialog_0;

	public static String SelectFiltersActionDelegate_0;

	public static String CollapseAllActionDelegate_0;

	public static String SerializerDescriptor_5;

	public static String SerializerDescriptor_3;

	public static String SerializerDescriptor_1;

	public static String SerializerDescriptor_0;

	public static String CopyAction_toolTip;

	public static String PasteAction_toolTip;

	public static String NavigatorDropSelectionDialog_3;

	public static String NavigatorDropSelectionDialog_1;

	public static String ExtensionFilterRegistry_16;

	public static String LinkEditorActionDelegate_1;

	public static String LinkEditorActionDelegate_0;

	public static String PropertyDialog_propertyMessage;

	public static String NavigatorExtensionSite_0;

	public static String CommonDropHandlerService_0;

	public static String Attribute_Missing_Warning;

	public static String Too_many_elements_Warning;

	public static String Open_action_label; 

	public static String NewProjectWizard_errorTitle;
	
	public static String NewProjectAction_text;

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

}
