Skip to content
Binary file added images/ui/progress_bar/01 progress_bar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/01 progress_bar_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/02 determinate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/02 determinate_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/03 indeterminate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/03 indeterminate_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/06 process_name.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/06 process_name_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/09 inline_processes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/10 process_details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/11 process_details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/12 process_details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/13 in_dialog.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/ui/progress_bar/13 in_dialog_dark.png
Binary file added images/ui/progress_bar/14 in_status_bar.png
Binary file added images/ui/progress_bar/14 in_status_bar_dark.png
Binary file added images/ui/progress_bar/15 process_status.png
Binary file added images/ui/progress_bar/15 process_status_dark.png
Binary file added images/ui/progress_bar/16 process_control.png
Binary file added images/ui/progress_bar/17 pause_button.png
Binary file added images/ui/progress_bar/17 pause_button_dark.png
Binary file added images/ui/progress_bar/17 stop_button.png
Binary file added images/ui/progress_bar/17 stop_button_dark.png
Binary file added images/ui/progress_bar/18 pause_button.png
Binary file added images/ui/progress_bar/18 pause_button_dark.png
Binary file added images/ui/progress_bar/19 resume_button.png
Binary file added images/ui/progress_bar/19 resume_button_dark.png
Binary file added images/ui/progress_bar/20 resume_button.png
Binary file added images/ui/progress_bar/20 resume_button_dark.png
Binary file added images/ui/progress_bar/21 size_and_placement.png
Binary file added images/ui/progress_bar/22 size_and_placement.png
Binary file added images/ui/progress_bar/old/status_bar.png
Binary file removed images/ui/progress_bar/progress_bar_colors.png
Diff not rendered.
Diff not rendered.
Binary file removed images/ui/progress_bar/status_bar.png
Diff not rendered.
Binary file added images/ui/radiobutton/10_How_to_use.png
Binary file added images/ui/radiobutton/10_How_to_use_dark.png
157 changes: 101 additions & 56 deletions topics/ui/controls/progress_bar.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

A progress bar informs users about the progress of a lengthy operation.

![](determinate_example.png){width=308}
![](01 progress_bar.png){width=706}

## When to use

Expand All @@ -21,112 +21,157 @@ Follow the rules for [progress indicators](progress_indicators.md).
## How to use

### Types
Use a determinate progress bar if the process duration is known. Otherwise, use **indeterminate** progress bar:

Use **determinate** progress bar, if the process duration is known:

![](determinate_example.png){width=308}

Otherwise, use **indeterminate** progress bar:

![](indeterminate_example.png){width=308}
![](02 determinate_and_ indeterminate.png){width=706}

If an indeterminate process reaches a point where its duration can be determined, switch to a determinate progress bar. For example:

![](progress_bar_indeterminate.png){width=308}

![](progress_bar_determinate.png){width=308}
![](04 determinate_to_indeterminate.png){width=706}

### Process name and details

A progress bar can have a process name and process details. For wording, follow the rules for [progress text](progress_text.md).

#### Process name

Place a process name above the progress bar:

![](label_above.png){width=308}

If the vertical space is limited, place the process name with a colon on the left:

![](progress_bar_label_left.png){width=308}
A progress bar can have a process name and process details.
![](05_process name and details.png){width=706}

If there are several processes in a group, add a bold header. The header is a noun.
Process name — the name of the operation being performed.

![](several_progresses.png){width=308}
Process details — information about the current stage of an operation. They make long-running tasks more predictable and manageable.

Do **not** show a process name for inline processes:
Details example:
* The current step — Uploading file 3 of 10.
* The name of a file, module, or library – Fetching guava-31.1.jar.
* Remaining time or percentage completed.
* Other useful progress information.

![](progress_bar_tool_window.png){width=605}
For wording, follow the rules for [progress text](progress_text.md).

#### Process details
#### Placement

Place process details under the progress bar in one line:
Show the process name above the progress bar and the process details below it on a single line. The length of the process details is limited by the width of the progress bar.
![](11 process_details.png){width=706}

![](comment.png){width=308}

The length of the comment is limited by the progress bar:
<table style="none" border="false">
<tr>
<td width="378">
<img src="07 process_name_on_the_left.png" alt="Process name on the left"/>
</td>
<td>
<p>If the vertical space is limited, place the process name with a colon on the left.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="08 header_for_several_processes.png" alt="Header for several processes"/>
</td>
<td>
<p>If there are several processes in a group, add a bold header.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="09 inline_processes.png" alt="Inline process"/>
</td>
<td>
<p>Do not show a process name for inline progress.</p>
</td>
</tr>
</table>

![](comment_long.png){width=308}

If space is limited, show percentage completed:

![](horizontaly.png){width=342}

#### In dialog
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a separate chapter 'Placement':
Placement:

  • In a dialog
  • In the status bar
  • In a tool window + show the progress bar in the tool window from Git

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


Use a process name as a dialog header, capitalize the title and remove ellipsis. Process details appear above the progress bar:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a special type of dialog, dedicated just for the progress. Possibly, make the header "In progress dialog" and write when it should be used? I think, we use it when the IDE cannot function properly until this process is completed.


Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, there's no example of how the progress from the illustrations above (process name above, details below) appears in dialogs or popups

![](dialog.png){width=544}
![](13 in_dialog.png){width=706}

#### In status bar

Place a process name under the progress bar in the Status bar:
Place a process name with an ellipsis before the progress bar:

![](status_bar.png){width=238}
![](14 in_status_bar.png){width=706}

### Process status

If a process consists of substeps that can fail but do not terminate the process, then use green and red colors to show the intermediate status.
For example, show the status of the running tests:

![](progress_color.png){width=390}
![](15 process_status.png){width=706}

Do **not** color progress bar to show the final result of the task, use [notifications](notification_types.md).
In case of success, show notification for the user-initiated tasks, in case of failure — for all tasks.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second sentence is not clear without an example. Possibly remove it as it's not about the progress control. I'd also suggest rewriting the first sentence as:

Do not use red/greed colors to show the final status. After the process is completed, hide the progress bar and show a notification to show the process result.


### Process control
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be plural "controls"?


#### Cancel or Stop button
Provide the Cancel button in the progress dialog if the process can be interrupted (see [Loading Project dialog](#in-dialog)).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think, the control tag should be used for button names

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly just repeat the illustration here to not make the reader skip higher in the article

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, it seems that the actions — Cancel, Stop, Pause — do not depend on the UI element we use to show them. The button is used only when the progress appears in the "progress dialog". In all other cases, we use icons.

Possibly move the "Process controls" section above the new "Placement" section suggested by Eldar, and in the "Placement / In progress dialog" add that the icon is replaced a button.

Use the Stop button if interrupting does not return the environment to its previous state.

Use the Stop icon if there are several processes running at the same time in one dialog or there is not enough space for the button (e.g., [Status bar](#in-status-bar)):

![](tasks_dialog.png){width=700}

Always place the Stop icon on the right next to the progress bar. On hover over the Stop icon, show the "Stop" or "Cancel" comment under the progress bar instead of process details:

![](hover_stop_icon.png){width=332}

If the process takes a long time and can prevent the user from performing tasks, provide an option to pause a process using the Pause button or the Pause icon.
Replace process details with the "Pause" comment on hover over the Pause icon:

![](pause.png){width=331}
#### Stop icon
Use the Stop icon when multiple processes are running simultaneously in one dialog or when there isn’t enough space to display individual buttons (e.g., [Status bar](#in-status-bar)):

![](16 process_control.png){width=706}

#### Placement and Behavior
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of this section, I suggest separating it to two parts — Stop icon and Pause/Resume icon. The 1st example in this section is about the stop icon, can be unified with above. The others are about the Pause/Resume.

<table style="none" border="false">
<tr>
<td width="378">
<img src="17 stop_button.png" alt="Stop icon on the progress bar"/>
</td>
<td>
<p>Always place the Stop icon on the right next to the progress bar. On hover over the Stop icon, show the "Stop" or "Cancel" comment under the progress bar instead of process details.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="17 pause_button.png" alt="Pause button on the progress bar"/>
</td>
<td>
<p>If the process takes a long time and can prevent the user from performing tasks, provide an option to pause a process using the Pause button or the Pause icon.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="18 pause_button.png" alt="Pause under the progress bar with hover effect"/>
</td>
<td>
<p>Replace process details with the "Pause" comment on hover over the Pause icon.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="19 resume_button.png" alt="Resume button on the progress bar"/>
</td>
<td>
<p>If a user pauses the process, show "Paused" under the progress bar. Replace the Pause icon with Resume.</p>
</td>
</tr>
<tr>
<td width="378">
<img src="20 resume_button.png" alt="Resume under the progress bar with hover effect."/>
</td>
<td>
<p>Show "Resume" under the progress bar and when hovered over the Resume button.</p>
</td>
</tr>
</table>

#### Pause Option Recommendations
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change header to the sentence case

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest writing about this in the "Pause/Resume icon" section. Also I'd suggest rewriting to the positive phrasing — when it should be used instead of when it shouldn't be.


It is **not** recommended providing an option to pause the process. It is preferable that the process runs in the background and does not interfere with a user.

If a user pauses the process, show "Paused" under the progress bar.
Replace the Pause icon with Resume, show "Resume" under the progress bar and when hovered over the Resume button:

![](resume.png){width=330}

#### Process Completion
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change header to the sentence case

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this section to the level of "Progress controls" so that the headers structure describes different parts of the progress one after another:

  • Types
  • Process name and details
  • Process status
  • Process controls
  • Process completion
  • Placement

Hide the progress bar as soon as the process completes.

## Sizes and placement
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove this part as we did for other articles. It's easier to keep spacings in the UI kit, and sizes are built-in into controls themselves


The progress form and sizes are the same in all themes.

![](progress_bar_sizes.png){width=586}
![](21 size_and_placement.png){width=706}

![](22 size_and_placement.png){width=706}