You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2013/03/26 17:43:45 UTC

svn commit: r1461216 - in /directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui: UIAuthHandler.java dialogs/CredentialsDialog.java dialogs/PasswordDialog.java

Author: pamarcelot
Date: Tue Mar 26 16:43:44 2013
New Revision: 1461216

URL: http://svn.apache.org/r1461216
Log:
Fix for DIRSTUDIO-895 (Add a 'Show password' checkbox to the CredentialsDialog used to ask the connection's password when it's not saved).
Also renamed the class from 'CredentialsDialog' to 'PasswordDialog'.

Added:
    directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/PasswordDialog.java
      - copied, changed from r1459201, directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/CredentialsDialog.java
Removed:
    directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/CredentialsDialog.java
Modified:
    directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/UIAuthHandler.java

Modified: directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/UIAuthHandler.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/UIAuthHandler.java?rev=1461216&r1=1461215&r2=1461216&view=diff
==============================================================================
--- directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/UIAuthHandler.java (original)
+++ directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/UIAuthHandler.java Tue Mar 26 16:43:44 2013
@@ -25,7 +25,7 @@ import org.apache.directory.studio.conne
 import org.apache.directory.studio.connection.core.Credentials;
 import org.apache.directory.studio.connection.core.IAuthHandler;
 import org.apache.directory.studio.connection.core.ICredentials;
-import org.apache.directory.studio.connection.ui.dialogs.CredentialsDialog;
+import org.apache.directory.studio.connection.ui.dialogs.PasswordDialog;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.PlatformUI;
 
@@ -60,15 +60,15 @@ public class UIAuthHandler implements IA
             {
                 public void run()
                 {
-                    CredentialsDialog dialog = new CredentialsDialog(
+                    PasswordDialog dialog = new PasswordDialog(
                         PlatformUI.getWorkbench().getDisplay().getActiveShell(),
                         NLS.bind(
                             Messages.getString( "UIAuthHandler.EnterPasswordFor" ), new String[] { connectionParameter.getName() } ), //$NON-NLS-1$
                         NLS.bind(
-                            Messages.getString( "UIAuthHandler.PleaseEnterPasswordOfUser" ), connectionParameter.getBindPrincipal() ), "", null ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-                    if ( dialog.open() == CredentialsDialog.OK )
+                            Messages.getString( "UIAuthHandler.PleaseEnterPasswordOfUser" ), connectionParameter.getBindPrincipal() ), "" ); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+                    if ( dialog.open() == PasswordDialog.OK )
                     {
-                        pw[0] = dialog.getValue();
+                        pw[0] = dialog.getPassword();
                     }
                     else
                     {

Copied: directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/PasswordDialog.java (from r1459201, directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/CredentialsDialog.java)
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/PasswordDialog.java?p2=directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/PasswordDialog.java&p1=directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/CredentialsDialog.java&r1=1459201&r2=1461216&rev=1461216&view=diff
==============================================================================
--- directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/CredentialsDialog.java (original)
+++ directory/studio/trunk/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/PasswordDialog.java Tue Mar 26 16:43:44 2013
@@ -21,44 +21,149 @@
 package org.apache.directory.studio.connection.ui.dialogs;
 
 
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
+import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+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;
 
 
 /**
- * The CredentialsDialog is used to ask the user for credentials (paasword).
+ * The PasswordDialog is used to ask the user for password (credentials).
+ * <p>
+ * It has a useful checkbox that can show/hide the typed password.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CredentialsDialog extends InputDialog
+public class PasswordDialog extends Dialog
 {
+    /** The title of the dialog */
+    private String title;
+
+    /** The message to display, or <code>null</code> if none */
+    private String message;
+
+    /** The input value; the empty string by default */
+    private String value = "";//$NON-NLS-1$
+
+    // UI Widgets
+    private Text text;
+    private Button showPasswordCheckbox;
+
 
     /**
      * Creates a new instance of CredentialsDialog.
      * 
      * @param parentShell the parent shell
-     * @param dialogTitle the dialog title
-     * @param dialogMessage the dialog message
+     * @param title the title
+     * @param message the dialog message
      * @param initialValue the initial value
-     * @param validator the validator
      */
-    public CredentialsDialog( Shell parentShell, String dialogTitle, String dialogMessage, String initialValue,
-        IInputValidator validator )
+    public PasswordDialog( Shell parentShell, String title, String message, String initialValue )
+    {
+        super( parentShell );
+        this.title = title;
+        this.message = message;
+
+        if ( initialValue == null )
+        {
+            value = "";//$NON-NLS-1$
+        }
+        else
+        {
+            value = initialValue;
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void configureShell( Shell shell )
+    {
+        super.configureShell( shell );
+
+        if ( title != null )
+        {
+            shell.setText( title );
+        }
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void buttonPressed( int buttonId )
     {
-        super( parentShell, dialogTitle, dialogMessage, initialValue, validator );
+        if ( buttonId == IDialogConstants.OK_ID )
+        {
+            value = text.getText();
+        }
+        else
+        {
+            value = null;
+        }
+        super.buttonPressed( buttonId );
     }
 
 
     /**
-     * @see org.eclipse.jface.dialogs.InputDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+     * {@inheritDoc}
      */
     protected Control createDialogArea( Composite parent )
     {
         Composite composite = ( Composite ) super.createDialogArea( parent );
-        super.getText().setEchoChar( '\u2022' );
+
+        if ( message != null )
+        {
+            Label label = BaseWidgetUtils.createWrappedLabel( composite, message, 1 );
+            GridData data = new GridData( GridData.GRAB_HORIZONTAL
+                | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
+                | GridData.VERTICAL_ALIGN_CENTER );
+            data.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
+            label.setLayoutData( data );
+        }
+
+        // Password Text
+        text = BaseWidgetUtils.createText( composite, value, 1 );
+        text.setEchoChar( '\u2022' );
+
+        // Show Password Checkbox
+        showPasswordCheckbox = BaseWidgetUtils.createCheckbox( composite, "Show password", 1 );
+        showPasswordCheckbox.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                if ( showPasswordCheckbox.getSelection() )
+                {
+                    text.setEchoChar( '\0' );
+                }
+                else
+                {
+                    text.setEchoChar( '\u2022' );
+                }
+            }
+        } );
+
+        applyDialogFont( composite );
         return composite;
     }
+
+
+    /**
+     * Returns the string typed into this password dialog.
+     * 
+     * @return the input string
+     */
+    public String getPassword()
+    {
+        return value;
+    }
 }