/*******************************************************************************
* Copyright (C) 2010, Jens Baumgart <jens.baumgart@sap.com>
* Copyright (C) 2010, Edwin Kempin <edwin.kempin@sap.com>
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package com.amazonaws.eclipse.core.egit;
import org.eclipse.egit.core.securestorage.UserPasswordCredentials;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIPreferences;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jgit.transport.URIish;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
* This class implements a login dialog asking for user and password for a given
* URI.
*/
@SuppressWarnings("restriction")
class LoginDialog extends Dialog {
private Text user;
private Text password;
private Button storeCheckbox;
private UserPasswordCredentials credentials;
private boolean storeInSecureStore;
private final URIish uri;
private boolean isUserSet;
private boolean changeCredentials = false;
private String oldUser;
LoginDialog(Shell shell, URIish uri) {
super(shell);
this.uri = uri;
isUserSet = uri.getUser() != null && uri.getUser().length() > 0;
}
@Override
protected Control createDialogArea(Composite parent) {
final Composite composite = (Composite) super.createDialogArea(parent);
composite.setLayout(new GridLayout(2, false));
getShell().setText(
changeCredentials ? UIText.LoginDialog_changeCredentials
: UIText.LoginDialog_login);
Label uriLabel = new Label(composite, SWT.NONE);
uriLabel.setText(UIText.LoginDialog_repository);
Text uriText = new Text(composite, SWT.READ_ONLY);
uriText.setText(uri.toString());
Label userLabel = new Label(composite, SWT.NONE);
userLabel.setText(UIText.LoginDialog_user);
if (isUserSet) {
user = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
user.setText(uri.getUser());
} else {
user = new Text(composite, SWT.BORDER);
if (oldUser != null)
user.setText(oldUser);
}
GridDataFactory.fillDefaults().grab(true, false).applyTo(user);
Label passwordLabel = new Label(composite, SWT.NONE);
passwordLabel.setText(UIText.LoginDialog_password);
password = new Text(composite, SWT.PASSWORD | SWT.BORDER);
GridDataFactory.fillDefaults().grab(true, false).applyTo(password);
if(!changeCredentials) {
Label storeLabel = new Label(composite, SWT.NONE);
storeLabel.setText(UIText.LoginDialog_storeInSecureStore);
storeCheckbox = new Button(composite, SWT.CHECK);
storeCheckbox.setSelection(Activator.getDefault()
.getPreferenceStore()
.getBoolean(UIPreferences.CLONE_WIZARD_STORE_SECURESTORE));
}
if (isUserSet)
password.setFocus();
else
user.setFocus();
return composite;
}
UserPasswordCredentials getCredentials() {
return credentials;
}
boolean getStoreInSecureStore() {
return storeInSecureStore;
}
@Override
protected void okPressed() {
if (user.getText().length() > 0) {
credentials = new UserPasswordCredentials(user.getText(),
password.getText());
if(!changeCredentials)
storeInSecureStore = storeCheckbox.getSelection();
}
super.okPressed();
}
void setChangeCredentials(boolean changeCredentials) {
this.changeCredentials = changeCredentials;
}
public void setOldUser(String oldUser) {
this.oldUser = oldUser;
}
}