initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / ui / dialog / PasswordDialog.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/PasswordDialog.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/PasswordDialog.java
new file mode 100644 (file)
index 0000000..8e5d5bf
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * 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();
+    }
+
+}