# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

OpenIDE-Module-Name=Progress UI
OpenIDE-Module-Display-Category=Infrastructure
OpenIDE-Module-Short-Description=Task progress visualization.
OpenIDE-Module-Long-Description=\
    Provides a view of all running tasks and may permit them to be cancelled, etc.

NbProgressBar.tooltip1={0} tasks running. Click for details.
NbProgressBar.tooltip2={0} task running. Click for details.
ListComponent.btnClose.tooltip=Click to cancel process
ListComponent.bar.tooltip=Click to watch the process
#NO18N
ListComponent.btnClose.name=StatusLine.Progress.CancelButton
Cancel_Question=Are you sure you want to cancel {0}?
Cancel_Question_Title=Cancel Running Task
StatusLineComponent.ShowProcessList=Show Processes
StatusLineComponent.Cancel=Cancel Process
StatusLineComponent.View=Show Output
# {0} - number of additional processes
StatusLineComponent.extra=({0} more\u2026)
ListComponent.Watch=Watch Process

RunOffAWT.TITLE_Operation=Lengthy operation in progress
RunOffAWT.BTN_Cancel=Cancel

# ProgressListAction
CTL_ProcessListAction=&Processes

# CancelAction
CTL_CancelAction=Cancel Process

#AbstractWindowRunner
ModalDialog.btnClose.tooltip=Click to cancel process
ModalDialog.btnClose.text=Cancel
ModalDialog.btnClose.accessibleName=Cancel
ModalDialog.btnClose.accessibleDescription=Cancels the current process

