<?xml version="1.0" encoding="UTF-8"?>
<?NLS type="org.eclipse.help.contexts"?>
<!-- /*******************************************************************************
 * Copyright (c) 2000, 2010 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/ -->
<contexts>
<context id="sdpd0000">
<description>This dialog box displays the status of the projects that were published. For more detailed information, click <b>Details</b>. A scrollable box appears at the bottom of this dialog box.

</description>
</context>
<context id="sdpd0002">
<description>This dialog box displays the status of the projects that were published. For more detailed information, click <b>Details</b>. A scrollable box appears at the bottom of this dialog box.

</description>
</context>
<context id="sdpd0004">
<description>This dialog box displays the status of the projects that were published. For more detailed information, click <b>Details</b>. A scrollable box appears at the bottom of this dialog box.

</description>
</context>
<context id="sdpd0006">
<description>This dialog box displays the status of the projects that were published. For more detailed information, click <b>Details</b>. A scrollable box appears at the bottom of this dialog box.

</description>
</context>

<context id="sdpi0000">
<description>This change cannot be undone.

</description>
</context>
<context id="sdti0000">
<description>Informational message indicating that server is not responding and that you may want to terminate it by clicking <b>OK</b>.

</description>
</context>
<context id="spge0000">
<description>Use this page to define a list of server runtime environments available for selection in the current workspace.

A server runtime environment is composed of the following definitions:
-a name to identify the server runtime environment
-the type of server that specifies the vendor and version-level of the server
-the directory path to a local installation of the server
-In some cases, also includes a reference to a Java runtime environment

If a server runtime environment is referencing a stub directory of the server, you can only compile your application against the stub server.  However, if referencing a full installation of the server, you can compile, test, and run your application against the installation of the server.
</description>
</context>

<context id="spge0002">
<description>Specifies that all the files should automatically be published to the local server at every <b>seconds</b> intervals, where <b>seconds</b> is the number of seconds you have specified in the control.
</description>
</context>
<context id="spge0006">
<description>Specifies that all the files should automatically be published to the remote server at every <b>seconds</b> intervals, where <b>seconds</b> is the number of seconds you have specified in the control.
</description>
</context>
<context id="spge0012">
<description>Specifies that all the files should automatically be published before starting the server.
</description>
</context>
<context id="spge0022">
<description>The Servers view is displayed on the workbench when there are any activities in the Servers view.
</description>
</context>

<context id="spge0024">
<description>Specifies the preferences for saving the changes in any open server editors before starting the server. Select <b>Never</b> to never save the changes in any open editors before starting the server. Select <b>Prompt</b> to have the server tools prompt you before saving any changes in an open server editor. Select <b>Always</b> to have the server tools automatically save any changes in an open server editor before starting the server.
</description>
</context>

<context id="spge0026">
<description>Specify the number of seconds allowed to elapse, before the workbench cancels the process to start the server. 
<b>Tip</b>:  If you have a fast processing machine, you can try to set a short timeout interval. If you have a slow processing machine, you can try to set a long timeout interval.
</description>
</context>

<context id="spge0027">
<description>Specify the number of seconds allowed to elapse, before the workbench prompts you for an action. The prompt requests from you to either click <b>OK</b> to end the server or click <b>Cancel</b> to continue waiting for the server to stop.   
<b>Tip</b>:  If you have a fast processing machine, you can try to set a short timeout interval. If you have a slow processing machine, you can try to set a long timeout interval.
</description>
</context>

<context id="spge0028">
<description>This option specifies that each time you start the workbench, it will try to update the status of the server defined in the Servers view with the actual state of the server, such as Started or Stopped.
</description>
</context>

<context id="spge0030">
<description>When switching the server to run in a different mode, for example using the <b>Run As</b> > <b>Run on Server</b>, <b>Profile As</b> > <b>Profile on Server</b>, or <b>Debug As</b> > <b>Debug on Server</b>, specify the next action of the server by selecting one of the following options:

<b>Restart</b> - specifies the workbench to stop and restart the server

<b>Continue</b> - specifies to continue running the server in previous mode and ignore the change request of running in a different server mode

<b>Prompt</b> - specifies the workbench to prompt you for the next server action when you switch the server to run in a different mode
</description>
</context>

<context id="spge0031">
<description>When you finish running the server in debug mode and switch out, for example using the <b>Run As</b> > <b>Run on Server</b> or <b>Profile As</b> > <b>Profile on Server</b> command, specify the next action of the server by selecting one of the following options:

<b>Restart</b> - specifies the workbench to stop and restart the server

<b>Disable breakpoints</b> - specifies to clear all previously set breakpoints from the application and continue running the application in the newly selected server mode

<b>Continue</b> - specifies to continue running the server in debug mode and ignore the change request of running in a different server mode

<b>Prompt</b> - specifies the workbench to prompt you for the next server action when switching the server out of debug mode
</description>
</context>

<context id="spge0032">
<description>When you change the server mode into debug mode, for example using the <b>Debug As</b> > <b>Debug on Server</b> command, specify how to handle the breakpoints currently set in your application by selecting one of the following options:

<b>Always</b> - specifies to enable all the currently set breakpoints in your application and break at them

<b>Never</b> - specifies the workbench to ignore all the breakpoints previously set in your application and continue running the application on the server in debug mode. When the workbench ignores all the breakpoints in your application, the behavior of the server mode is similar to using the <b>Run on Server</b> command. However, because the server is running in debug mode, you have the opportunity to enable or re-enable breakpoints in your application.

<b>Prompt</b> - specifies the workbench will prompt you on how to handle the breakpoints set in your applications
</description>
</context>

<context id="svcp0000">
<description>The Servers view allows you to manage servers. This view displays a list of all your servers and the server configurations that are associated with each server. You can use this view to start, start in debug mode, restart, and stop servers.
To edit a server open its server editor by going into the Servers view and double-click the server; or right-click the server and select <b>Open</b> in the pop-up menu.
</description>
</context>
<context id="svcp0002">
<description>
This dialog box prompts different options depending on the status of the server in the Servers view:

<b>Delete unused server configurations</b>: If server configuration files were created in the workspace under a server project, this option becomes available. Select this check box to remove the server configuration files from the workspace. 
<b>Delete running servers</b> This option specifies to delete servers that are still running.  
<b>Stop servers before deleting</b> This option is only available if the Delete running servers option is selected. This option specifies to stop running servers prior to removing them from the Servers view. If this option is cleared and the Delete running servers option is selected, no stop command is issued against the server, and as a result the server is left running after removing the server from the Servers view.

Select the <b>OK</b> button to apply your delete options.
</description>
</context>

<!-- In Servers View, right-click a server and select Properties > General Information
<context id="svcp0004">
<description>
</description>
</context>
-->
<context id="swns0000">
<description>This wizard creates a new server and a new server configuration. A server contains information required to point to a specific run-time environment for local or remote testing, or for deployment to an application server. A server configuration contains information required to set up and deploy to a server.

</description>
</context>

<context id="swns0006">
<description>The type of environment that you want to use for this server. A list of available server types is shown. For more details on each of the supported server types, select a type from the list and read the description that appears in the <b>Description</b> area of this wizard page.

</description>
</context>
<context id="swsc0000">
<description>If a resource can run on several server clients, this dialog box will display them allowing you to select which one will be used.

</description>
</context>
<context id="swsc0002">
<description>If a resource can run on several server clients, this dialog box will display them allowing you to select which one will be used.

</description>
</context>
<context id="swsi0000">
<description>Select a server to launch.

</description>
</context>
<context id="swsi0002">
<description>Select an existing server.

</description>
</context>
<context id="swsi0004">
<description>List of existing servers that can be launched.

</description>
</context>
<context id="swsi0010">
<description>Create a new server to launch.

</description>
</context>
<context id="swsi0012">
<description>List of types of servers that can be launched.

</description>
</context>
<context id="swsi0014">
<description>A preferred server is the server that you want to use when a project has more than one server defined. Click to set the selected server as your preferred server.

</description>
</context>
<context id="swsl0000">
<description>To confirm that you want to launch the selected object, click <b>Finish</b>.

</description>
</context>

<context id="seop0000">
<description>Specify the host name and other server settings.
</description>
</context>

<context id="seop0002">
<description>Specify the name assign to the server.  This name is displayed in the Servers view.
</description>
</context>

<context id="seop0004">
<description>Specifies the location where the server configuration files are stored on the workbench.  
For example, if you specified the Configuration path to be <b>/Servers/Tomcat v4.1 Server at localhost-config</b>, the files are available in the Navigator view, expand the folders: Servers > Tomcat v4.1 Server at localhost-config.
</description>
</context>

<context id="seop0006">
<description>The fully qualified DNS name or IP address of the host machine where the server is running.
</description>
</context>

<context id="seop0008">
<description>Specifies the name of the server runtime environment as defined in the Preferences page (Window > Preferences > Server > Runtime Environments).
The server runtime environments define the runtime environment of an application server for compiling your application.
To change the server runtime environment, select the <b>Runtime Environment</b> link.
</description>

</context>
<context id="seop0010">
<description>Specify to use the publishing settings as defined in the Preferences page (Windows > Preferences > Server).
</description>
</context>

<context id="seop0012">
<description>Specifies the workbench to issue a publish after changes on a file that is associated to the server are saved and a full time interval has passed in the <b>Publishing interval</b> setting.</description>
</context>

<context id="seop0014">
<description>Specifies the workbench to issue a publish after changes on a file that requires a build and is associated to the server are saved, and a full time interval has passed in the <b>Publishing interval</b> setting.</description>
</context>

<context id="seop0016">
<description>Specifies the workbench should never publish files to the server.
</description>
</context>

<context id="seop0018">
<description>Specifies the number of <b>seconds</b> that needs to pass before the workbench calls a publish to happen on the server. However, if you make a subsequent change to the files before this time interval has completed, the publish is delayed as the timer is reset. The workbench makes a publish to the server only after the full time interval has passed.  If you set the publishing interval to 0 seconds, an immediate publish should happen after changes on a file are saved.
</description>
</context>

<context id="seop0020">
<description>Select the tasks you want to run during publishing.
</description>
</context>

<context id="swmm0000">
<description>In the Available projects list, specify the projects that you want to add to the server by clicking the <b>Add</b> button. When you select a project to add to the server, only the projects that are applicable to the type of server will appear. To remove a project from the Configured projects list, click the <b>Remove</b> button.
</description>
</context>

<context id="swnr0000">
<description>Under the <b>Select the type of runtime environment</b> list, select a server and version-level as the target server runtime environment. 
<b>Tip:</b> In the text field under the <b>Select the type of runtime environment</b> label, you can replace the text <b>type filter text</b> with keywords to filter the list of available application servers. The following are examples of filter keywords, see the help topic for details: Apache, WebSphere, ejb, web, 5.0, or 1.2.  
When you add a server runtime environment, by default a server is created and added as an entry in the Servers view. If you want to only add the server runtime environment and not create the server in the Servers view, clear the <b>Create a new local server</b> check box. 
To continue, click <b>Next</b>.
</description>
</context>

<context id="svcp0004">
<description>Select the <b>Switch location</b> button to toggle between displaying and hiding the metadata of the server on the workbench.  For details about the server metadata, see the <b>Displaying or hiding the metadata of the server</b> help topic.

If the value of the <b>Location</b> field contains [workspace metadata], this means the workbench is hiding the metadata. To display the metadata on the workbench, select the <b>Switch location</b> button again until the [workspace metadata] changes to a file path directory. The file path directory specifies the location where the server metadata file is stored on the workbench.  You can find the server metadata file in the Project Explorer view, expand the <b>Servers</b> folder and then expand your server project to locate the serverName.server file, where serverName is the name assigned to your server.

Optionally, you can double-click the serverName.server file to edit the data in the server editor.
</description>
</context>

</contexts>
