IDEA-110685 Github: remember SavePassword checkbox state

This commit is contained in:
Aleksey Pivovarov
2013-07-18 15:03:55 +04:00
parent 97f251e26f
commit 08dab63e2e
3 changed files with 40 additions and 14 deletions
@@ -58,6 +58,7 @@ public class GithubSettings implements PersistentStateComponent<GithubSettings.S
public boolean ANONYMOUS_GIST = false;
public boolean OPEN_IN_BROWSER_GIST = true;
public boolean PRIVATE_GIST = true;
public boolean SAVE_PASSWORD = true;
public Collection<String> TRUSTED_HOSTS = new ArrayList<String>();
}
@@ -105,6 +106,15 @@ public class GithubSettings implements PersistentStateComponent<GithubSettings.S
return myState.PRIVATE_GIST;
}
public boolean getSavePasswordDefault() {
return myState.SAVE_PASSWORD;
}
public boolean isSavePasswordMakesSense() {
final PasswordSafeImpl passwordSafe = (PasswordSafeImpl)PasswordSafe.getInstance();
return passwordSafe.getSettings().getProviderType() == PasswordSafeSettings.ProviderType.MASTER_PASSWORD;
}
public void setAnonymousGist(final boolean anonymousGist) {
myState.ANONYMOUS_GIST = anonymousGist;
}
@@ -113,6 +123,10 @@ public class GithubSettings implements PersistentStateComponent<GithubSettings.S
myState.PRIVATE_GIST = privateGist;
}
public void setSavePasswordDefault(final boolean savePassword) {
myState.SAVE_PASSWORD = savePassword;
}
public void setOpenInBrowserGist(final boolean openInBrowserGist) {
myState.OPEN_IN_BROWSER_GIST = openInBrowserGist;
}
@@ -21,15 +21,24 @@ public class GithubLoginDialog extends DialogWrapper {
protected static final Logger LOG = GithubUtil.LOG;
protected final GithubLoginPanel myGithubLoginPanel;
protected final GithubSettings mySettings;
public GithubLoginDialog(@Nullable final Project project) {
super(project, true);
myGithubLoginPanel = new GithubLoginPanel(this);
final GithubSettings settings = GithubSettings.getInstance();
myGithubLoginPanel.setHost(settings.getHost());
myGithubLoginPanel.setLogin(settings.getLogin());
myGithubLoginPanel.setAuthType(settings.getAuthType());
mySettings = GithubSettings.getInstance();
myGithubLoginPanel.setHost(mySettings.getHost());
myGithubLoginPanel.setLogin(mySettings.getLogin());
myGithubLoginPanel.setAuthType(mySettings.getAuthType());
if (mySettings.isSavePasswordMakesSense()) {
myGithubLoginPanel.setSavePasswordSelected(mySettings.getSavePasswordDefault());
}
else {
myGithubLoginPanel.setSavePasswordVisibleEnabled(false);
myGithubLoginPanel.setSavePasswordSelected(true);
}
setTitle("Login to GitHub");
setOKButtonText("Login");
@@ -62,6 +71,9 @@ public class GithubLoginDialog extends DialogWrapper {
try {
GithubUtil.checkAuthData(auth, myGithubLoginPanel.getLogin());
saveCredentials(auth);
if (mySettings.isSavePasswordMakesSense()) {
mySettings.setSavePasswordDefault(myGithubLoginPanel.isSavePasswordSelected());
}
super.doOKAction();
}
catch (IOException e) {
@@ -16,9 +16,6 @@
package org.jetbrains.plugins.github.ui;
import com.intellij.ide.BrowserUtil;
import com.intellij.ide.passwordSafe.PasswordSafe;
import com.intellij.ide.passwordSafe.config.PasswordSafeSettings;
import com.intellij.ide.passwordSafe.impl.PasswordSafeImpl;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.HyperlinkAdapter;
import com.intellij.util.ui.UIUtil;
@@ -70,12 +67,6 @@ public class GithubLoginPanel {
myAuthTypeComboBox.addItem(AUTH_PASSWORD);
myAuthTypeComboBox.addItem(AUTH_TOKEN);
final PasswordSafeImpl passwordSafe = (PasswordSafeImpl)PasswordSafe.getInstance();
if (passwordSafe.getSettings().getProviderType() != PasswordSafeSettings.ProviderType.MASTER_PASSWORD) {
mySavePasswordCheckBox.setVisible(false);
mySavePasswordCheckBox.setSelected(true);
}
}
public JComponent getPanel() {
@@ -108,6 +99,15 @@ public class GithubLoginPanel {
myAuthTypeComboBox.setEnabled(false);
}
public void setSavePasswordSelected(boolean savePassword) {
mySavePasswordCheckBox.setSelected(savePassword);
}
public void setSavePasswordVisibleEnabled(boolean visible) {
mySavePasswordCheckBox.setVisible(visible);
mySavePasswordCheckBox.setEnabled(visible);
}
@NotNull
public String getHost() {
return myHostTextField.getText().trim();
@@ -123,7 +123,7 @@ public class GithubLoginPanel {
return String.valueOf(myPasswordField.getPassword());
}
public boolean shouldSavePassword() {
public boolean isSavePasswordSelected() {
return mySavePasswordCheckBox.isSelected();
}