void (@NotNull JTextField textField, @NotNull Supplier<@NlsSafe String> defaultValueSupplier) { String defaultShellPath = defaultValueSupplier.get(); if (StringUtil.isEmptyOrSpaces(defaultShellPath)) return; textField.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(@NotNull DocumentEvent e) { textField.setForeground(defaultShellPath.equals(textField.getText()) ? getDefaultValueColor() : getChangedValueColor()); } }); if (textField instanceof JBTextField) { ((JBTextField)textField).getEmptyText().setText(defaultShellPath); } }