# Built-In Button UI guidelines on using built-in buttons. A built-in button is an icon placed inside an input control. ![Built-in-button](built_in_button.png){width=706} To place a button inside a text field, use [`ExtendableTextField`](%gh-ic%/platform/platform-api/src/com/intellij/ui/components/fields/ExtendableTextField.java) and its `addExtension()` method. ## When to use Use a built-in button instead of adding a separate [button](button.topic) on the right where possible to save space and declutter the interface:
Correct Browse button Incorrect Incorrect browse button
### Browse Use the **Browse** icon to select a single file or a folder from the disc. Browse [//]: # (An input field with browse button: [`TextFieldWithBrowseButton`](%gh-ic%/platform/platform-api/src/com/intellij/openapi/ui/TextFieldWithBrowseButton.java))

A combo box with the Browse button:

```kotlin val browseExtension = ExtendableTextComponent.Extension.create( AllIcons.General.OpenDisk, AllIcons.General.OpenDiskHover, "Open file", { System.out.println("Browse file clicked") } ) val extComboBox = ComboBox(STRING_VALUES) extComboBox.setEditable(true) extComboBox.setEditor(object : BasicComboBoxEditor() { override fun createEditorComponent(): JTextField { val ecbEditor = ExtendableTextField() ecbEditor.addExtension(browseExtension) ecbEditor.setBorder(null) return ecbEditor } }) ``` ```java ExtendableTextComponent.Extension browseExtension = ExtendableTextComponent.Extension.create( AllIcons.General.OpenDisk, AllIcons.General.OpenDiskHover, "Open file", () -> System.out.println("Browse file clicked") ); ComboBox extComboBox = new ComboBox<>(STRING_VALUES); extComboBox.setEditable(true); extComboBox.setEditor(new BasicComboBoxEditor() { @Override protected JTextField createEditorComponent() { ExtendableTextField ecbEditor = new ExtendableTextField(); ecbEditor.addExtension(browseExtension); ecbEditor.setBorder(null); return ecbEditor; } }); ```
### Expand a field If the input text can be long and the place is constrained, use an input field with the **Expand** button: ![Collapsed built-in button](built_in_button_collapsed.png){width=706} Expanded field: ![Expanded built-in button](built_in_button_expanded.png){width=706} ### List values Use the **List** icon to select a value from the list of objects such as classes, methods, or environment variables: ![List of values](built_in_button_list.png){width=706} ### Add value Use the **Add** button to select multiple values, such as files, variables, folder paths. The selected values will be added to the existing list. ![Add a value to the field](built_in_button_add.png){width=706} ## When not to use ### Cut, Copy, Paste Do not use the **Copy**, **Paste** or **Cut** button. Instead, make sure these actions are available on pressing Cmd/Ctrl+X, Cmd/Ctrl+C, and Cmd/Ctrl+V shortcuts or from the context menu.
Correct Browse button Incorrect Incorrect browse button
### Help, Info Do not use the **Help** or **Info** buttons to open an external link or a hint. Use the [context help](context_help.md) instead.
Correct Context help Incorrect Incorrect browse button
## Shortcut The shortcut for a built-in button is Shift+Enter. The shortcut activates only when the input field with the button is focused.