/***************************************************************************************************
 * Copyright (c) 2003, 2004 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.jst.servlet.ui.internal.plugin;

import org.eclipse.osgi.util.NLS;


public class WEBUIMessages extends NLS {

	private static final String BUNDLE_NAME = "web_ui";//$NON-NLS-1$

	private WEBUIMessages() {
		// Do not instantiate
	}

	public static String NEW_SERVLET_WIZARD_PAGE_TITLE;
	public static String FOLDER_LABEL;
	public static String URL_MAPPINGS_LABEL;
	public static String JAVA_CLASS_MODIFIERS_LABEL;
	public static String SUPERCLASS_LABEL;
	public static String WEB_CONT_PAGE_TITLE;
	public static String SERVLET_PACKAGE_LABEL;
	public static String PACKAGE_SELECTION_DIALOG_MSG_NONE;
	public static String JAVA_CLASS_ABSTRACT_CHECKBOX_LABEL;
	public static String ADD_SERVLET_WIZARD_WINDOW_TITLE;
	public static String ADD_SERVLET_WIZARD_PAGE_TITLE;
	public static String JAVA_CLASS_MAIN_CHECKBOX_LABEL;
	public static String EMPTY_LIST_MSG;
	public static String ExportWARAction_UI_;
	public static String NO_WEB_PROJECTS;
	public static String INTERFACE_SELECTION_DIALOG_MSG_NONE;
	public static String SUPERCLASS_SELECTION_DIALOG_TITLE;
	public static String PACKAGE_SELECTION_DIALOG_DESC;
	public static String JAVA_CLASS_BROWER_DIALOG_TITLE;
	public static String CONTAINER_SELECTION_DIALOG_DESC;
	public static String NEW_JAVA_CLASS_DESTINATION_WIZARD_PAGE_DESC;
	public static String JAVA_CLASS_PUBLIC_CHECKBOX_LABEL;
	public static String URL_PATTERN_LABEL;
	public static String CONTAINER_SELECTION_DIALOG_TITLE;
	public static String WEB_CONT_NAME;
	public static String URL_PATTERN_TITLE;
	public static String CONTAINER_SELECTION_DIALOG_VALIDATOR_MESG;
	public static String DESCRIPTION_LABEL;
	public static String USE_EXISTING_SERVLET_CLASS;
	public static String JAVA_CLASS_FINAL_CHECKBOX_LABEL;
	public static String INTERFACE_SELECTION_DIALOG_DESC;
	public static String ADD_LABEL;
	public static String ADD_SERVLET_WIZARD_PAGE_DESC;
	public static String SELECT_CLASS_TITLE;
	public static String JAVA_CLASS_BROWER_DIALOG_MESSAGE;
	public static String ImportWARAction_UI_;
	public static String _9;
	public static String JAVA_CLASS_METHOD_STUBS_LABEL;
	public static String _8;
	public static String JAVA_CLASS_CONSTRUCTOR_CHECKBOX_LABEL;
	public static String _7;
	public static String SERVLETS;
	public static String _6;
	public static String DEFAULT_PACKAGE;
	public static String _5;
	public static String MAP_CLASS_NAME_TO_CLASS_ERROR_MSG;
	public static String BROWSE_BUTTON_LABEL;
	public static String _4;
	public static String REMOVE_BUTTON;
	public static String _3;
	public static String _2;
	public static String _1;
	public static String INIT_PARAM_LABEL;
	public static String SERVLET_NAME_LABEL;
	public static String _0;
	public static String CLASS_NAME_LABEL;
	public static String _17;
	public static String _16;
	public static String JAVA_PACKAGE_LABEL;
	public static String _15;
	public static String _14;
	public static String _13;
	public static String PACKAGE_SELECTION_DIALOG_TITLE;
	public static String _12;
	public static String ADD_BUTTON_LABEL;
	public static String _11;
	public static String _10;
	public static String SUPERCLASS_SELECTION_DIALOG_DESC;
	public static String NEW_JAVA_CLASS_OPTIONS_WIZARD_PAGE_DESC;
	public static String REMOVE_BUTTON_LABEL;
	public static String NEW_SERVLET_WIZARD_WINDOW_TITLE;
	public static String INTERFACE_SELECTION_DIALOG_TITLE;
	public static String NAME_LABEL;
	public static String VALUE_LABEL;
	public static String WEB_CONT_PAGE_COMP_LABEL;
	public static String CHOOSE_SERVLET_CLASS;
	public static String NEW_SERVLET_WIZARD_PAGE_DESC;
	public static String JAVA_CLASS_INHERIT_CHECKBOX_LABEL;
	public static String WEB_CONT_PAGE_DESCRIPTION;
	public static String JAVA_CLASS_INTERFACES_LABEL;
	public static String WEBCONTENT;

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

	public static final String IMAGE_LOAD_ERROR = _0;
	public static final String WEB_MODULE_WIZ_TITLE = _1;
	public static final String WEB_VERSION_LBL = _2;
	public static final String WEB_PROJECT_MAIN_PG_TITLE = _3;
	public static final String WEB_PROJECT_MAIN_PG_DESC = _4;
	public static final String EJB_PROJECT_LBL = _5;
	public static final String WEB_FILE_LBL = _6;
	public static final String WEB_IMPORT_MAIN_PG_DESC = _7;
	public static final String WEB_IMPORT_MAIN_PG_TITLE = _8;
	public static final String WEB_EXPORT_MAIN_PG_TITLE = _9;
	public static final String WEB_EXPORT_MAIN_PG_DESC = _10;
	public static final String WEB_IMPORT_CONTEXT_ROOT = _11;
	public static final String WEB_CONVERT_MAIN_PG_DESC = _12;
	public static final String WEB_CONVERT_MAIN_PG_TITLE = _13;
	public static final String WEB_IMPORT_WEB_LIB_PG_TITLE = _14;
	public static final String WEB_IMPORT_WEB_LIB_PG_DESC = _15;
	public static final String WAR_IMPORT_SELECT_ALL_LIBS_BUTTON = _16;
	public static final String WAR_IMPORT_DESELECT_ALL_LIBS_BUTTON = _17;
}