From 9eef326c1992732731a96b9a96ab9407132679b7 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Mon, 28 Jan 2019 17:38:13 +0300 Subject: [PATCH] terminal: show default path for empty fields (shell path and starting directory) --- .../terminal/TerminalOptionsProvider.kt | 2 +- .../TerminalProjectOptionsProvider.kt | 21 ----- .../terminal/TerminalSettingsPanel.java | 77 ++++++++++--------- 3 files changed, 41 insertions(+), 59 deletions(-) diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalOptionsProvider.kt b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalOptionsProvider.kt index 45ce42d35044..3507f50f5184 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalOptionsProvider.kt +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalOptionsProvider.kt @@ -126,7 +126,7 @@ class TerminalOptionsProvider : PersistentStateComponent customComponents = ContainerUtil.newArrayList(); for (LocalTerminalCustomizer c : LocalTerminalCustomizer.EP_NAME.getExtensions()) { @@ -124,6 +92,41 @@ public class TerminalSettingsPanel { return myWholePanel; } + private void configureStartDirectoryField() { + myStartDirectoryField.addBrowseFolderListener( + "", + "Starting directory", + null, + FileChooserDescriptorFactory.createSingleFolderDescriptor(), + TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT + ); + setupTextFieldDefaultValue(myStartDirectoryField.getTextField(), () -> myProjectOptionsProvider.getDefaultStartingDirectory()); + } + + private void configureShellPathField() { + myShellPathField.addBrowseFolderListener( + "", + "Shell executable path", + null, + FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor(), + TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT + ); + setupTextFieldDefaultValue(myShellPathField.getTextField(), () -> myOptionsProvider.defaultShellPath()); + } + + private void setupTextFieldDefaultValue(@NotNull JTextField textField, @NotNull Supplier defaultValueSupplier) { + textField.getDocument().addDocumentListener(new DocumentAdapter() { + @Override + protected void textChanged(@NotNull DocumentEvent e) { + String defaultShellPath = defaultValueSupplier.get(); + textField.setForeground(defaultShellPath.equals(textField.getText()) ? getDefaultValueColor() : getChangedValueColor()); + } + }); + if (textField instanceof JBTextField) { + ((JBTextField)textField).getEmptyText().setText(defaultValueSupplier.get()); + } + } + public boolean isModified() { return !Comparing.equal(myShellPathField.getText(), myOptionsProvider.getShellPath()) || !Comparing.equal(myStartDirectoryField.getText(), StringUtil.notNullize(myProjectOptionsProvider.getStartingDirectory()))