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 2012/02/20 15:34:35 UTC

svn commit: r1291282 - in /directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common: dialogs/RenameEntryDialog.java widgets/DnBuilderWidget.java

Author: pamarcelot
Date: Mon Feb 20 14:34:35 2012
New Revision: 1291282

URL: http://svn.apache.org/viewvc?rev=1291282&view=rev
Log:
Fix for DIRSTUDIO-783 (The 'Rename Entry' dialog doesn't resize automatically when adding or removing RDN parts).

Modified:
    directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/RenameEntryDialog.java
    directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/DnBuilderWidget.java

Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/RenameEntryDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/RenameEntryDialog.java?rev=1291282&r1=1291281&r2=1291282&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/RenameEntryDialog.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/RenameEntryDialog.java Mon Feb 20 14:34:35 2012
@@ -69,6 +69,9 @@ public class RenameEntryDialog extends D
     /** The new rdn. */
     private Rdn rdn;
 
+    /** The initialization flag */
+    private boolean initialized = false;
+
 
     /**
      * Creates a new instance of RenameEntryDialog.
@@ -151,6 +154,9 @@ public class RenameEntryDialog extends D
         dnBuilderWidget.setInput( entry.getBrowserConnection(), allAttributeNames, entry.getRdn(), null );
 
         applyDialogFont( composite );
+
+        initialized = true;
+
         return composite;
     }
 
@@ -164,6 +170,12 @@ public class RenameEntryDialog extends D
         {
             okButton.setEnabled( dnBuilderWidget.getRdn() != null );
         }
+
+        // Forcing the redraw of the whole dialog
+        if ( initialized && ( getShell() != null ) && ( !getShell().isDisposed() ) )
+        {
+            getShell().pack();
+        }
     }
 
 

Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/DnBuilderWidget.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/DnBuilderWidget.java?rev=1291282&r1=1291281&r2=1291282&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/DnBuilderWidget.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/DnBuilderWidget.java Mon Feb 20 14:34:35 2012
@@ -41,6 +41,7 @@ import org.eclipse.swt.events.ModifyEven
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
@@ -104,6 +105,45 @@ public class DnBuilderWidget extends Bro
     /** The preview text. */
     private Text previewText;
 
+    // Listeners
+    private SelectionListener rdnAddButtonSelectionListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            int index = rdnLineList.size();
+            for ( int i = 0; i < rdnLineList.size(); i++ )
+            {
+                RdnLine rdnLine = rdnLineList.get( i );
+                if ( rdnLine.rdnAddButton == e.widget )
+                {
+                    index = i + 1;
+                }
+            }
+            addRdnLine( rdnComposite, index );
+
+            validate();
+        }
+    };
+
+    private SelectionListener rdnDeleteButtonSelectionListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            int index = 0;
+            for ( int i = 0; i < rdnLineList.size(); i++ )
+            {
+                RdnLine rdnLine = rdnLineList.get( i );
+                if ( rdnLine.rdnDeleteButton == e.widget )
+                {
+                    index = i;
+                }
+            }
+            deleteRdnLine( rdnComposite, index );
+
+            validate();
+        }
+    };
+
 
     /**
      * Creates a new instance of DnBuilderWidget.
@@ -174,8 +214,14 @@ public class DnBuilderWidget extends Bro
                 {
                     Ava ava = atavIterator.next();
                     addRdnLine( rdnComposite, i );
+
+                    removeRdnLineListeners( i );
+
                     rdnLineList.get( i ).rdnTypeCombo.setText( ava.getUpType() );
                     rdnLineList.get( i ).rdnValueText.setText( ava.getNormValue().getString() );
+
+                    addRdnLineListeners( i );
+
                     if ( i == 0 )
                     {
                         if ( "".equals( rdnLineList.get( i ).rdnTypeCombo ) ) //$NON-NLS-1$
@@ -304,7 +350,7 @@ public class DnBuilderWidget extends Bro
     public void validate()
     {
         Exception rdnE = null;
-        
+
         if ( showRDN )
         {
             try
@@ -312,10 +358,10 @@ public class DnBuilderWidget extends Bro
                 // calculate Rdn
                 String[] rdnTypes = new String[rdnLineList.size()];
                 String[] rdnValues = new String[rdnLineList.size()];
-                
+
                 for ( int i = 0; i < rdnLineList.size(); i++ )
                 {
-                    RdnLine rdnLine = ( RdnLine ) rdnLineList.get( i );
+                    RdnLine rdnLine = rdnLineList.get( i );
                     rdnTypes[i] = rdnLine.rdnTypeCombo.getText();
                     rdnValues[i] = rdnLine.rdnValueText.getText();
 
@@ -328,7 +374,7 @@ public class DnBuilderWidget extends Bro
                         rdnLine.rdnDeleteButton.setEnabled( false );
                     }
                 }
-                
+
                 rdn = DnUtils.composeRdn( rdnTypes, rdnValues );
             }
             catch ( Exception e )
@@ -339,7 +385,7 @@ public class DnBuilderWidget extends Bro
         }
 
         Exception parentE = null;
-        
+
         if ( showParent )
         {
             try
@@ -355,12 +401,12 @@ public class DnBuilderWidget extends Bro
         }
 
         String s = ""; //$NON-NLS-1$
-        
+
         if ( rdnE != null )
         {
             s += rdnE.getMessage() != null ? rdnE.getMessage() : Messages.getString( "DnBuilderWidget.ErrorInRDN" ); //$NON-NLS-1$
         }
-        
+
         if ( parentE != null )
         {
             s += ", " + parentE.getMessage() != null ? parentE.getMessage() : Messages.getString( "DnBuilderWidget.ErrorInParentDN" ); //$NON-NLS-1$ //$NON-NLS-2$
@@ -407,7 +453,7 @@ public class DnBuilderWidget extends Bro
                 {
                     dn = Dn.EMPTY_DN;
                 }
-                
+
                 previewText.setText( dn.getName() );
             }
         }
@@ -497,67 +543,30 @@ public class DnBuilderWidget extends Bro
 
         rdnLine.rdnAddButton = new Button( rdnComposite, SWT.PUSH );
         rdnLine.rdnAddButton.setText( "  +   " ); //$NON-NLS-1$
-        rdnLine.rdnAddButton.addSelectionListener( new SelectionAdapter()
-        {
-            public void widgetSelected( SelectionEvent e )
-            {
-                int index = rdnLineList.size();
-                for ( int i = 0; i < rdnLineList.size(); i++ )
-                {
-                    RdnLine rdnLine = ( RdnLine ) rdnLineList.get( i );
-                    if ( rdnLine.rdnAddButton == e.widget )
-                    {
-                        index = i + 1;
-                    }
-                }
-                addRdnLine( rdnComposite, index );
-
-                validate();
-            }
-        } );
 
         rdnLine.rdnDeleteButton = new Button( rdnComposite, SWT.PUSH );
         rdnLine.rdnDeleteButton.setText( "  \u2212  " ); //$NON-NLS-1$
-        rdnLine.rdnDeleteButton.addSelectionListener( new SelectionAdapter()
-        {
-            public void widgetSelected( SelectionEvent e )
-            {
-                int index = 0;
-                for ( int i = 0; i < rdnLineList.size(); i++ )
-                {
-                    RdnLine rdnLine = ( RdnLine ) rdnLineList.get( i );
-                    if ( rdnLine.rdnDeleteButton == e.widget )
-                    {
-                        index = i;
-                    }
-                }
-                deleteRdnLine( rdnComposite, index );
-
-                validate();
-            }
-        } );
 
         if ( attributeNames != null )
         {
             rdnLine.rdnTypeCombo.setItems( attributeNames );
         }
 
-        rdnLine.rdnTypeCombo.addModifyListener( this );
-        rdnLine.rdnValueText.addModifyListener( this );
+        addRdnLineListeners( rdnLine );
 
         return rdnLine;
     }
 
 
     /**
-     * Delete thd Rdn line on the given index.
+     * Delete the Rdn line on the given index.
      * 
      * @param rdnComposite the Rdn composite
      * @param index the index
      */
     private void deleteRdnLine( Composite rdnComposite, int index )
     {
-        RdnLine rdnLine = ( RdnLine ) rdnLineList.remove( index );
+        RdnLine rdnLine = rdnLineList.remove( index );
         if ( rdnLine != null )
         {
             rdnLine.rdnTypeCombo.dispose();
@@ -573,6 +582,68 @@ public class DnBuilderWidget extends Bro
         }
     }
 
+
+    /**
+     * Adds listeners for the Rdn line at the given index.
+     *
+     * @param index the index
+     */
+    private void addRdnLineListeners( int index )
+    {
+        if ( rdnLineList != null )
+        {
+            addRdnLineListeners( rdnLineList.get( index ) );
+        }
+    }
+
+
+    /**
+     * Adds listeners for the Rdn line.
+     *
+     * @param rdnLine the Rdn line
+     */
+    private void addRdnLineListeners( RdnLine rdnLine )
+    {
+        if ( rdnLine != null )
+        {
+            rdnLine.rdnAddButton.addSelectionListener( rdnAddButtonSelectionListener );
+            rdnLine.rdnDeleteButton.addSelectionListener( rdnDeleteButtonSelectionListener );
+            rdnLine.rdnTypeCombo.addModifyListener( this );
+            rdnLine.rdnValueText.addModifyListener( this );
+        }
+    }
+
+
+    /**
+     * Removes listeners for the Rdn line at the given index.
+     *
+     * @param index the index
+     */
+    private void removeRdnLineListeners( int index )
+    {
+        if ( rdnLineList != null )
+        {
+            removeRdnLineListeners( rdnLineList.get( index ) );
+        }
+    }
+
+
+    /**
+     * Removes listeners for the Rdn line.
+     *
+     * @param rdnLine the Rdn line
+     */
+    private void removeRdnLineListeners( RdnLine rdnLine )
+    {
+        if ( rdnLine != null )
+        {
+            rdnLine.rdnAddButton.removeSelectionListener( rdnAddButtonSelectionListener );
+            rdnLine.rdnDeleteButton.removeSelectionListener( rdnDeleteButtonSelectionListener );
+            rdnLine.rdnTypeCombo.removeModifyListener( this );
+            rdnLine.rdnValueText.removeModifyListener( this );
+        }
+    }
+
     /**
      * The Class RdnLine is a wrapper for all input elements
      * of an Rdn line. It contains a combo for the Rdn attribute,