/*******************************************************************************
 * Copyright (c) 2000, 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.jdt.internal.ui.refactoring.reorg;

import org.eclipse.osgi.util.NLS;

public final class ReorgMessages extends NLS {

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

	private ReorgMessages() {
		// Do not instantiate
	}

	public static String CutAction_text;
	public static String copyAction_description;
	public static String copyAction_destination_label;
	public static String copyAction_name;
	public static String deleteAction_checkDeletion;
	public static String deleteAction_confirm_title;
	public static String deleteAction_confirmReadOnly;
	public static String deleteAction_description;
	public static String DestinationRenderer_packages;
	public static String moveAction_checkMove;
	public static String moveAction_error_readOnly;
	public static String moveAction_label;
	public static String moveAction_name;
	public static String moveAction_destination_label;
	public static String ReorgAction_checkSaveTargets;
	public static String ReorgAction_checkSaveTargets_title;
	public static String ReorgAction_exception_saving;
	public static String ReorgAction_task_saving;
	public static String ReorgAction_exception;
	public static String ReorgAction_reorganize;
	public static String CopyResourcesToClipboardAction_copy;
	public static String CutSourceReferencesToClipboardAction_cut;
	public static String DeleteResourceAction_delete;
	public static String DeleteResourceAction_exception;
	public static String PasteSourceReferencesFromClipboardAction_paste1;
	public static String PasteSourceReferencesFromClipboardAction_exception;
	public static String ReorgExceptionHandler_see_details;
	public static String ReorgGroup_copy;
	public static String ReorgGroup_paste;
	public static String ReorgGroup_pasteAction_description;
	public static String ReorgGroup_delete;
	public static String SourceReferenceAction_exception;
	public static String JdtCopyAction_referenced;
	public static String JdtCopyAction_update_classpath;
	public static String JdtCopyAction_Copy;
	public static String JdtMoveAction_move;
	public static String JdtMoveAction_update_references;
	public static String JdtMoveAction_preview;
	public static String JdtMoveAction_exception;
	public static String JdtMoveAction_referenced;
	public static String JdtMoveAction_update_classpath;
	public static String JdtMoveAction_Move;
	public static String JdtMoveAction_default_package_warning;
	public static String DeleteSourceReferencesAction_delete_elements;
	public static String DeleteSourceReferencesAction_exception;
	public static String DeleteSourceReferencesAction_delete1;
	public static String DeleteSourceReferencesAction_confirm_gs_delete;
	public static String DeleteSourceReferencesAction_delete_gs;
	public static String DeleteSourceReferencesAction_title;
	public static String DeleteSourceReferencesAction_read_only;
	public static String DeleteSourceReferencesAction_cu_read_only;
	public static String DeleteSourceReferencesAction_cu_empty;
	public static String DeleteSourceReferencesAction_cus_empty;
	public static String ReorgDestinationAction_duplicate_name;
	public static String ReorgDestinationAction_error;
	public static String ReorgDestinationAction_exception;
	public static String ReorgDestinationAction_duplicate;
	public static String ReorgDestinationAction_exception_title;
	public static String ReorgDestinationAction_error_occurred;
	public static String ReorgQueries_enterNewNameQuestion;
	public static String ReorgQueries_nameConflictMessage;
	public static String ReorgQueries_resourceWithThisNameAlreadyExists;
	public static String ReorgQueries_invalidNameMessage;
	public static String ReorgQueries_packagewithThatNameexistsMassage;
	public static String ReorgQueries_resourceExistsWithDifferentCaseMassage;
	public static String ReorgQueries_Confirm_Overwritting;
	public static String ReorgQueries_exists_read_only;
	public static String ReorgQueries_exists;
	public static String ReorgQueries_skip_all;
	public static String CopyToClipboardProblemDialog_title;
	public static String CopyToClipboardProblemDialog_message;
	public static String PasteResourcesFromClipboardAction_error_title;
	public static String PasteResourcesFromClipboardAction_error_message;
	public static String ReorgExceptionHandler_error_title;
	public static String ReorgExceptionHandler_error_message;
	public static String DeleteSourceReferencesAction_sure;
	public static String DeleteSourceReferencesAction_sure_elements;
	public static String DeleteSourceReferenceAction_error_title;
	public static String DeleteSourceReferenceAction_error_message;
	public static String DeleteSourceReferenceAction_deleting;
	public static String DeleteResourcesAction_deleteAction_confirm_message;
	public static String DeleteResourcesAction_Delete;
	public static String DeleteResourcesAction_sure_delete;
	public static String DeleteResourcesAction_sure_delete_resources;
	public static String DeleteResourcesAction_default_package;
	public static String DeleteResourcesAction_referenced;
	public static String DeleteResourcesAction_sure_delete_linked_single;
	public static String DeleteResourcesAction_sure_delete_linked_single_package_or_pfr;
	public static String DeleteResourcesAction_sure_delete_linked_multiple;
	public static String DeleteResourcesAction_sure_delete_linked_multiple_with_packages_or_pfr;
	public static String CopyToClipboardAction_0;
	public static String CopyToClipboardAction_1;
	public static String CopyToClipboardAction_2;
	public static String CopyToClipboardAction_3;
	public static String CopyToClipboardAction_4;
	public static String CopyToClipboardAction_5;
	public static String DeleteAction_3;
	public static String DeleteAction_4;
	public static String NewNameQueries_21;
	public static String NewNameQueries_22;
	public static String ReorgCopyAction_3;
	public static String ReorgCopyAction_4;
	public static String ReorgCopyWizard_1;
	public static String ReorgCopyWizard_2;
	public static String ReorgMoveAction_3;
	public static String ReorgMoveAction_4;
	public static String ReorgMoveWizard_3;
	public static String ReorgMoveWizard_4;
	public static String ReorgMoveWizard_textual_move;
	public static String ReorgMoveWizard_newPackage;
	public static String ReorgUserInputPage_choose_destination_single;
	public static String ReorgUserInputPage_choose_destination_multi;
	public static String RenameMethodUserInterfaceStarter_name;
	public static String RenameMethodUserInterfaceStarter_message;
	public static String PasteAction_4;
	public static String PasteAction_5;
	public static String PasteAction_change_name;
	public static String PasteAction_edit_name;
	public static String PasteAction_element_doesnot_exist;
	public static String PasteAction_invalid_destination;
	public static String PasteAction_name;
	public static String PasteAction_wrong_destination;
	public static String PasteAction_TextPaster_exists;
	public static String PasteAction_TextPaster_confirmOverwriting;

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