diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java index 60e6bb91ea4d..50b3a0f20ae7 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubCreatePullRequestAction.java @@ -71,7 +71,7 @@ public class GithubCreatePullRequestAction extends DumbAwareAction { return; } - if (StringUtil.isEmptyOrSpaces(GithubSettings.getInstance().getLogin())) { + if (!GithubSettings.getInstance().isAuthConfigured()) { setVisibleEnabled(e, false, false); return; } diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java index a233c06a634f..bdbf6b0dc635 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java @@ -23,7 +23,6 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ThrowableConvertor; @@ -42,7 +41,9 @@ import git4idea.util.GitPreservingProcess; import icons.GithubIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.github.api.*; +import org.jetbrains.plugins.github.api.GithubApiUtil; +import org.jetbrains.plugins.github.api.GithubFullPath; +import org.jetbrains.plugins.github.api.GithubRepoDetailed; import java.io.IOException; import java.util.Collections; @@ -71,7 +72,7 @@ public class GithubRebaseAction extends DumbAwareAction { return; } - if (StringUtil.isEmptyOrSpaces(GithubSettings.getInstance().getLogin())) { + if (!GithubSettings.getInstance().isAuthConfigured()) { setVisibleEnabled(e, false, false); return; } diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java b/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java index 6ac53c59a92f..eea92d913e53 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubSettings.java @@ -23,9 +23,11 @@ import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.github.api.GithubApiUtil; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; import static org.jetbrains.plugins.github.GithubAuthData.AuthType; @@ -52,15 +54,15 @@ public class GithubSettings implements PersistentStateComponent TRUSTED_HOSTS = new ArrayList(); - public String CREATE_PULL_REQUEST_DEFAULT_BRANCH = ""; + @NotNull public Collection TRUSTED_HOSTS = new ArrayList(); + @NotNull public String CREATE_PULL_REQUEST_DEFAULT_BRANCH = ""; } public static GithubSettings getInstance() { @@ -72,8 +74,7 @@ public class GithubSettings implements PersistentStateComponent - + - - - - - - - - - - - - - - - - @@ -71,7 +55,7 @@ - + @@ -80,7 +64,7 @@ - + @@ -91,7 +75,7 @@ - + @@ -105,6 +89,22 @@ + + + + + + + + + + + + + + + + diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java index c4a975a52a03..ea565e03c5c9 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubLoginPanel.java @@ -21,6 +21,7 @@ import com.intellij.ui.HyperlinkAdapter; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.table.ComponentsListFocusTraversalPolicy; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.github.GithubAuthData; import org.jetbrains.plugins.github.GithubUtil; @@ -47,6 +48,7 @@ public class GithubLoginPanel { private JCheckBox mySavePasswordCheckBox; private JComboBox myAuthTypeComboBox; private JLabel myPasswordLabel; + private JLabel myLoginLabel; private final static String AUTH_PASSWORD = "Password"; private final static String AUTH_TOKEN = "Token"; @@ -79,8 +81,21 @@ public class GithubLoginPanel { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { String item = e.getItem().toString(); - myPasswordLabel.setText(item + ":"); - mySavePasswordCheckBox.setText("Save " + item.toLowerCase()); + if (AUTH_PASSWORD.equals(item)) { + myPasswordLabel.setText("Password:"); + mySavePasswordCheckBox.setText("Save password"); + myLoginLabel.setVisible(true); + myLoginTextField.setVisible(true); + } + if (AUTH_TOKEN.equals(item)) { + myPasswordLabel.setText("Token:"); + mySavePasswordCheckBox.setText("Save token"); + myLoginLabel.setVisible(false); + myLoginTextField.setVisible(false); + } + if (dialog.isShowing()) { + dialog.pack(); + } } } }); @@ -103,7 +118,7 @@ public class GithubLoginPanel { myHostTextField.setText(host); } - public void setLogin(@NotNull String login) { + public void setLogin(@Nullable String login) { myLoginTextField.setText(login); } diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java index 03e3b08801ef..f4c312d11b13 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsConfigurable.java @@ -46,7 +46,7 @@ public class GithubSettingsConfigurable implements SearchableConfigurable, VcsCo public void apply() throws ConfigurationException { if (mySettingsPane != null) { - mySettings.setCredentials(mySettingsPane.getHost(), mySettingsPane.getLogin(), mySettingsPane.getAuthData(), true); + mySettings.setCredentials(mySettingsPane.getHost(), mySettingsPane.getAuthData(), true); mySettingsPane.resetCredentialsModification(); } } diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.form b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.form index 81400ae3000e..cc283855bc64 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.form +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.form @@ -16,7 +16,7 @@ - + diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java index c6a18378802e..c1f2037bb481 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java @@ -22,8 +22,11 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.HyperlinkAdapter; import org.jetbrains.annotations.NotNull; -import org.jetbrains.plugins.github.*; -import org.jetbrains.plugins.github.api.GithubUserDetailed; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.github.GithubAuthData; +import org.jetbrains.plugins.github.GithubAuthenticationException; +import org.jetbrains.plugins.github.GithubSettings; +import org.jetbrains.plugins.github.GithubUtil; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -53,6 +56,7 @@ public class GithubSettingsPanel { private JButton myTestButton; private JTextField myHostTextField; private JComboBox myAuthTypeComboBox; + private JLabel myLoginLabel; private boolean myCredentialsModified; @@ -71,18 +75,11 @@ public class GithubSettingsPanel { myAuthTypeComboBox.addItem(AUTH_PASSWORD); myAuthTypeComboBox.addItem(AUTH_TOKEN); - reset(); - myTestButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { - GithubUserDetailed user = GithubUtil.checkAuthData(getAuthData()); - if (!getLogin().equalsIgnoreCase(user.getLogin())) { - setLogin(user.getLogin()); - Messages.showInfoMessage(myPane, "Login doesn't match credentials. Fixed", "Success"); - return; - } + GithubUtil.checkAuthData(getAuthData()); Messages.showInfoMessage(myPane, "Connection successful", "Success"); } catch (GithubAuthenticationException ex) { @@ -116,24 +113,21 @@ public class GithubSettingsPanel { @Override public void insertUpdate(DocumentEvent e) { if (!myCredentialsModified) { - setPassword(""); - myCredentialsModified = true; + erasePassword(); } } @Override public void removeUpdate(DocumentEvent e) { if (!myCredentialsModified) { - setPassword(""); - myCredentialsModified = true; + erasePassword(); } } @Override public void changedUpdate(DocumentEvent e) { if (!myCredentialsModified) { - setPassword(""); - myCredentialsModified = true; + erasePassword(); } } }; @@ -145,8 +139,7 @@ public class GithubSettingsPanel { @Override public void focusGained(FocusEvent e) { if (!myCredentialsModified && !getPassword().isEmpty()) { - setPassword(""); - myCredentialsModified = true; + erasePassword(); } } @@ -158,10 +151,28 @@ public class GithubSettingsPanel { myAuthTypeComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - setPassword(""); - myCredentialsModified = true; + if (e.getStateChange() == ItemEvent.SELECTED) { + String item = e.getItem().toString(); + if (AUTH_PASSWORD.equals(item)) { + myLoginLabel.setVisible(true); + myLoginTextField.setVisible(true); + } + if (AUTH_TOKEN.equals(item)) { + myLoginLabel.setVisible(false); + myLoginTextField.setVisible(false); + } + myPane.validate(); + erasePassword(); + } } }); + + reset(); + } + + private void erasePassword() { + setPassword(""); + myCredentialsModified = true; } public JComponent getPanel() { @@ -182,7 +193,7 @@ public class GithubSettingsPanel { myHostTextField.setText(host); } - public void setLogin(@NotNull final String login) { + public void setLogin(@Nullable final String login) { myLoginTextField.setText(login); } @@ -232,18 +243,15 @@ public class GithubSettingsPanel { } public void reset() { - String login = mySettings.getLogin(); setHost(mySettings.getHost()); - setLogin(login); - setPassword(login.isEmpty() ? "" : DEFAULT_PASSWORD_TEXT); + setLogin(mySettings.getLogin()); + setPassword(mySettings.isAuthConfigured() ? DEFAULT_PASSWORD_TEXT : ""); setAuthType(mySettings.getAuthType()); resetCredentialsModification(); } public boolean isModified() { - return !Comparing.equal(mySettings.getHost(), getHost()) || - !Comparing.equal(mySettings.getLogin(), getLogin()) || - myCredentialsModified; + return !Comparing.equal(mySettings.getHost(), getHost()) || myCredentialsModified; } public void resetCredentialsModification() { diff --git a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java index 21c78af951dd..ee5233c8057e 100644 --- a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java +++ b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java @@ -173,7 +173,7 @@ public abstract class GithubTest extends UsefulTestCase { myAuth = GithubAuthData.createBasicAuth(host, login1, password); myGitHubSettings = GithubSettings.getInstance(); - myGitHubSettings.setCredentials(myHost, myLogin1, myAuth, false); + myGitHubSettings.setCredentials(myHost, myAuth, false); myDialogManager = (TestDialogManager)ServiceManager.getService(DialogManager.class); myNotificator = (TestNotificator)ServiceManager.getService(myProject, Notificator.class);