/*******************************************************************************
 * 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.core.util;

import java.text.MessageFormat;

import org.eclipse.osgi.util.NLS;

public final class Messages extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.jdt.internal.core.util.messages";//$NON-NLS-1$

	private Messages() {
		// Do not instantiate
	}

	public static String hierarchy_nullProject;
	public static String hierarchy_nullRegion;
	public static String hierarchy_nullFocusType;
	public static String hierarchy_creating;
	public static String hierarchy_creatingOnType;
	public static String element_doesNotExist;
	public static String element_notOnClasspath;
	public static String element_invalidClassFileName;
	public static String element_reconciling;
	public static String element_attachingSource;
	public static String element_invalidResourceForProject;
	public static String element_nullName;
	public static String element_nullType;
	public static String element_illegalParent;
	public static String sourcetype_invalidName;
	public static String operation_needElements;
	public static String operation_needName;
	public static String operation_needPath;
	public static String operation_needAbsolutePath;
	public static String operation_needString;
	public static String operation_notSupported;
	public static String operation_cancelled;
	public static String operation_nullContainer;
	public static String operation_nullName;
	public static String operation_copyElementProgress;
	public static String operation_moveElementProgress;
	public static String operation_renameElementProgress;
	public static String operation_copyResourceProgress;
	public static String operation_moveResourceProgress;
	public static String operation_renameResourceProgress;
	public static String operation_createUnitProgress;
	public static String operation_createFieldProgress;
	public static String operation_createImportsProgress;
	public static String operation_createInitializerProgress;
	public static String operation_createMethodProgress;
	public static String operation_createPackageProgress;
	public static String operation_createPackageFragmentProgress;
	public static String operation_createTypeProgress;
	public static String operation_deleteElementProgress;
	public static String operation_deleteResourceProgress;
	public static String operation_cannotRenameDefaultPackage;
	public static String operation_pathOutsideProject;
	public static String operation_sortelements;
	public static String workingCopy_commit;
	public static String build_preparingBuild;
	public static String build_readStateProgress;
	public static String build_saveStateProgress;
	public static String build_saveStateComplete;
	public static String build_readingDelta;
	public static String build_analyzingDeltas;
	public static String build_analyzingSources;
	public static String build_cleaningOutput;
	public static String build_copyingResources;
	public static String build_compiling;
	public static String build_foundHeader;
	public static String build_fixedHeader;
	public static String build_oneError;
	public static String build_oneWarning;
	public static String build_multipleErrors;
	public static String build_multipleWarnings;
	public static String build_done;
	public static String build_wrongFileFormat;
	public static String build_cannotSaveState;
	public static String build_cannotSaveStates;
	public static String build_initializationError;
	public static String build_serializationError;
	public static String build_classFileCollision;
	public static String build_duplicateClassFile;
	public static String build_duplicateResource;
	public static String build_inconsistentClassFile;
	public static String build_inconsistentProject;
	public static String build_incompleteClassPath;
	public static String build_missingSourceFile;
	public static String build_prereqProjectHasClasspathProblems;
	public static String build_prereqProjectMustBeRebuilt;
	public static String build_abortDueToClasspathProblems;
	public static String status_cannot_retrieve_attached_javadoc;	
	public static String status_cannotUseDeviceOnPath;
	public static String status_coreException;
	public static String status_defaultPackageReadOnly;
	public static String status_evaluationError;
	public static String status_JDOMError;
	public static String status_IOException;
	public static String status_indexOutOfBounds;
	public static String status_invalidContents;
	public static String status_invalidDestination;
	public static String status_invalidName;
	public static String status_invalidPackage;
	public static String status_invalidPath;
	public static String status_invalidProject;
	public static String status_invalidResource;
	public static String status_invalidResourceType;
	public static String status_invalidSibling;
	public static String status_nameCollision;
	public static String status_noLocalContents;
	public static String status_OK;
	public static String status_readOnly;
	public static String status_targetException;
	public static String status_unknown_javadoc_format;
	public static String status_updateConflict;
	public static String classpath_buildPath;
	public static String classpath_cannotNestEntryInEntry;
	public static String classpath_cannotNestEntryInLibrary;
	public static String classpath_cannotNestEntryInOutput;
	public static String classpath_cannotNestOutputInEntry;
	public static String classpath_cannotNestOutputInOutput;
	public static String classpath_cannotReadClasspathFile;
	public static String classpath_cannotReferToItself;
	public static String classpath_cannotUseDistinctSourceFolderAsOutput;
	public static String classpath_cannotUseLibraryAsOutput;
	public static String classpath_closedProject;
	public static String classpath_couldNotWriteClasspathFile;
	public static String classpath_cycle;
	public static String classpath_duplicateEntryPath;
	public static String classpath_illegalContainerPath;
	public static String classpath_illegalEntryInClasspathFile;
	public static String classpath_illegalLibraryPath;
	public static String classpath_illegalLibraryArchive;
	public static String classpath_illegalExternalFolder;
	public static String classpath_illegalProjectPath;
	public static String classpath_illegalSourceFolderPath;
	public static String classpath_illegalVariablePath;
	public static String classpath_invalidClasspathInClasspathFile;
	public static String classpath_invalidContainer;
	public static String classpath_mustEndWithSlash;
	public static String classpath_unboundContainerPath;
	public static String classpath_unboundLibrary;
	public static String classpath_unboundProject;
	public static String classpath_settingOutputLocationProgress;
	public static String classpath_settingProgress;
	public static String classpath_unboundSourceAttachment;
	public static String classpath_unboundSourceFolder;
	public static String classpath_unboundVariablePath;
	public static String classpath_unknownKind;
	public static String classpath_xmlFormatError;
	public static String classpath_disabledInclusionExclusionPatterns;
	public static String classpath_disabledMultipleOutputLocations;
	public static String classpath_incompatibleLibraryJDKLevel;
	public static String classpath_duplicateEntryExtraAttribute;
	public static String file_notFound;
	public static String file_badFormat;
	public static String path_nullPath;
	public static String path_mustBeAbsolute;
	public static String cache_invalidLoadFactor;
	public static String savedState_jobName;
	public static String javamodel_initialization;
	public static String restrictedAccess_project;
	public static String restrictedAccess_library;
	public static String convention_unit_nullName;
	public static String convention_unit_notJavaName;
	public static String convention_classFile_nullName;
	public static String convention_classFile_notClassFileName;
	public static String convention_illegalIdentifier;
	public static String convention_import_nullImport;
	public static String convention_import_unqualifiedImport;
	public static String convention_type_nullName;
	public static String convention_type_nameWithBlanks;
	public static String convention_type_dollarName;
	public static String convention_type_lowercaseName;
	public static String convention_type_invalidName;
	public static String convention_package_nullName;
	public static String convention_package_emptyName;
	public static String convention_package_dotName;
	public static String convention_package_nameWithBlanks;
	public static String convention_package_consecutiveDotsName;
	public static String convention_package_uppercaseName;
	public static String dom_cannotDetail;
	public static String dom_nullTypeParameter;
	public static String dom_nullNameParameter;
	public static String dom_nullReturnType;
	public static String dom_nullExceptionType;
	public static String dom_mismatchArgNamesAndTypes;
	public static String dom_addNullChild;
	public static String dom_addIncompatibleChild;
	public static String dom_addChildWithParent;
	public static String dom_unableAddChild;
	public static String dom_addAncestorAsChild;
	public static String dom_addNullSibling;
	public static String dom_addSiblingBeforeRoot;
	public static String dom_addIncompatibleSibling;
	public static String dom_addSiblingWithParent;
	public static String dom_addAncestorAsSibling;
	public static String dom_addNullInterface;
	public static String dom_nullInterfaces;
	public static String correction_nullRequestor;
	public static String correction_nullUnit;
	public static String engine_searching;
	public static String engine_searching_indexing;
	public static String engine_searching_matching;
	public static String exception_wrongFormat;
	public static String process_name;
	public static String manager_filesToIndex;
	public static String manager_indexingInProgress;
	public static String disassembler_description;
	public static String disassembler_opentypedeclaration;
	public static String disassembler_closetypedeclaration;
	public static String disassembler_parametername;
	public static String disassembler_localvariablename;
	public static String disassembler_endofmethodheader;
	public static String disassembler_begincommentline;
	public static String disassembler_fieldhasconstant;
	public static String disassembler_endoffieldheader;
	public static String disassembler_sourceattributeheader;
	public static String disassembler_enclosingmethodheader;
	public static String disassembler_exceptiontableheader;
	public static String disassembler_linenumberattributeheader;
	public static String disassembler_localvariabletableattributeheader;
	public static String disassembler_localvariabletypetableattributeheader;
	public static String disassembler_arraydimensions;
	public static String disassembler_innerattributesheader;
	public static String disassembler_inner_class_info_name;
	public static String disassembler_outer_class_info_name;
	public static String disassembler_inner_name;
	public static String disassembler_inner_accessflags;
	public static String disassembler_genericattributeheader;
	public static String disassembler_signatureattributeheader;
	public static String disassembler_indentation;
	public static String disassembler_constantpoolindex;
	public static String disassembler_space;
	public static String disassembler_comma;
	public static String disassembler_openinnerclassentry;
	public static String disassembler_closeinnerclassentry;
	public static String disassembler_deprecated;
	public static String disassembler_constantpoolheader;
	public static String disassembler_constantpool_class;
	public static String disassembler_constantpool_double;
	public static String disassembler_constantpool_float;
	public static String disassembler_constantpool_integer;
	public static String disassembler_constantpool_long;
	public static String disassembler_constantpool_string;
	public static String disassembler_constantpool_fieldref;
	public static String disassembler_constantpool_interfacemethodref;
	public static String disassembler_constantpool_methodref;
	public static String disassembler_constantpool_name_and_type;
	public static String disassembler_constantpool_utf8;
	public static String disassembler_annotationdefaultheader;
	public static String disassembler_annotationdefaultvalue;
	public static String disassembler_annotationenumvalue;
	public static String disassembler_annotationclassvalue;
	public static String disassembler_annotationannotationvalue;
	public static String disassembler_annotationarrayvaluestart;
	public static String disassembler_annotationarrayvalueend;
	public static String disassembler_annotationentrystart;
	public static String disassembler_annotationentryend;
	public static String disassembler_annotationcomponent;
	public static String disassembler_runtimevisibleannotationsattributeheader;
	public static String disassembler_runtimeinvisibleannotationsattributeheader;
	public static String disassembler_runtimevisibleparameterannotationsattributeheader;
	public static String disassembler_runtimeinvisibleparameterannotationsattributeheader;
	public static String disassembler_parameterannotationentrystart;
	public static String disassembler_stackmaptableattributeheader;
	public static String classfileformat_versiondetails;
	public static String classfileformat_methoddescriptor;
	public static String classfileformat_fieldddescriptor;
	public static String classfileformat_stacksAndLocals;
	public static String classfileformat_superflagisnotset;
	public static String classfileformat_superflagisset;
	public static String classfileformat_clinitname;
	public static String classformat_classformatexception;
	public static String classformat_anewarray;
	public static String classformat_checkcast;
	public static String classformat_instanceof;
	public static String classformat_ldc_w_class;
	public static String classformat_ldc_w_float;
	public static String classformat_ldc_w_integer;
	public static String classformat_ldc_w_string;
	public static String classformat_ldc2_w_long;
	public static String classformat_ldc2_w_double;
	public static String classformat_multianewarray;
	public static String classformat_new;
	public static String classformat_iinc;
	public static String classformat_invokespecial;
	public static String classformat_invokeinterface;
	public static String classformat_invokestatic;
	public static String classformat_invokevirtual;
	public static String classformat_getfield;
	public static String classformat_getstatic;
	public static String classformat_putstatic;
	public static String classformat_putfield;
	public static String classformat_newarray_boolean;
	public static String classformat_newarray_char;
	public static String classformat_newarray_float;
	public static String classformat_newarray_double;
	public static String classformat_newarray_byte;
	public static String classformat_newarray_short;
	public static String classformat_newarray_int;
	public static String classformat_newarray_long;
	public static String classformat_store;
	public static String classformat_load;
	public static String classfileformat_anyexceptionhandler;
	public static String classfileformat_exceptiontableentry;
	public static String classfileformat_linenumbertableentry;
	public static String classfileformat_localvariabletableentry;
	public static String classfileformat_versionUnknown;
	
	public static String disassembler_frame_same_locals_1_stack_item_extended;
	public static String disassembler_frame_chop;
	public static String disassembler_frame_same_frame_extended;
	public static String disassembler_frame_append;
	public static String disassembler_frame_full_frame;
	public static String disassembler_frame_same_frame;
	public static String disassembler_frame_same_locals_1_stack_item;

	static {
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}
	
	/**
	 * Bind the given message's substitution locations with the given string values.
	 * 
	 * @param message the message to be manipulated
	 * @return the manipulated String
	 */
	public static String bind(String message) {
		return bind(message, null);
	}
	
	/**
	 * Bind the given message's substitution locations with the given string values.
	 * 
	 * @param message the message to be manipulated
	 * @param binding the object to be inserted into the message
	 * @return the manipulated String
	 */
	public static String bind(String message, Object binding) {
		return bind(message, new Object[] {binding});
	}

	/**
	 * Bind the given message's substitution locations with the given string values.
	 * 
	 * @param message the message to be manipulated
	 * @param binding1 An object to be inserted into the message
	 * @param binding2 A second object to be inserted into the message
	 * @return the manipulated String
	 */
	public static String bind(String message, Object binding1, Object binding2) {
		return bind(message, new Object[] {binding1, binding2});
	}

	/**
	 * Bind the given message's substitution locations with the given string values.
	 * 
	 * @param message the message to be manipulated
	 * @param bindings An array of objects to be inserted into the message
	 * @return the manipulated String
	 */
	public static String bind(String message, Object[] bindings) {
		return MessageFormat.format(message, bindings);
	}
}