diff --git a/images/ui/button/Image.png b/images/ui/button/Image.png
new file mode 100644
index 000000000..0592bd5b7
Binary files /dev/null and b/images/ui/button/Image.png differ
diff --git a/images/ui/button/active_edit.png b/images/ui/button/active_edit.png
index 1e6711e55..1f0a8f781 100644
Binary files a/images/ui/button/active_edit.png and b/images/ui/button/active_edit.png differ
diff --git a/images/ui/button/active_edit_action.png b/images/ui/button/active_edit_action.png
new file mode 100644
index 000000000..5a5c66021
Binary files /dev/null and b/images/ui/button/active_edit_action.png differ
diff --git a/images/ui/button/active_edit_action_dark.png b/images/ui/button/active_edit_action_dark.png
new file mode 100644
index 000000000..36680d451
Binary files /dev/null and b/images/ui/button/active_edit_action_dark.png differ
diff --git a/images/ui/button/active_edit_dark.png b/images/ui/button/active_edit_dark.png
new file mode 100644
index 000000000..774dbea75
Binary files /dev/null and b/images/ui/button/active_edit_dark.png differ
diff --git a/images/ui/button/apply.png b/images/ui/button/apply.png
new file mode 100644
index 000000000..4633d4d7c
Binary files /dev/null and b/images/ui/button/apply.png differ
diff --git a/images/ui/button/apply_dark.png b/images/ui/button/apply_dark.png
new file mode 100644
index 000000000..79f88fffc
Binary files /dev/null and b/images/ui/button/apply_dark.png differ
diff --git a/images/ui/button/built-in_button.png b/images/ui/button/built-in_button.png
new file mode 100644
index 000000000..81a73c82c
Binary files /dev/null and b/images/ui/button/built-in_button.png differ
diff --git a/images/ui/button/built-in_button_dark.png b/images/ui/button/built-in_button_dark.png
new file mode 100644
index 000000000..aa6ee4254
Binary files /dev/null and b/images/ui/button/built-in_button_dark.png differ
diff --git a/images/ui/button/built_in_button.png b/images/ui/button/built_in_button.png
new file mode 100644
index 000000000..81a73c82c
Binary files /dev/null and b/images/ui/button/built_in_button.png differ
diff --git a/images/ui/button/built_in_button_dark.png b/images/ui/button/built_in_button_dark.png
new file mode 100644
index 000000000..aa6ee4254
Binary files /dev/null and b/images/ui/button/built_in_button_dark.png differ
diff --git a/images/ui/button/button_example.png b/images/ui/button/button_example.png
index 533b2a7f8..bb4a1e86f 100644
Binary files a/images/ui/button/button_example.png and b/images/ui/button/button_example.png differ
diff --git a/images/ui/button/button_example_dark.png b/images/ui/button/button_example_dark.png
new file mode 100644
index 000000000..c2b73c268
Binary files /dev/null and b/images/ui/button/button_example_dark.png differ
diff --git a/images/ui/button/buttons_with_ellipsis.png b/images/ui/button/buttons_with_ellipsis.png
index 75dc00f54..93161f8c0 100644
Binary files a/images/ui/button/buttons_with_ellipsis.png and b/images/ui/button/buttons_with_ellipsis.png differ
diff --git a/images/ui/button/buttons_with_ellipsis_dark.png b/images/ui/button/buttons_with_ellipsis_dark.png
new file mode 100644
index 000000000..afb5430b9
Binary files /dev/null and b/images/ui/button/buttons_with_ellipsis_dark.png differ
diff --git a/images/ui/button/cancel.png b/images/ui/button/cancel.png
new file mode 100644
index 000000000..f92b701b6
Binary files /dev/null and b/images/ui/button/cancel.png differ
diff --git a/images/ui/button/cancel_dark.png b/images/ui/button/cancel_dark.png
new file mode 100644
index 000000000..1a68992d2
Binary files /dev/null and b/images/ui/button/cancel_dark.png differ
diff --git a/images/ui/button/check_for_updates.png b/images/ui/button/check_for_updates.png
index 3a58d327c..b56a7d207 100644
Binary files a/images/ui/button/check_for_updates.png and b/images/ui/button/check_for_updates.png differ
diff --git a/images/ui/button/check_for_updates_dark.png b/images/ui/button/check_for_updates_dark.png
new file mode 100644
index 000000000..07df2a709
Binary files /dev/null and b/images/ui/button/check_for_updates_dark.png differ
diff --git a/images/ui/button/check_now.png b/images/ui/button/check_now.png
deleted file mode 100644
index 6f0637de1..000000000
Binary files a/images/ui/button/check_now.png and /dev/null differ
diff --git a/images/ui/button/check_now_button.png b/images/ui/button/check_now_button.png
new file mode 100644
index 000000000..a0c676a24
Binary files /dev/null and b/images/ui/button/check_now_button.png differ
diff --git a/images/ui/button/check_now_button_dark.png b/images/ui/button/check_now_button_dark.png
new file mode 100644
index 000000000..2a5ad5618
Binary files /dev/null and b/images/ui/button/check_now_button_dark.png differ
diff --git a/images/ui/button/close.png b/images/ui/button/close.png
new file mode 100644
index 000000000..28bbd6694
Binary files /dev/null and b/images/ui/button/close.png differ
diff --git a/images/ui/button/close_dark.png b/images/ui/button/close_dark.png
new file mode 100644
index 000000000..910cb2542
Binary files /dev/null and b/images/ui/button/close_dark.png differ
diff --git a/images/ui/button/default_OK.png b/images/ui/button/default_OK.png
index cfb9ed44c..a01e2f433 100644
Binary files a/images/ui/button/default_OK.png and b/images/ui/button/default_OK.png differ
diff --git a/images/ui/button/default_OK_dark.png b/images/ui/button/default_OK_dark.png
new file mode 100644
index 000000000..7413d7456
Binary files /dev/null and b/images/ui/button/default_OK_dark.png differ
diff --git a/images/ui/button/default_button.png b/images/ui/button/default_button.png
new file mode 100644
index 000000000..55e3b0fac
Binary files /dev/null and b/images/ui/button/default_button.png differ
diff --git a/images/ui/button/default_button_dark.png b/images/ui/button/default_button_dark.png
new file mode 100644
index 000000000..1dcdba21f
Binary files /dev/null and b/images/ui/button/default_button_dark.png differ
diff --git a/images/ui/button/default_button_save.png b/images/ui/button/default_button_save.png
new file mode 100644
index 000000000..25689352e
Binary files /dev/null and b/images/ui/button/default_button_save.png differ
diff --git a/images/ui/button/default_button_save_dark.png b/images/ui/button/default_button_save_dark.png
new file mode 100644
index 000000000..77a08da64
Binary files /dev/null and b/images/ui/button/default_button_save_dark.png differ
diff --git a/images/ui/button/default_macos.png b/images/ui/button/default_macos.png
new file mode 100644
index 000000000..3c9c7bd00
Binary files /dev/null and b/images/ui/button/default_macos.png differ
diff --git a/images/ui/button/default_macos_dark.png b/images/ui/button/default_macos_dark.png
new file mode 100644
index 000000000..d8b470ed2
Binary files /dev/null and b/images/ui/button/default_macos_dark.png differ
diff --git a/images/ui/button/default_save.png b/images/ui/button/default_save.png
index 7a7ce51e6..25689352e 100644
Binary files a/images/ui/button/default_save.png and b/images/ui/button/default_save.png differ
diff --git a/images/ui/button/default_save_dark.png b/images/ui/button/default_save_dark.png
new file mode 100644
index 000000000..77a08da64
Binary files /dev/null and b/images/ui/button/default_save_dark.png differ
diff --git a/images/ui/button/default_windows.png b/images/ui/button/default_windows.png
new file mode 100644
index 000000000..514be6f1e
Binary files /dev/null and b/images/ui/button/default_windows.png differ
diff --git a/images/ui/button/default_windows_dark.png b/images/ui/button/default_windows_dark.png
new file mode 100644
index 000000000..df5faba4f
Binary files /dev/null and b/images/ui/button/default_windows_dark.png differ
diff --git a/images/ui/button/disabled_button.png b/images/ui/button/disabled_button.png
new file mode 100644
index 000000000..a8aee9170
Binary files /dev/null and b/images/ui/button/disabled_button.png differ
diff --git a/images/ui/button/disabled_button_dark.png b/images/ui/button/disabled_button_dark.png
new file mode 100644
index 000000000..8ed00d94f
Binary files /dev/null and b/images/ui/button/disabled_button_dark.png differ
diff --git a/images/ui/button/focused_button.png b/images/ui/button/focused_button.png
new file mode 100644
index 000000000..99ea0b077
Binary files /dev/null and b/images/ui/button/focused_button.png differ
diff --git a/images/ui/button/focused_button_dark.png b/images/ui/button/focused_button_dark.png
new file mode 100644
index 000000000..2b86c5c21
Binary files /dev/null and b/images/ui/button/focused_button_dark.png differ
diff --git a/images/ui/button/help.png b/images/ui/button/help.png
new file mode 100644
index 000000000..a6d48a7cc
Binary files /dev/null and b/images/ui/button/help.png differ
diff --git a/images/ui/button/help_dark.png b/images/ui/button/help_dark.png
new file mode 100644
index 000000000..ce75caba0
Binary files /dev/null and b/images/ui/button/help_dark.png differ
diff --git a/images/ui/button/hovered_button.png b/images/ui/button/hovered_button.png
new file mode 100644
index 000000000..cf8108c12
Binary files /dev/null and b/images/ui/button/hovered_button.png differ
diff --git a/images/ui/button/hovered_button_dark.png b/images/ui/button/hovered_button_dark.png
new file mode 100644
index 000000000..1c81f1108
Binary files /dev/null and b/images/ui/button/hovered_button_dark.png differ
diff --git a/images/ui/button/link_instead_of_button.png b/images/ui/button/link_instead_of_button.png
new file mode 100644
index 000000000..849d508ea
Binary files /dev/null and b/images/ui/button/link_instead_of_button.png differ
diff --git a/images/ui/button/link_instead_of_button_dark.png b/images/ui/button/link_instead_of_button_dark.png
new file mode 100644
index 000000000..d5cbd4cdd
Binary files /dev/null and b/images/ui/button/link_instead_of_button_dark.png differ
diff --git a/images/ui/button/merge_dialog.png b/images/ui/button/merge_dialog.png
index 9e8367382..7443d7d64 100644
Binary files a/images/ui/button/merge_dialog.png and b/images/ui/button/merge_dialog.png differ
diff --git a/images/ui/button/merge_dialog_dark.png b/images/ui/button/merge_dialog_dark.png
new file mode 100644
index 000000000..7a6c7c110
Binary files /dev/null and b/images/ui/button/merge_dialog_dark.png differ
diff --git a/images/ui/button/open_project_dialog.png b/images/ui/button/open_project_dialog.png
index 72d6b6372..c830fc928 100644
Binary files a/images/ui/button/open_project_dialog.png and b/images/ui/button/open_project_dialog.png differ
diff --git a/images/ui/button/open_project_dialog_dark.png b/images/ui/button/open_project_dialog_dark.png
new file mode 100644
index 000000000..f26da70c4
Binary files /dev/null and b/images/ui/button/open_project_dialog_dark.png differ
diff --git a/images/ui/button/open_project_dialog_incorrect.png b/images/ui/button/open_project_dialog_incorrect.png
new file mode 100644
index 000000000..bdf8d0ea3
Binary files /dev/null and b/images/ui/button/open_project_dialog_incorrect.png differ
diff --git a/images/ui/button/open_project_dialog_incorrect_dark.png b/images/ui/button/open_project_dialog_incorrect_dark.png
new file mode 100644
index 000000000..f26da70c4
Binary files /dev/null and b/images/ui/button/open_project_dialog_incorrect_dark.png differ
diff --git a/images/ui/button/split_button.png b/images/ui/button/split_button.png
new file mode 100644
index 000000000..aa5001fb3
Binary files /dev/null and b/images/ui/button/split_button.png differ
diff --git a/images/ui/button/split_button_dark.png b/images/ui/button/split_button_dark.png
new file mode 100644
index 000000000..9a48bc182
Binary files /dev/null and b/images/ui/button/split_button_dark.png differ
diff --git a/images/ui/button/toolbar_button.png b/images/ui/button/toolbar_button.png
new file mode 100644
index 000000000..8b3e2be27
Binary files /dev/null and b/images/ui/button/toolbar_button.png differ
diff --git a/images/ui/button/toolbar_button_dark.png b/images/ui/button/toolbar_button_dark.png
new file mode 100644
index 000000000..1622b8572
Binary files /dev/null and b/images/ui/button/toolbar_button_dark.png differ
diff --git a/images/ui/button/when_to_use_button.png b/images/ui/button/when_to_use_button.png
new file mode 100644
index 000000000..d4ee1c960
Binary files /dev/null and b/images/ui/button/when_to_use_button.png differ
diff --git a/images/ui/button/when_to_use_button_dark.png b/images/ui/button/when_to_use_button_dark.png
new file mode 100644
index 000000000..5f04c20ec
Binary files /dev/null and b/images/ui/button/when_to_use_button_dark.png differ
diff --git a/topics/basics/plugin_required_experience.md b/topics/basics/plugin_required_experience.md
index 520cc0b52..4e4944ceb 100644
--- a/topics/basics/plugin_required_experience.md
+++ b/topics/basics/plugin_required_experience.md
@@ -2,7 +2,7 @@
# Required Experience
-
- Implementation:
-
+ Use a link instead a button if: The action takes the user to another page of the same dialog or an external source like
- documentation:
-
- Exception: Next and Previous buttons in wizard navigation.
-
- The command is a secondary action that is not related to the primary purpose of the window,
- and the space is constrained.
-
-
- Use toolbar buttons instead if there are several buttons related to a table or list: Use a button to invoke an immediate action:
-
- Use a link instead if: The action takes the user to another page of the same dialog or an external source like
+ documentation. Use a toolbar button instead if there are several buttons related to a table or list. Use a split button instead if: Use a built-in button instead if it's related to an input field, combo box,
- search field. Use a split button instead if: Use a built-in button instead if it's related to an input field, combo box,
+ search field. The label displays the action the button performs. Write the label as an imperative verb, e.g. Save, Print, Cancel. Use title capitalization. Exceptions: standard buttons like OK, Back/Forward, Previous/Next, Yes/No, Agree, Options, Settings, Details.
- Use title capitalization for button labels. Write the label as an imperative verb, for example, Save, Print, Cancel. Use title capitalization. Exceptions: standard buttons like The button should answer the question in the title, so the user can skip the description. Prefer specific
labels over
generic ones:
-
- Unclear what happens on the click. The label indicates what happens on the click. The label should be short, not more than 5 words. If it’s not obvious what element the button is related
- to, add more
- words to make it clear. Prefer clear labels to short:
-
-
- Add an ellipsis if additional actions such as adding more info or confirming the action are required:
- Do
- Do not
- use the word
-
-
-
-
- The default button should always be present in a dialog. Only one button in a dialog can be the default
- one. If the action is dangerous, e.g., can lead to data loss, provide an easy way to undo the command. If it's not possible to undo the action, make a secondary button the default one:
+ Do not
+ use the word
+
+
+ The label should be short, not more than five words. If it’s not obvious what element the button is related
+ to, add more
+ words to make it clear. Prefer clear labels to short ones:
+
+ JButton
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The default button confirms the main purpose of a dialog. It is triggered by pressing
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
All buttons can get focus, even on macOS if the
A focused button is invoked by pressing
-
- Make the second most popular button in the dialog focused.
- For example, the
-
+ Make the second most popular button in the dialog focused.It’s recommended to have one default and one focused button, so that most of the actions can be
+ triggered using
+ the keyboard.
+
-
+
+
+
On pressing the
+ If the focus moves to the control that’s not a button, the original default button is triggered by
+
Disable a button if:
Other common buttons are described below. They can be regular or default buttons.
+Other standard buttons are described below. They can be regular or default buttons.
On hovering over a button, show a tooltip with the shortcut and the action name if it can be clarified. For more details, see Context help.
-
- ![]()
- |
+ ![]() |
-
- ![]() |
+ If the action is clear, show the shortcut only. +
- |
+ ![]() |
+
+ Use the |
+
+ ![]() |
+
+ The
+ |
+
+ ![]() |
+
+ Use the
+ Do not + add an icon to the button. The main purpose of an icon is to quickly find a familiar action in a packed + toolbar or menu. Usually, no more than 3 buttons are placed nearby, their labels can be scanned quickly, + and icons are not required. + + |
+
The help button appears in the bottom-left corner of a dialog and shows help in a tooltip on hover, or
- opens a help
- dialog when clicking it. For more details, see Context help.
-
-
Use the
-
Do - not - add an icon to the button. The main purpose of an icon is to quickly find a familiar action in a packed - toolbar or menu. Usually, no more than 3 buttons are placed nearby, their labels can be scanned quickly, - and icons are not required. -
+
+ ![]() |
+
+ The help button appears in the bottom-left corner of a dialog and shows help in a tooltip on hover, or + opens a help + dialog when clicking it. For more details, see Context help. + |
+