package org.eclipse.ptp.etfw.tau.messages;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ptp.etfw.tau.messages.messages"; //$NON-NLS-1$
	public static String ITAULaunchConfigurationConstants_NoDatabasesAvailable;
	public static String LaunchImages_InternalErrorRegDefined;
	public static String OptionSplash_AdjFollowingOpts;
	public static String OptionSplash_AutoBuild;
	public static String OptionSplash_AutoEclipseInternal;
	public static String OptionSplash_AutoRefresh;
	public static String OptionSplash_EnDisAbleTauSplash;
	public static String OptionSplash_ImproveTauUsageExperience;
	public static String OptionSplash_ShowScreenWhenProf;
	public static String OptionSplash_TauSuggestsOnDesc;
	public static String OptionSplash_TauSugOff;
	public static String OptionSplash_TauSugOn;
	public static String TAUAnalysisTab_31;
	public static String TAUAnalysisTab_AnalysisOptions;
	public static String TAUAnalysisTab_Automatic;
	public static String TAUAnalysisTab_Browse;
	public static String TAUAnalysisTab_ByWorkspaceCommands;
	public static String TAUAnalysisTab_CompilerInstrumentation;
	public static String TAUAnalysisTab_CoreExceptionInitAnalysisTab;
	public static String TAUAnalysisTab_CouldNotLocatePapiUtils;
	public static String TAUAnalysisTab_DataCollection;
	public static String TAUAnalysisTab_File;
	public static String TAUAnalysisTab_GenerateMPIIncludeList;
	public static String TAUAnalysisTab_Internal;
	public static String TAUAnalysisTab_InvalidPAPIMakefile;
	public static String TAUAnalysisTab_KeepProfiles;
	public static String TAUAnalysisTab_NativeCounters;
	public static String TAUAnalysisTab_None;
	public static String TAUAnalysisTab_NoPapiDirInMakefile;
	public static String TAUAnalysisTab_NoSelectiveInstrumentation;
	public static String TAUAnalysisTab_NotFound;
	public static String TAUAnalysisTab_NoValidMakefiles;
	public static String TAUAnalysisTab_PapiCounters;
	public static String TAUAnalysisTab_PDTInstrumentation;
	public static String TAUAnalysisTab_PleaseSelectDiffCounterTool;
	public static String TAUAnalysisTab_PresetCounters;
	public static String TAUAnalysisTab_SelectDatabase;
	public static String TAUAnalysisTab_SelectiveInstrumentation;
	public static String TAUAnalysisTab_SelectMakefile;
	public static String TAUAnalysisTab_SelectPapiCounters;
	public static String TAUAnalysisTab_SelectPapiCountersForTau;
	public static String TAUAnalysisTab_SelectTauSelInstFile;
	public static String TAUAnalysisTab_SetPapiEnvVar;
	public static String TAUAnalysisTab_SpecPreExistingSelInst;
	public static String TAUAnalysisTab_UploadDataToTauPortal;
	public static String TAUAnalysisTab_UseGeneratedSelInstFile;
	public static String TAUAnalysisTab_UserDefined;
	public static String TAUAnalysisTab_WarnTauJarsNotFound;
	public static String TAUPerformanceDataManager_0;
	public static String TAUPerformanceDataManager_AddingDataPerfDBFailed;
	public static String TAUPerformanceDataManager_AddingOnlineDBFailed;
	public static String TAUPerformanceDataManager_AppName;
	public static String TAUPerformanceDataManager_CouldNotGeneratePPK;
	public static String TAUPerformanceDataManager_CouldNotGenPPK;
	public static String TAUPerformanceDataManager_ExpName;
	public static String TAUPerformanceDataManager_NoProfData;
	public static String TAUPerformanceDataManager_TAUWarning;
	public static String TAUPerformanceDataManager_TrialName;
	public static String TAUPortalUploadDialog_Error;
	public static String TAUPortalUploadDialog_ErrorNoWorkspace;
	public static String TAUPortalUploadDialog_IsDifferent;
	public static String TAUPortalUploadDialog_LoginError;
	public static String TAUPortalUploadDialog_ResetAll;
	public static String TAUPortalUploadDialog_SelectWorkspace;
	public static String TAUPortalUploadDialog_SelectWorkspaceTab;
	public static String TAUPortalUploadDialog_SubmitLogin;
	public static String TAUPortalUploadDialog_SubmitValidEtcSpace;
	public static String TAUPortalUploadDialog_SubmitValidUnamePass;
	public static String TAUPortalUploadDialog_TauPortPwd;
	public static String TAUPortalUploadDialog_TauPortUname;
	public static String TAUPortalUploadDialog_TauPortURL;
	public static String TAUPortalUploadDialog_UploadError;
	public static String TAUPortalUploadDialog_WarningURLHost;
	public static String TAUPrefPage_AutoEclipseInternal;
	public static String TAUPrefPage_CheckTauOptions;
	public static String TAUPrefPage_TestPapi;
	public static String PAPISplash_Browse;
	public static String PAPISplash_NativeCounters;
	public static String PAPISplash_PapiBin;
	public static String PAPISplash_PresetCounters;
	public static String PAPISplash_SelectPapiBin;
	public static String TestPAPI_PapiCounters;
	public static String TestPAPI_SelectedPapiCounters;
	public static String TestPAPI_SelectPapiCounters;
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
