package com.mobilesorcery.sdk.ui;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
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.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class PasswordDialog extends Dialog {
private final class InternalListener implements Listener {
public void handleEvent(Event event) {
updateUI();
}
}
private Text pwdText;
private String password;
private Button rememberPwd;
private boolean shouldRememberPassword;
private Button showInClearText;
public PasswordDialog(Shell parentShell) {
super(parentShell);
}
public Control createDialogArea(Composite parent) {
Composite main = (Composite) super.createDialogArea(parent);
main.setLayout(new GridLayout(2, false));
InternalListener listener = new InternalListener();
Label pwdLabel = new Label(main, SWT.NONE);
pwdLabel.setText("Password:");
pwdText = new Text(main, SWT.SINGLE | SWT.BORDER);
pwdText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
pwdText.setText(password == null ? "" : password);
Label spacer1 = new Label(main, SWT.NONE);
showInClearText = new Button(main, SWT.CHECK);
showInClearText.setText("&Show password");
Label spacer2 = new Label(main, SWT.NONE);
rememberPwd = new Button(main, SWT.CHECK);
rememberPwd.setText("&Remember this password");
updateUI();
pwdText.addListener(SWT.Modify, listener);
showInClearText.addListener(SWT.Selection, listener);
getShell().setText("Password");
return main;
}
protected void updateUI() {
char echoChar = showInClearText.getSelection() ? '\0' : '\u2022';
pwdText.setEchoChar(echoChar);
rememberPwd.setEnabled(pwdText.getText().length() > 0);
}
public void okPressed() {
password = pwdText.getText();
shouldRememberPassword = password.length() > 0 && rememberPwd.getSelection();
super.okPressed();
}
public void setInitialPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public boolean shouldRememberPassword() {
return shouldRememberPassword;
}
}