/*******************************************************************************
 * Copyright (c) 2000, 2017 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Mickael Istria (Red Hat Inc.) - [525882] Delete nested projects
 *******************************************************************************/
package org.eclipse.ltk.internal.ui.refactoring;

import org.eclipse.osgi.util.NLS;

public final class RefactoringUIMessages extends NLS {

	public static String AbstractRefactoringModelMerger_accept_question;

	public static String AbstractRefactoringModelMerger_wizard_description;

	public static String AbstractRefactoringModelMerger_wizard_title;

	public static String BrowseRefactoringHistoryControl_sort_date;

	public static String BrowseRefactoringHistoryControl_sort_date_description;

	public static String BrowseRefactoringHistoryControl_sort_project;

	public static String BrowseRefactoringHistoryControl_sort_project_description;

	public static String ChangeElementLabelProvider_derived;

	private static final String BUNDLE_NAME= "org.eclipse.ltk.internal.ui.refactoring.RefactoringUIMessages";//$NON-NLS-1$

	public static String ChangeExceptionHandler_abort;

	public static String ChangeExceptionHandler_button_explanation;

	public static String ChangeExceptionHandler_no_details;

	public static String ChangeExceptionHandler_refactoring;

	public static String ChangeExceptionHandler_rollback_message;

	public static String ChangeExceptionHandler_rollback_title;

	public static String ChangeExceptionHandler_undo;

	public static String ChangeExceptionHandler_unexpected_exception;

	public static String ComparePreviewer_element_name;

	public static String ComparePreviewer_original_source;

	public static String ComparePreviewer_refactored_source;

	public static String DeleteResourcesHandler_title;

	public static String DeleteResourcesWizard_label_multi;

	public static String DeleteResourcesWizard_label_single;

	public static String DeleteResourcesWizard_label_multi_linked;

	public static String DeleteResourcesWizard_label_single_linked;

	public static String DeleteResourcesWizard_label_multi_projects;

	public static String DeleteResourcesWizard_label_single_project;

	public static String DeleteResourcesWizard_label_alsoDeleteNestedProjects;

	public static String DeleteResourcesWizard_label_alsoDeleteOneNestedProject;

	public static String DeleteResourcesWizard_page_title;

	public static String DeleteResourcesWizard_project_deleteContents;

	public static String DeleteResourcesWizard_project_location;

	public static String DeleteResourcesWizard_project_locations;

	public static String DeleteResourcesWizard_window_title;

	public static String ErrorWizardPage_cannot_proceed;

	public static String ErrorWizardPage_confirm;

	public static String ErrorWizardPage_next_Change;

	public static String ErrorWizardPage_no_context_information_available;

	public static String ErrorWizardPage_previous_Change;

	public static String ExceptionHandler_seeErrorLogMessage;

	public static String FileStatusContextViewer_error_reading_file;

	public static String MoveResourcesHandler_title;

	public static String MoveResourcesWizard_description_multiple;

	public static String MoveResourcesWizard_description_single;

	public static String MoveResourcesWizard_error_no_selection;

	public static String MoveResourcesWizard_page_title;

	public static String MoveResourcesWizard_window_title;

	public static String PreviewWizardPage_changeElementLabelProvider_textFormat;

	public static String PreviewWizardPage_changes;

	public static String PreviewWizardPage_changes_filter_category;

	public static String PreviewWizardPage_changes_filter_derived;

	public static String PreviewWizardPage_changes_filtered;

	public static String PreviewWizardPage_changes_filtered2;

	public static String PreviewWizardPage_description;

	public static String PreviewWizardPage_filterChanges;

	public static String PreviewWizardPage_hideDerived_text;

	public static String PreviewWizardPage_Internal_error;

	public static String PreviewWizardPage_next_Change;

	public static String PreviewWizardPage_no_preview;

	public static String PreviewWizardPage_no_source_code_change;

	public static String PreviewWizardPage_previous_Change;

	public static String PreviewWizardPage_refactoring;

	public static String PreviewWizardPage_showAll_description;

	public static String PreviewWizardPage_showAll_text;

	public static String RedoRefactoringAction_error_message;

	public static String RedoRefactoringAction_error_title;

	public static String RedoRefactoringAction_extendedLabel;

	public static String RedoRefactoringAction_label;

	public static String RedoRefactoringAction_name;

	public static String RefactoringHistoryControl_comment_viewer_label;

	public static String RefactoringHistoryControl_no_comment;

	public static String RefactoringHistoryControl_no_selection;

	public static String RefactoringHistoryControl_resolving_information;

	public static String RefactoringHistoryControl_selection_pattern;

	public static String RefactoringHistoryControlConfiguration_collection_label;

	public static String RefactoringHistoryControlConfiguration_comment_caption;

	public static String RefactoringHistoryControlConfiguration_day_detailed_pattern;

	public static String RefactoringHistoryControlConfiguration_day_pattern;

	public static String RefactoringHistoryControlConfiguration_last_month_label;

	public static String RefactoringHistoryControlConfiguration_last_week_label;

	public static String RefactoringHistoryControlConfiguration_month_pattern;

	public static String RefactoringHistoryControlConfiguration_project_pattern;

	public static String RefactoringHistoryControlConfiguration_refactoring_pattern;

	public static String RefactoringHistoryControlConfiguration_this_month_pattern;

	public static String RefactoringHistoryControlConfiguration_this_week_pattern;

	public static String RefactoringHistoryControlConfiguration_today_pattern;

	public static String RefactoringHistoryControlConfiguration_week_pattern;

	public static String RefactoringHistoryControlConfiguration_workspace_caption;

	public static String RefactoringHistoryControlConfiguration_year_pattern;

	public static String RefactoringHistoryControlConfiguration_yesterday_pattern;

	public static String RefactoringHistoryErrorPage_description;

	public static String RefactoringHistoryErrorPage_fatal_error;

	public static String RefactoringHistoryErrorPage_info_error;

	public static String RefactoringHistoryLabelProvider_day_format;

	public static String RefactoringHistoryLabelProvider_last_month_format2;

	public static String RefactoringHistoryLabelProvider_last_week_format;

	public static String RefactoringHistoryLabelProvider_month_format2;

	public static String RefactoringHistoryLabelProvider_this_month_format2;

	public static String RefactoringHistoryLabelProvider_this_week_format;

	public static String RefactoringHistoryLabelProvider_week_format;

	public static String RefactoringHistoryLabelProvider_year_format;

	public static String RefactoringHistoryMerger_error_auto_merge;

	public static String RefactoringHistoryOverviewPage_title;

	public static String RefactoringHistoryPreviewPage_apply_error;

	public static String RefactoringHistoryPreviewPage_apply_error_title;

	public static String RefactoringHistoryPreviewPage_description;

	public static String RefactoringHistoryPreviewPage_finish_error_description;

	public static String RefactoringHistoryPreviewPage_finish_error_title;

	public static String RefactoringHistoryPreviewPage_no_changes;

	public static String RefactoringHistoryPreviewPage_refactoring_pattern;

	public static String RefactoringHistoryWizard_do_not_show_message;

	public static String RefactoringHistoryWizard_error_applying_changes;

	public static String RefactoringHistoryWizard_error_instantiate_refactoring;

	public static String RefactoringHistoryWizard_error_resolving_refactoring;

	public static String RefactoringHistoryWizard_fatal_error_message;

	public static String RefactoringHistoryWizard_internal_error;

	public static String RefactoringHistoryWizard_internal_error_description;

	public static String RefactoringHistoryWizard_internal_error_title;

	public static String RefactoringHistoryWizard_one_refactoring_undone;

	public static String RefactoringHistoryWizard_preparing_changes;

	public static String RefactoringHistoryWizard_preparing_refactoring;

	public static String RefactoringHistoryWizard_preparing_refactorings;

	public static String RefactoringHistoryWizard_several_refactorings_undone;

	public static String RefactoringHistoryWizard_undo_message_explanation;

	public static String RefactoringHistoryWizard_undo_message_pattern;

	public static String RefactoringHistoryWizard_warning_finish;

	public static String RefactoringModelMerger_merge_message;

	public static String RefactoringModelMerger_project_pattern;

	public static String RefactoringModelMerger_retrieving_refactorings;

	public static String RefactoringModelMerger_workspace_caption;

	public static String RefactoringDescriptorDeleteQuery_confirm_deletion_singular;

	public static String RefactoringDescriptorDeleteQuery_confirm_deletion_plural;

	public static String RefactoringPropertyPage_confirm_delete_all_caption;

	public static String RefactoringPropertyPage_confirm_delete_all_pattern;

	public static String RefactoringPropertyPage_confirm_delete_caption;

	public static String RefactoringPropertyPage_confirm_delete_pattern_singular;

	public static String RefactoringPropertyPage_confirm_delete_pattern_plural;

	public static String RefactoringPropertyPage_project_pattern;

	public static String RefactoringPropertyPage_share_message;

	public static String RefactoringPropertyPage_sharing_refactoring_history;

	public static String RefactoringPropertyPage_unsharing_refactoring_history;

	public static String RefactoringStatusDialog_Cannot_proceed;

	public static String RefactoringStatusDialog_Continue;

	public static String RefactoringStatusDialog_Please_look;

	public static String RefactoringStatusViewer_error_message;

	public static String RefactoringStatusViewer_error_title;

	public static String RefactoringStatusViewer_Found_problems;

	public static String RefactoringStatusViewer_Problem_context;

	public static String RefactoringUI_cannot_execute;

	public static String RefactoringUI_open_unexpected_exception;

	public static String RefactoringUIPlugin_internal_error;

	public static String RefactoringUIPlugin_listener_removed;

	public static String RefactoringWizard_Internal_error;

	public static String RefactoringWizard_internal_error_1;

	public static String RefactoringWizard_refactoring;

	public static String RefactoringWizard_see_log;

	public static String RefactoringWizard_title;

	public static String RefactoringWizard_unexpected_exception;

	public static String RefactoringWizard_unexpected_exception_1;

	public static String RefactoringWizardDialog2_buttons_preview_label;

	public static String RenameResourceHandler_title;

	public static String RenameResourceWizard_name_field_label;

	public static String RenameResourceWizard_page_title;

	public static String RenameResourceWizard_window_title;

	public static String SelectRefactoringHistoryControl_deselect_all_label;

	public static String SelectRefactoringHistoryControl_select_all_label;

	public static String ShowRefactoringHistoryControl_delete_all_label;

	public static String ShowRefactoringHistoryControl_delete_label;

	public static String UndoManagerAction_internal_error_message;

	public static String UndoManagerAction_internal_error_title;

	public static String UndoRefactoringAction_error_message;

	public static String UndoRefactoringAction_error_title;

	public static String UndoRefactoringAction_extendedLabel;

	public static String UndoRefactoringAction_label;

	public static String UndoRefactoringAction_name;

	public static String ValidationCheckResultQuery_error_message;

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

	private RefactoringUIMessages() {
		// Do not instantiate
	}
}
