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 2011/01/20 16:41:35 UTC

svn commit: r1061349 - in /directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2: actions/ editor/

Author: pamarcelot
Date: Thu Jan 20 15:41:34 2011
New Revision: 1061349

URL: http://svn.apache.org/viewvc?rev=1061349&view=rev
Log:
- Fixed a bug in the case of "saving as..." a new configuration file (UI thread issue).
- Renamed a method.

Modified:
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorExportConfigurationAction.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorExportConfigurationAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorExportConfigurationAction.java?rev=1061349&r1=1061348&r2=1061349&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorExportConfigurationAction.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/actions/EditorExportConfigurationAction.java Thu Jan 20 15:41:34 2011
@@ -88,7 +88,7 @@ public class EditorExportConfigurationAc
                 {
                     try
                     {
-                        ServerConfigurationEditorUtils.doSaveAs( monitor, editor.getSite()
+                        ServerConfigurationEditorUtils.saveAs( monitor, editor.getSite()
                             .getShell(), editor.getEditorInput(), editor.getConfigWriter() );
                     }
                     catch ( Exception e )

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java?rev=1061349&r1=1061348&r2=1061349&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditor.java Thu Jan 20 15:41:34 2011
@@ -193,7 +193,7 @@ public class ServerConfigurationEditor e
     public boolean doSaveAs( IProgressMonitor monitor ) throws Exception
     {
         // Saving the configuration as a new file and getting the associated new editor input
-        IEditorInput newInput = ServerConfigurationEditorUtils.doSaveAs( monitor, getSite().getShell(),
+        IEditorInput newInput = ServerConfigurationEditorUtils.saveAs( monitor, getSite().getShell(),
             getEditorInput(), getConfigWriter() );
 
         // Checking if the 'save as' is successful 

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java?rev=1061349&r1=1061348&r2=1061349&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/ServerConfigurationEditorUtils.java Thu Jan 20 15:41:34 2011
@@ -48,6 +48,7 @@ import org.eclipse.jface.dialogs.IDialog
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorInput;
@@ -78,7 +79,7 @@ public class ServerConfigurationEditorUt
      *      the new input for the editor
      * @throws Exception
      */
-    public static IEditorInput doSaveAs( IProgressMonitor monitor, Shell shell, IEditorInput input,
+    public static IEditorInput saveAs( IProgressMonitor monitor, Shell shell, IEditorInput input,
         ConfigWriter configWriter )
         throws Exception
     {
@@ -89,7 +90,7 @@ public class ServerConfigurationEditorUt
         if ( isIDE )
         {
             // Asking the user for the location where to 'save as' the file
-            SaveAsDialog dialog = new SaveAsDialog( shell );
+            final SaveAsDialog dialog = new SaveAsDialog( shell );
 
             String inputClassName = input.getClass().getName();
             if ( input instanceof FileEditorInput )
@@ -118,7 +119,8 @@ public class ServerConfigurationEditorUt
                 dialog.setOriginalName( "config.ldif" );
             }
 
-            if ( dialog.open() != Dialog.OK )
+            // Open the dialog
+            if ( openDialogInUIThread( dialog ) != Dialog.OK )
             {
                 return null;
             }
@@ -148,8 +150,8 @@ public class ServerConfigurationEditorUt
             while ( !canOverwrite )
             {
                 // Open FileDialog
-                FileDialog dialog = new FileDialog( shell, SWT.SAVE );
-                path = dialog.open();
+                final FileDialog dialog = new FileDialog( shell, SWT.SAVE );
+                path = openFileDialogInUIThread( dialog );
                 if ( path == null )
                 {
                     return null;
@@ -164,7 +166,7 @@ public class ServerConfigurationEditorUt
                     MessageDialog overwriteDialog = new MessageDialog( shell, "Question", null, question, //$NON-NLS-1$
                         MessageDialog.QUESTION, new String[]
                             { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL }, 0 );
-                    int overwrite = overwriteDialog.open();
+                    int overwrite = openDialogInUIThread( overwriteDialog );
                     switch ( overwrite )
                     {
                         case 0: // Yes
@@ -195,6 +197,94 @@ public class ServerConfigurationEditorUt
 
 
     /**
+     * Opens a {@link Dialog} in the UI thread.
+     *
+     * @param dialog
+     *      the dialog
+     * @return
+     *      the result of the dialog
+     */
+    private static int openDialogInUIThread( final Dialog dialog )
+    {
+        // Defining our own encapsulating class for the result
+        class DialogResult
+        {
+            private int result;
+
+
+            public int getResult()
+            {
+                return result;
+            }
+
+
+            public void setResult( int result )
+            {
+                this.result = result;
+            }
+        }
+
+        // Creating an object to hold the result
+        final DialogResult result = new DialogResult();
+
+        // Opening the dialog in the UI thread
+        Display.getDefault().syncExec( new Runnable()
+        {
+            public void run()
+            {
+                result.setResult( dialog.open() );
+            }
+        } );
+
+        return result.getResult();
+    }
+
+
+    /**
+     * Opens a {@link FileDialog} in the UI thread.
+     *
+     * @param dialog
+     *      the file dialog
+     * @return
+     *      the result of the dialog
+     */
+    private static String openFileDialogInUIThread( final FileDialog dialog )
+    {
+        // Defining our own encapsulating class for the result
+        class DialogResult
+        {
+            private String result;
+
+
+            public String getResult()
+            {
+                return result;
+            }
+
+
+            public void setResult( String result )
+            {
+                this.result = result;
+            }
+        }
+
+        // Creating an object to hold the result
+        final DialogResult result = new DialogResult();
+
+        // Opening the dialog in the UI thread
+        Display.getDefault().syncExec( new Runnable()
+        {
+            public void run()
+            {
+                result.setResult( dialog.open() );
+            }
+        } );
+
+        return result.getResult();
+    }
+
+
+    /**
      * Saves the configuration.
      *
      * @param input