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

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.internal.navigator.messages"; //$NON-NLS-1$

	/** */
	public static String Link_With_Editor_Job_;

	/** */
	public static String Exception_Invoking_Extension;

	/** */
	public static String NavigatorViewerDescriptor_Popup_Menu_Overridden;

	/** */
	public static String TextAction_selectAll;

	/** */
	public static String Cut;

	/** */
	public static String Copy;

	/** */
	public static String Paste;

	/** */
	public static String Delete;

	/** */
	public static String Navigator_statusLineMultiSelect;

	/** */
	public static String Navigator_statusLineSingleSelect;

	/** */
	public static String SelectFiltersActionDelegate_1;

	/** */
	public static String CommonFilterSelectionDialog_Available_Filters;

	/** */
	public static String CommonFilterSelectionDialog_Available_Content;

	/** */
	public static String CommonFilterSelectionDialog_Hides_all_content_associated;

	/** */
	public static String CommonFilterSelectionDialog_Select_the_available_extensions;

	/** */
	public static String CommonFilterSelectionDialog_Select_the_filters_to_apply;

	/** */
	public static String SelectFiltersActionDelegate_0;

	/** */
	public static String FilterActionGroup_RecentFilters;

	/** */
	public static String CollapseAllActionDelegate_0;

	/** */
	public static String LinkEditorActionDelegate_1;

	/** */
	public static String LinkEditorActionDelegate_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;

	/** */
	public static String UpdateFiltersOperation_Update_CommonViewer_Filter_;

	/** */
	public static String CommonFilterSelectionDialog_enter_name_of_filte_;

	/** */
	public static String CommonFilterSelectionDialog_Available_customization_;

	/** */
	public static String CommonSorterDescriptorManager_A_navigatorContent_extension_in_0_;

	/** */
	public static String CommonSorterDescriptorManager_A_navigatorContent_extension_does_n_;

	/** */
	public static String FilterDialogSelectionListener_Enable_the_0_filter_;

	/** */
	public static String NavigatorContentServiceLabelProvider_Error_no_label_provider_for_0_;

	/** */
	public static String CommonViewerSorter_NoContentExtensionForObject;

	/** */
	public static String NavigatorContentService_problemSavingPreferences;

	/** */
	public static String LoggingJob;


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

}
