/*******************************************************************************
 * Copyright (c) 2003, 2006 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_TITLE;
	public static String URL_MAPPINGS_LABEL;
	public static String SERVLET_MAPPINGS_LABEL;
	public static String FILTER_MAPPINGS_LABEL;
	public static String URL_SERVLET_LABEL;
	public static String DISPATCHERS_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 ADD_FILTER_WIZARD_WINDOW_TITLE;
    public static String ADD_FILTER_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_TITLE;
	public static String DESCRIPTION_LABEL;
	public static String USE_EXISTING_SERVLET_CLASS;
    public static String USE_EXISTING_FILTER_CLASS;
    public static String USE_EXISTING_LISTENER_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 ADD_FILTER_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_TITLE;
	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 EDIT_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 NEW_FILTER_WIZARD_WINDOW_TITLE;
	public static String INTERFACE_SELECTION_DIALOG_TITLE;
	public static String NAME_TITLE;
	public static String NAME_LABEL;
	public static String VALUE_TITLE;
	public static String VALUE_LABEL;
	public static String WEB_CONT_PAGE_COMP_LABEL;
	public static String CHOOSE_SERVLET_CLASS;
	public static String CHOOSE_FILTER_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;
	public static String SELECT_ALL_BUTTON;
	public static String CLEAR_BUTTON;
	
	public static String Compressed_Libraries;
	public static String Compressed_JavaResources;
	
	public static String ConvertToWebTitle;
	public static String SelectWebVersion;
	
	public static String ADD_LISTENER_WIZARD_WINDOW_TITLE;
	public static String ADD_LISTENER_WIZARD_PAGE_TITLE;
	public static String ADD_LISTENER_WIZARD_PAGE_DESC;
	public static String ADD_LISTENER_WIZARD_SERVLET_CONTEXT_EVENTS;
	public static String ADD_LISTENER_WIZARD_HTTP_SESSION_EVENTS;
	public static String ADD_LISTENER_WIZARD_SERVLET_REQUEST_EVENTS;
	public static String ADD_LISTENER_WIZARD_LIFECYCLE;
	public static String ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES;
	public static String ADD_LISTENER_WIZARD_SESSION_MIGRATION;
	public static String ADD_LISTENER_WIZARD_OBJECT_BINDING;
	
	public static String DISPATCHER_REQUEST;
	public static String DISPATCHER_FORWARD;
	public static String DISPATCHER_INCLUDE;
	public static String DISPATCHER_ERROR;

	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 WEB_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;
	
	
}
