###############################################################################
# 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
###############################################################################
_0=Failed to find the image "{0}".
_1=New Dynamic Web Project
_2=Servlet version:
_3=Dynamic Web Project
_4=Create a standalone Dynamic Web project or add it to a new or existing Enterprise Application.
_5=Web project:
_6=WAR file:
_7=Import a WAR file from the file system
_8=WAR Import
_9=WAR Export
_10=Export Web project to the local file system.
_11=Context Root:
_12=Convert Simple Web to Web Module
_13=Convert Simple Web to Web Module.
_14=WAR Import: Web libraries
_15=Select the web library jars from the list below to be imported as web library projects.  Unselected web libraries will be imported as jars in the WEB-INF/lib directory.
_16=Select All
_17=Deselect All

ADD_SERVLET_WIZARD_WINDOW_TITLE=Create Servlet
ADD_SERVLET_WIZARD_PAGE_TITLE=Create Servlet
ADD_SERVLET_WIZARD_PAGE_DESC=Enter servlet deployment descriptor specific information.

ADD_FILTER_WIZARD_WINDOW_TITLE=Create Filter
ADD_FILTER_WIZARD_PAGE_TITLE=Create Filter
ADD_FILTER_WIZARD_PAGE_DESC=Enter servlet filter deployment descriptor specific information.

ADD_LISTENER_WIZARD_WINDOW_TITLE=Create Listener
ADD_LISTENER_WIZARD_PAGE_TITLE=Create Listener
ADD_LISTENER_WIZARD_PAGE_DESC=Select the application lifecycle events to listen to. 

DISPATCHER_REQUEST=REQUEST
DISPATCHER_FORWARD=FORWARD
DISPATCHER_INCLUDE=INCLUDE
DISPATCHER_ERROR=ERROR

DEFAULT_PACKAGE=(default package)
SELECT_CLASS_TITLE=Select Class
MAP_CLASS_NAME_TO_CLASS_ERROR_MSG=IWAE0060E Could not uniquely map the class name to a class.
EMPTY_LIST_MSG=Empty List
ADD_LABEL=Add
USE_EXISTING_SERVLET_CLASS=Use an existing Servlet class or JSP
USE_EXISTING_FILTER_CLASS=Use existing Filter class
USE_EXISTING_LISTENER_CLASS=Use existing Listener class
INIT_PARAM_TITLE=Initialization Parameters
INIT_PARAM_LABEL=Initialization Parameters:
URL_MAPPINGS_TITLE=URL Mappings
URL_MAPPINGS_LABEL=URL Mappings:
CHOOSE_SERVLET_CLASS=Choose a servlet class:

NEW_SERVLET_WIZARD_WINDOW_TITLE=New Servlet
NEW_SERVLET_WIZARD_PAGE_TITLE=Servlet
NEW_SERVLET_WIZARD_PAGE_DESC=Create a new servlet.
SERVLET_PACKAGE_LABEL=Java package:
SERVLET_NAME_LABEL=Servlet name:

NEW_FILTER_WIZARD_WINDOW_TITLE=New Filter
CHOOSE_FILTER_CLASS=Choose a filter class
SERVLET_MAPPINGS_LABEL=Servlet Mappings:
FILTER_MAPPINGS_LABEL=Filter Mappings:

ADD_LISTENER_WIZARD_SERVLET_CONTEXT_EVENTS=Servlet Context Events
ADD_LISTENER_WIZARD_HTTP_SESSION_EVENTS=HTTP Session Events
ADD_LISTENER_WIZARD_SERVLET_REQUEST_EVENTS=Servlet Request Events
ADD_LISTENER_WIZARD_LIFECYCLE=Lifecycle
ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES=Changes to attributes
ADD_LISTENER_WIZARD_SESSION_MIGRATION=Session migration
ADD_LISTENER_WIZARD_OBJECT_BINDING=Object binding

ADD_BUTTON_LABEL=Add...
EDIT_BUTTON_LABEL=Edit...
REMOVE_BUTTON_LABEL=Remove
URL_PATTERN_TITLE=URL Patterns
URL_PATTERN_LABEL=Pattern:
FOLDER_LABEL=Folder:
JAVA_PACKAGE_LABEL=Java package:
CLASS_NAME_LABEL=Class name:
SUPERCLASS_LABEL=Superclass:
CONTAINER_SELECTION_DIALOG_TITLE=Container Selection
CONTAINER_SELECTION_DIALOG_DESC=Choose a Container:
CONTAINER_SELECTION_DIALOG_VALIDATOR_MESG=Choose the Web Content Folder or its subfolder
PACKAGE_SELECTION_DIALOG_TITLE=Package Selection
PACKAGE_SELECTION_DIALOG_DESC=Choose a package:
PACKAGE_SELECTION_DIALOG_MSG_NONE=No packages to choose from
SUPERCLASS_SELECTION_DIALOG_TITLE=Superclass Selection
SUPERCLASS_SELECTION_DIALOG_DESC=Choose a superclass:
INTERFACE_SELECTION_DIALOG_TITLE=Interface Selection
INTERFACE_SELECTION_DIALOG_DESC=Choose interfaces:
INTERFACE_SELECTION_DIALOG_MSG_NONE=''{0}'' added.
JAVA_CLASS_MODIFIERS_LABEL=Modifiers:
JAVA_CLASS_PUBLIC_CHECKBOX_LABEL=Public
JAVA_CLASS_ABSTRACT_CHECKBOX_LABEL=Abstract
JAVA_CLASS_FINAL_CHECKBOX_LABEL=Final
JAVA_CLASS_INTERFACES_LABEL=Interfaces:
JAVA_CLASS_METHOD_STUBS_LABEL=Which method stubs would you like to create?
JAVA_CLASS_MAIN_CHECKBOX_LABEL=public static void main(String[] args)
JAVA_CLASS_CONSTRUCTOR_CHECKBOX_LABEL=Constructors from superclass
JAVA_CLASS_INHERIT_CHECKBOX_LABEL=Inherited abstract methods
JAVA_CLASS_BROWER_DIALOG_TITLE=Java Class Browser
JAVA_CLASS_BROWER_DIALOG_MESSAGE=Browse for a Java class

NAME_TITLE=Name
NAME_LABEL=Name:
DESCRIPTION_TITLE=Description
DESCRIPTION_LABEL=Description:
VALUE_TITLE=Value
VALUE_LABEL=Value:
URL_SERVLET_LABEL=URL Pattern / Servlet Name
DISPATCHERS_LABEL=Dispatchers

BROWSE_BUTTON_LABEL=Browse...
REMOVE_BUTTON=Remove
SELECT_ALL_BUTTON=Select &All
CLEAR_BUTTON=&Clear

NEW_JAVA_CLASS_DESTINATION_WIZARD_PAGE_DESC=Specify class file destination.
NEW_JAVA_CLASS_OPTIONS_WIZARD_PAGE_DESC=Specify modifiers, interfaces to implement, and method stubs to generate.

ImportWARAction_UI_=Import Web Module...
ExportWARAction_UI_=Export WAR file...

NO_WEB_PROJECTS=No Web Projects

SERVLETS =Servlets

WEB_CONT_NAME = WebAppContainerPage
WEB_CONT_PAGE_TITLE = Web App Libraries Container
WEB_CONT_PAGE_DESCRIPTION = This container dynamically populates classpath entries from the WEB-INF/lib and WEB-INF/classes directories of a web app.
WEB_CONT_PAGE_COMP_LABEL = Component:
WEBCONTENT=Web Content folder:


Compressed_Libraries= Libraries
Compressed_JavaResources= Java Resources{0}

ConvertToWebTitle=Convert to Dynamic Web Project
SelectWebVersion=Select a Dynamic Web module version:
