package org.eclipse.objectteams.otdt.internal.refactoring.otrefactorings;

import org.eclipse.osgi.util.NLS;

public class OTRefactoringMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.objectteams.otdt.internal.refactoring.otrefactorings.OTRefactoringMessages"; //$NON-NLS-1$
	public static String ExtractCallin_extractCallin_commandName;
	public static String ExtractCallin_extractCallin_name;
	public static String ExtractCallin_extractCallin_tooltip;
	public static String ExtractCallin_notAvailableOnSelection_error;
	public static String ExtractCallinInputPage_copyBaseMethod_checkbox;
	public static String ExtractCallinInputPage_deleteBaseMethod_checkbox;
	public static String ExtractCallinInputPage_extractMode_group;
	public static String ExtractCallinInputPage_modeAfter_label;
	public static String ExtractCallinInputPage_modeBefore_label;
	public static String ExtractCallinInputPage_modeReplace_label;
	public static String ExtractCallinInputPage_roleMethod_label;
	public static String ExtractCallinInputPage_targetRole_label;
	public static String ExtractCallinRefactoring_baseMethodAbstract_error;
	public static String ExtractCallinRefactoring_baseMethodBinary_error;
	public static String ExtractCallinRefactoring_baseMethodCallout_error;
	public static String ExtractCallinRefactoring_baseMethodReadOnly_error;
	public static String ExtractCallinRefactoring_bindingSearchFailed_error;
	public static String ExtractCallinRefactoring_callinKindInvalid_error;
	public static String ExtractCallinRefactoring_callinKindUnspecified_error;
	public static String ExtractCallinRefactoring_callToExtractNotFound_After_error;
	public static String ExtractCallinRefactoring_callToExtractNotFound_Before_error;
	public static String ExtractCallinRefactoring_compileErrors_error;
	public static String ExtractCallinRefactoring_inexistentMethod_error;
	public static String ExtractCallinRefactoring_methodNameClash;
	public static String ExtractCallinRefactoring_preconditions_progress;
	public static String ExtractCallinRefactoring_roleBinary_error;
	public static String ExtractCallinRefactoring_roleInexistent_error;
	public static String ExtractCallinRefactoring_roleMethodNameEmpty_error;
	public static String ExtractCallinRefactoring_roleMethodUnspecified_error;
	public static String ExtractCallinRefactoring_roleReadOnly_error;
	public static String ExtractCallinRefactoring_roleUnspecified_error;
	public static String ExtractCallinRefactoring_unboundRole_error;
	public static String ExtractCallinRefactoring_unparseableType_error;
	public static String ExtractCallinRefactoring_unspecifiedMethod_error;
	public static String ExtractCallinWizard_extractCallinInput_pageName;
	public static String InlineCallin_inlineCallin_name;
	public static String InlineCallin_inlineCallin_commandName;
	public static String InlineCallin_inlineCallin_tooltip;
	public static String InlineCallin_notAvailableOnSelection_error;
	public static String InlineCallinInputPage_basemethod_columnLabel;
	public static String InlineCallinInputPage_baseMethod_label;
	public static String InlineCallinInputPage_callinKind_columnLabel;
	public static String InlineCallinInputPage_deleteMethod_button;
	public static String InlineCallinInputPage_kindAfter_label;
	public static String InlineCallinInputPage_kindBefore_label;
	public static String InlineCallinInputPage_kindReplace_label;
	public static String InlineCallinInputPage_methodName_lable;
	public static String InlineCallinRefactoring_binaryBase_error;
	public static String InlineCallinRefactoring_binaryMethod_error;
	public static String InlineCallinRefactoring_compileErrors_error;
	public static String InlineCallinRefactoring_creatingChange_progress;
	public static String InlineCallinRefactoring_emptyMethodName_error;
	public static String InlineCallinRefactoring_inexistentMethod_error;
	public static String InlineCallinRefactoring_methodBoundByOtherCallin_error;
	public static String InlineCallinRefactoring_methodIsCallout_error;
	public static String InlineCallinRefactoring_methodIsUsed_error;
	public static String InlineCallinRefactoring_methodIsUsedBy_error;
	public static String InlineCallinRefactoring_methodNameClash_error;
	public static String InlineCallinRefactoring_methodUsesRoleField_error;
	public static String InlineCallinRefactoring_methodUsesRoleMethod_error;
	public static String InlineCallinRefactoring_missingBaseMethod_error;
	public static String InlineCallinRefactoring_missingNewMethodName_error;
	public static String InlineCallinRefactoring_noMethod_error;
	public static String InlineCallinRefactoring_notInsideRole_error;
	public static String InlineCallinRefactoring_preconditions_progress;
	public static String InlineCallinRefactoring_readOnlyBase_error;
	public static String InlineCallinRefactoring_readOnlyMethod_error;
	public static String InlineCallinRefactoring_unboundMethod_error;
	public static String InlineCallinRefactoring_unboundRole_error;
	public static String InlineCallinRefactoring_unparseableMethodMapping_error;
	public static String InlineCallinRefactoring_unparseableType_error;
	public static String InlineCallinWizard_inlineCallinInput_pageName;
	public static String OTRefactoring_organizeImports_editName;
	public static String RefactoringUtil_notFullyOTAware_info;
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, OTRefactoringMessages.class);
	}

	private OTRefactoringMessages() {
	}
}
