--- /dev/null
+/*
+ * Created on 28-ago-2003
+ *
+ */
+package com.quantum.ui.dialog;
+
+import com.quantum.Messages;
+import com.quantum.model.PasswordFinder;
+
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author panic
+ *
+ */
+public class PasswordDialog extends InputDialog {
+
+ static class PasswordFinderImpl implements PasswordFinder {
+ private boolean passwordMeantToBeSaved = false;
+ private String password;
+ private boolean prompted = false;
+ private Shell shell;
+
+ PasswordFinderImpl(Shell shell) {
+ this.shell = shell;
+ }
+
+ protected void prompt() {
+ PasswordDialog dialog =
+ new PasswordDialog(
+ this.shell,
+ Messages.getString("MultiSQLServer.PasswordNotProvided"),
+ Messages.getString("MultiSQLServer.Enter_Password"),
+ "",
+ this);
+ dialog.open();
+ this.prompted = true;
+ }
+
+ /**
+ * @return
+ */
+ public String getPassword() {
+ if (!this.prompted) {
+ prompt();
+ }
+ return password;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isPasswordMeantToBeSaved() {
+ if (!this.prompted) {
+ prompt();
+ }
+ return passwordMeantToBeSaved;
+ }
+
+ /**
+ * @param string
+ */
+ public void setPassword(String string) {
+ password = string;
+ }
+
+ /**
+ * @param b
+ */
+ public void setPasswordMeantToBeSaved(boolean b) {
+ passwordMeantToBeSaved = b;
+ }
+
+ }
+
+ private PasswordFinderImpl passwordFinderImpl;
+
+ /**
+ * @param parentShell
+ * @param dialogTitle
+ * @param dialogMessage
+ * @param initialValue
+ * @param validator
+ */
+ protected PasswordDialog(
+ Shell parentShell,
+ String dialogTitle,
+ String dialogMessage,
+ String initialValue,
+ PasswordFinderImpl passwordFinderImpl) {
+ super(parentShell, dialogTitle, dialogMessage, initialValue, null);
+ this.passwordFinderImpl = passwordFinderImpl;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ protected Control createDialogArea(Composite parent) {
+
+ Control control = super.createDialogArea(parent);
+ Text text = getText();
+ text.setEchoChar('*');
+ return control;
+ }
+
+ public static PasswordFinder createPasswordFinder(Shell parentShell) {
+ PasswordFinderImpl passwordFinder = new PasswordFinderImpl(parentShell);
+ return passwordFinder;
+ }
+ /**
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ protected void okPressed() {
+ this.passwordFinderImpl.setPassword(getText().getText());
+ super.okPressed();
+ }
+
+}