package org.eclipse.wst.xsl.ui.internal;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.ui.internal.messages"; //$NON-NLS-1$
	
	public static String ExcludeResultPrefixesContentAssist;
	public static String NoContentAssistance;
	public static String XSLSyntaxColoringPage;
	public static String xsltStyleDocument;
	public static String MainPreferencePage;
	public static String NewXSLSelectTemplate;
	public static String NewXSLTemplateDescription;
	public static String NewXSLUseTemplateButtonText;
	public static String NewXSLLinkPreferencePage;
	public static String NewXSLColumnTemplateName;
	public static String NewXSLColumnTemplateDescription;
	public static String NewXSLTemplatePreviewTitle;
	public static String NewXSLFilePageTitle;
	public static String NewXSLFilePageDescription;
	public static String NewXSLFilePageWindowTitle;
	public static String NewXSLFileWizardExtensionError;
	public static String NewXSLFileAlreadExistsError;
	public static String VersionTemplateVariableResolverPageDescription;
	public static String AbstractValidationSettingsPageMbText;
	public static String AbstractValidationSettingsPageWorkspace;
	public static String AbstractValidationSettingsPageProject;
	public static String AbstractValidationSettingsPageJob;
	public static String ErrorLevelText;
	public static String WarningLevelText;
	public static String IgnoreLevelText;
	public static String XSLValidationPreferencePageTitle;
	public static String XSLValidationPreferencePageDescription;
	public static String XSLValidationPreferenceMaxErrorsLabel;
	public static String XSLValidationPreferenceImportsIncludesLabel;
	public static String XSLValidationPreferenceUnresolveImportIncludeLabel;
	public static String XSLValidationPreferenceCircularReferencesLabel;
	public static String XSLValidationPreferenceNamedTemplatesLabel;
	public static String XSLValidationPreferenceTemplateConflictsLabel;
	public static String XSLValidationPreferenceDuplicateParameterLabel;
	public static String XSLValidationPreferenceMissingParameterAttributeLabel;
	public static String XSLValidationPreferenceParameterEmptyAttributeLabel;
	public static String XSLValidationPreferenceCallTemplatesLabel;
	public static String XSLValidationPreferenceUnresolvedTemplatesLabel;
	public static String XSLValidationPreferenceMissingParamtersLabel;
	public static String XSLValidationPreferenceParamtersWithoutValueLabel;
	public static String XSLValidationPreferenceXPathLabel;
	public static String XSLValidationPreferenceXPathSyntaxLabel;
	public static String XSLValidationPreferenceMaxErrorsMsgError;
	public static String XSLEditorOverrideTemplate;
	public static String XSLEditorOverrideTemplateMode;
	public static String CallTemplateContentAssistTemplateName;
	public static String CallTemplateContentAssistTemplateNameFile;
	public static String XSLValidationPageSeverityLevel;
	public static String Open;
	
	
	static {
	   NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

}
