/*******************************************************************************
 * Copyright (c) 2000, 2008 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.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_outOfSync;

	public static String DeleteResourcesWizard_page_title;

	public static String DeleteResourcesWizard_project_deleteContents;

	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_label_country;

	public static String RefactoringHistoryLabelProvider_label_language;

	public static String RefactoringHistoryLabelProvider_label_variant;

	public static String RefactoringHistoryLabelProvider_last_month_format;

	public static String RefactoringHistoryLabelProvider_last_week_format;

	public static String RefactoringHistoryLabelProvider_month_format;

	public static String RefactoringHistoryLabelProvider_this_month_format;

	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_description;

	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_no_refactorings_error;

	public static String RefactoringHistoryWizard_no_refactorings_message;

	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 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;

	public static String RefactoringPropertyPage_edit_caption;

	public static String RefactoringPropertyPage_edit_message;

	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 ShowRefactoringHistoryControl_edit_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
	}
}
