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 2010/01/18 14:56:30 UTC

svn commit: r900396 - in /directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio: entryeditors/ ldapbrowser/ui/editors/entry/

Author: pamarcelot
Date: Mon Jan 18 13:56:29 2010
New Revision: 900396

URL: http://svn.apache.org/viewvc?rev=900396&view=rev
Log:
Fix for DIRSTUDIO-617 (Tabular and LDIF Entry Single-Tab Editors should warn the user when modifications are pending (auto-save disabled) and their input is changed).

Modified:
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorUtils.java
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages.properties
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_de.properties
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_fr.properties
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/EntryEditor.java
    directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditor.java

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorUtils.java?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorUtils.java (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorUtils.java Mon Jan 18 13:56:29 2010
@@ -25,7 +25,11 @@
 import org.apache.directory.studio.ldapbrowser.core.jobs.StudioBrowserJob;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorInput;
 
 
@@ -50,7 +54,7 @@
             job.execute();
             return job;
         }
-        
+
         return null;
     }
 
@@ -137,4 +141,44 @@
 
         return null;
     }
+
+
+    /**
+     * Asks the user if he wants to save the modifications made to the entry before 
+     * opening the new input.
+     * <p>
+     * If the user answers 'Yes', then the entry's modifications are saved.
+     * <p>
+     * This method returns whether or not the whole operation completed.
+     * <p>Based on this return value, <code>true</code> or <code>false</code>, the editor
+     * then updates its input or not.
+     *
+     * @param editor
+     *      the editor
+     * @return
+     *      <code>true</code> if the whole operation completed correctly,
+     *      <code>false</code> if not.
+     */
+    public static boolean askSaveSharedWorkingCopyBeforeInputChange( IEntryEditor editor )
+    {
+        // Asking for saving the modifications
+        MessageDialog dialog = new MessageDialog( Display.getCurrent().getActiveShell(), Messages
+            .getString( "EntryEditorUtils.SaveChanges" ), null, Messages //$NON-NLS-1$
+            .getString( "EntryEditorUtils.SaveChangesDescription" ), MessageDialog.QUESTION, new String[] //$NON-NLS-1$
+            { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0 );
+        int result = dialog.open();
+        if ( result == 0 )
+        {
+            // Saving the modifications
+            EntryEditorInput eei = editor.getEntryEditorInput();
+            IStatus status = eei.saveSharedWorkingCopy( true, editor );
+            if ( !status.isOK() )
+            {
+                // If save failed, let's keep the modifications in the editor and return false
+                return false;
+            }
+        }
+
+        return true;
+    }
 }

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages.properties?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages.properties (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages.properties Mon Jan 18 13:56:29 2010
@@ -26,5 +26,7 @@
 EntryEditorNavigationLocation.RootDSE=Root DSE
 EntryEditorNavigationLocation.SearchResult=Search Result {0}
 EntryEditorUtils.NoEntrySelected=No entry selected
+EntryEditorUtils.SaveChanges=Save Changes
+EntryEditorUtils.SaveChangesDescription=Entry has been modified in this entry editor. Save changes before opening another entry in this editor?
 OpenEntryEditorRunnable.OpenEntryEditor=Open Entry Editor
 OpenEntryEditorRunnable.OpeningEntryEditor=Opening Entry Editor...

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_de.properties?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_de.properties (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_de.properties Mon Jan 18 13:56:29 2010
@@ -25,5 +25,7 @@
 EntryEditorNavigationLocation.Entry=Eintrag {0}
 EntryEditorNavigationLocation.SearchResult=Suchergebnis {0}
 EntryEditorUtils.NoEntrySelected=Kein Eintrag ausgew\u00E4hlt
+EntryEditorUtils.SaveChanges=\u00c4nderungen Speichern
+EntryEditorUtils.SaveChangesDescription=TODO:Entry has been modified in this entry editor. Save changes before opening another entry in this editor?
 OpenEntryEditorRunnable.OpenEntryEditor=Eintragseditor \u00F6ffnen
 OpenEntryEditorRunnable.OpeningEntryEditor=\u00D6ffne Eintragseditor...

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_fr.properties?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_fr.properties (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/messages_fr.properties Mon Jan 18 13:56:29 2010
@@ -26,5 +26,7 @@
 EntryEditorNavigationLocation.RootDSE=Root DSE
 EntryEditorNavigationLocation.SearchResult=R\u00E9sultat de recherche {0}
 EntryEditorUtils.NoEntrySelected=Aucune entr\u00E9e s\u00E9lectionn\u00E9e
+EntryEditorUtils.SaveChanges=Sauvegarder les modifications
+EntryEditorUtils.SaveChangesDescription=L'entr\u00E9e a \u00E9t\u00E9 modifi\u00E9e dans cet \u00E9diteur d'entr\u00E9e. Souhaitez-vous sauvegarder les modifications avant d'ouvrir une autre entrée dans cet \u00E9diteur ?
 OpenEntryEditorRunnable.OpenEntryEditor=Ouvrir l'\u00E9diteur d'entr\u00E9e
 OpenEntryEditorRunnable.OpeningEntryEditor=Ouverture de l'\u00E9diteur d'entr\u00E9e...
\ No newline at end of file

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/EntryEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/EntryEditor.java?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/EntryEditor.java (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/EntryEditor.java Mon Jan 18 13:56:29 2010
@@ -433,6 +433,15 @@
     {
         if ( input instanceof EntryEditorInput )
         {
+            // If the editor is dirty, let's ask for a save before changing the input
+            if ( isDirty() )
+            {
+                if ( !EntryEditorUtils.askSaveSharedWorkingCopyBeforeInputChange( this ) )
+                {
+                    return;
+                }
+            }
+
             /*
              * Workaround to make link-with-editor working for the single-tab editor:
              * The call of firePropertyChange is used to inform the link-with-editor action.

Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditor.java?rev=900396&r1=900395&r2=900396&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditor.java (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/editors/entry/LdifEntryEditor.java Mon Jan 18 13:56:29 2010
@@ -326,6 +326,15 @@
                     return;
                 }
 
+                // If the editor is dirty, let's ask for a save before changing the input
+                if ( isDirty() )
+                {
+                    if ( !EntryEditorUtils.askSaveSharedWorkingCopyBeforeInputChange( this ) )
+                    {
+                        return;
+                    }
+                }
+
                 /*
                  * Workaround to make link-with-editor working for the single-tab editor:
                  * The call of firePropertyChange is used to inform the link-with-editor action.