diff --git a/src/net/oschina/git/views/Config.java b/src/net/oschina/git/views/Config.java index 217c400afd8708552582a990cde4982e13d1af31..31135fd58f113f47ea4a02c97f9689d2beaf1e4b 100644 --- a/src/net/oschina/git/views/Config.java +++ b/src/net/oschina/git/views/Config.java @@ -199,107 +199,68 @@ public class Config extends Dialog { return container; } - /** - * Create contents of the button bar. - * - * @param parent - */ @Override - protected void createButtonsForButtonBar(final Composite parent) { - Button cancel = createButton(parent, IDialogConstants.CANCEL_ID, i18n.Cancel, false); - help = createButton(parent, IDialogConstants.NO_ID, i18n.Help, true); - help.addMouseListener(new MouseAdapter() { - @Override - public void mouseUp(MouseEvent e) { - try { - PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser() - .openURL(new URL(RemoteApi.helpUrl)); - } catch (PartInitException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (MalformedURLException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - } - }); - Button login = createButton(parent, IDialogConstants.NO_ID, i18n.Login, true); - login.addMouseListener(new MouseAdapter() { - @Override - public void mouseDown(MouseEvent e) { - String username = email.getText(); - String password = Password.getText(); - String savedPrivate_token = UserData.getValue("private_token"); - if (username.isEmpty() || password.isEmpty()) { - MessageDialog.openError(mainComposite.getShell(), i18n.Unauthorized, i18n.loginError); - return; - } - String private_token = null; - try { - List list = new ArrayList(); - list.add(new BasicNameValuePair("email", username)); - list.add(new BasicNameValuePair("password", password)); - String loginRep = HttpUtil.post(RemoteApi.login, list, parent.getShell()); - if (!loginRep.contains("private_token")) { - MessageDialog.openError(mainComposite.getShell(), "Error", i18n.passwordWrong); - return; - } - String responseHtml = null; - if (savedPrivate_token == null || savedPrivate_token.equals("N/A")) { - responseHtml = HttpUtil.post(RemoteApi.login, list, parent.getShell()); - if (responseHtml != null) { - private_token = JsonUtil.getJsonValueFromStr(responseHtml, "private_token"); - } - } else { - String response = HttpUtil.get(RemoteApi.getProjects + "?private_token=" + savedPrivate_token); - if (response.contains("message")) { - String message = JsonUtil.getJsonValueFromStr(response, "message"); - if (message.equals("401 Unauthorized")) { - responseHtml = HttpUtil.post(RemoteApi.login, list, parent.getShell()); - if (responseHtml != null) { - private_token = JsonUtil.getJsonValueFromStr(responseHtml, "private_token"); - } - } - } else { - private_token = savedPrivate_token; - } - } - if (private_token != null && !private_token.isEmpty()) { - CloneRepository cr = null; - if (saved) { - UserData.saveKeyValue("password", password); - UserData.saveKeyValue("username", username); - UserData.saveKeyValue("private_token", private_token); - } - if (btnCloneType.getSelectionIndex() == 1) { - UserData.saveKeyValue("cloneType", "ssh"); - cr = new CloneRepository(WindowsHandler.config.getShell().getParent().getShell(), - private_token); - } else if (btnCloneType.getSelectionIndex() == 0) { - if (username.isEmpty() || password.isEmpty()) { - MessageDialog.openError(mainComposite.getShell(), "Error", i18n.loginError); - return; - } - UserData.saveKeyValue("cloneType", "http"); - cr = new CloneRepository(WindowsHandler.config.getShell().getParent().getShell(), - private_token, username, password); - } - WindowsHandler.cloneWindow = cr; - WindowsHandler.root = WindowsHandler.config.getShell().getParent(); - WindowsHandler.config.getShell().dispose(); - cr.open(); - } - } catch (ConnectTimeoutException e1) { - // TODO Auto-generated catch block - MessageDialog.openError(mainComposite.getShell(), "Error", "Login Timeout"); - } catch (ClientProtocolException e1) { - // TODO Auto-generated catch block - MessageDialog.openError(mainComposite.getShell(), "Error", e1.getMessage()); - } catch (IOException e1) { - // TODO Auto-generated catch block - MessageDialog.openError(mainComposite.getShell(), "Error", "Network Issues"); - } - } - }); - } + protected void createButtonsForButtonBar(final Composite parent) { + Button cancel = createButton(parent, IDialogConstants.CANCEL_ID, i18n.Cancel, false); + help = createButton(parent, IDialogConstants.NO_ID, i18n.Help, true); + // Help button code... + Button login = createButton(parent, IDialogConstants.NO_ID, i18n.Login, true); + login.addMouseListener(new MouseAdapter() { + @Override + public void mouseDown(MouseEvent e) { + loginProcess(); + } + }); + } + + private void loginProcess() { + String username = email.getText(); + String password = Password.getText(); + if (username.isEmpty() || password.isEmpty()) { + MessageDialog.openError(mainComposite.getShell(), i18n.Unauthorized, i18n.loginError); + return; + } + + try { + String privateToken = getPrivateTokenFromServer(username, password); + if (privateToken != null && !privateToken.isEmpty()) { + CloneRepository cr = null; + if (saved) { + UserData.saveKeyValue("password", password); + UserData.saveKeyValue("username", username); + UserData.saveKeyValue("private_token", privateToken); + } + if (btnCloneType.getSelectionIndex() == 1) { + UserData.saveKeyValue("cloneType", "ssh"); + cr = new CloneRepository(WindowsHandler.config.getShell().getParent().getShell(), privateToken); + } else if (btnCloneType.getSelectionIndex() == 0) { + UserData.saveKeyValue("cloneType", "http"); + cr = new CloneRepository(WindowsHandler.config.getShell().getParent().getShell(), + privateToken, username, password); + } + WindowsHandler.cloneWindow = cr; + WindowsHandler.root = WindowsHandler.config.getShell().getParent(); + WindowsHandler.config.getShell().dispose(); + cr.open(); + } + } catch (ConnectTimeoutException e) { + MessageDialog.openError(mainComposite.getShell(), "Error", "Login Timeout"); + } catch (ClientProtocolException e) { + MessageDialog.openError(mainComposite.getShell(), "Error", e.getMessage()); + } catch (IOException e) { + MessageDialog.openError(mainComposite.getShell(), "Error", "Network Issues"); + } + } + + private String getPrivateTokenFromServer(String username, String password) + throws IOException, ClientProtocolException { + List list = new ArrayList(); + list.add(new BasicNameValuePair("email", username)); + list.add(new BasicNameValuePair("password", password)); + String loginResponse = HttpUtil.post(RemoteApi.login, list, parent.getShell()); + if (loginResponse != null && loginResponse.contains("private_token")) { + return JsonUtil.getJsonValueFromStr(loginResponse, "private_token"); + } + return null; + } }