diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.form b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.form index 846a47a6edb9..67992456ffa6 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.form +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.form @@ -1,6 +1,6 @@
diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.java index 8ee52ff91456..e9d81469a9d9 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConfigurable.java @@ -18,12 +18,13 @@ public class IpnbConfigurable implements SearchableConfigurable { private JBTextField myFieldUrl; private TextFieldWithBrowseButton myWorkingDirField; private JBTextField myArgumentsField; + private JPasswordField myPasswordField; + private JBTextField myUsernameField; @NotNull private final Project myProject; public IpnbConfigurable(@NotNull Project project) { myProject = project; - final FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory - .createSingleFolderDescriptor(); + final FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); myWorkingDirField.addBrowseFolderListener("Select Working Directory", null, myProject, fileChooserDescriptor); myFieldUrl.setText(IpnbSettings.getInstance(myProject).getURL()); myWorkingDirField.setText(IpnbSettings.getInstance(myProject).getWorkingDirectory()); @@ -56,7 +57,18 @@ public class IpnbConfigurable implements SearchableConfigurable { final String workingDirectory = StringUtil.notNullize(myWorkingDirField.getText()); final String arguments = StringUtil.notNullize(myArgumentsField.getText()); - return !url.equals(oldUrl) || !workingDirectory.equals(oldWorkingDirectory) || !arguments.equals(oldArguments); + return !url.equals(oldUrl) || !workingDirectory.equals(oldWorkingDirectory) || !arguments.equals(oldArguments) + || isCredentialsModified(); + } + + public boolean isCredentialsModified() { + final String oldUsername = StringUtil.notNullize(IpnbSettings.getInstance(myProject).getUsername()); + final String oldPassword = IpnbSettings.getInstance(myProject).getPassword(); + + final String username = StringUtil.notNullize(myUsernameField.getText()); + final String password = StringUtil.notNullize(String.valueOf(myPasswordField.getPassword())); + + return !oldUsername.equals(username) || !oldPassword.equals(password); } @Override @@ -66,6 +78,11 @@ public class IpnbConfigurable implements SearchableConfigurable { IpnbSettings.getInstance(myProject).setURL(url); IpnbSettings.getInstance(myProject).setWorkingDirectory(myWorkingDirField.getText()); IpnbSettings.getInstance(myProject).setArguments(myArgumentsField.getText()); + + if (isCredentialsModified()) { + IpnbSettings.getInstance(myProject).setUsername(myUsernameField.getText()); + IpnbSettings.getInstance(myProject).setPassword(String.valueOf(myPasswordField.getPassword())); + } } @Override @@ -73,6 +90,8 @@ public class IpnbConfigurable implements SearchableConfigurable { myFieldUrl.setText(IpnbSettings.getInstance(myProject).getURL()); myWorkingDirField.setText(IpnbSettings.getInstance(myProject).getWorkingDirectory()); myArgumentsField.setText(IpnbSettings.getInstance(myProject).getArguments()); + myUsernameField.setText(IpnbSettings.getInstance(myProject).getUsername()); + myPasswordField.setText(IpnbSettings.getInstance(myProject).getPassword()); } @Override diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbSettings.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbSettings.java index 91ba8fc79785..33071d3c228c 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbSettings.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbSettings.java @@ -1,9 +1,11 @@ package org.jetbrains.plugins.ipnb.configuration; +import com.intellij.ide.passwordSafe.PasswordSafe; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.components.State; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.xmlb.XmlSerializerUtil; import com.intellij.util.xmlb.annotations.Transient; import org.jetbrains.annotations.NotNull; @@ -11,10 +13,12 @@ import org.jetbrains.annotations.Nullable; @State(name = "IpnbSettings") public class IpnbSettings implements PersistentStateComponent