tmf: Remember last selected directory in Batch Import wizard
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Sun, 17 Nov 2013 23:25:26 +0000 (18:25 -0500)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Wed, 20 Nov 2013 22:30:01 +0000 (17:30 -0500)
Change-Id: I2a166af74ef8720ec672b56980493967bf7eb874
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/18480
Tested-by: Hudson CI
IP-Clean: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/wizards/importtrace/ImportTraceWizardSelectDirectoriesPage.java

index d59e3cc1140ec97b5d8ba65eee5431d0551f35ff..98cd73d2596237c0cb3d8957cb4ed38d7617b9fe 100644 (file)
@@ -8,12 +8,14 @@
  *
  * Contributors:
  *   Matthew Khouzam - Initial API and implementation
+ *   Marc-Andre Laperle - Remember last selected directory
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.project.wizards.importtrace;
 
 import java.io.File;
 
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
@@ -43,6 +45,8 @@ public class ImportTraceWizardSelectDirectoriesPage extends AbstractImportTraceW
      */
     public static String ID = "org.eclipse.linuxtools.tmf.ui.project.wizards.importtrace.ImportTraceWizardPagePopulate"; //$NON-NLS-1$
 
+    private static final String STORE_DIRECTORY_ID = ID + ".STORE_DIRECTORY_ID"; //$NON-NLS-1$
+
     /**
      * Constructor. Creates the trace wizard page.
      *
@@ -144,12 +148,18 @@ public class ImportTraceWizardSelectDirectoriesPage extends AbstractImportTraceW
 
             FileDialog dialog = new
                     FileDialog(Display.getCurrent().getActiveShell(), SWT.NONE);
+
+            String lastDirectory = getLastSelectedDirectory();
+            if (lastDirectory != null) {
+                dialog.setFilterPath(lastDirectory);
+            }
+
             String fn = dialog.open();
             if (null != fn) {
                 File f = new File(fn);
                 if (f.exists()) {
                     getBatchWizard().addFileToScan(fn);
-
+                    saveSelectedDirectory(f.getParentFile());
                 }
             }
             updateButtons();
@@ -184,12 +194,17 @@ public class ImportTraceWizardSelectDirectoriesPage extends AbstractImportTraceW
 
             DirectoryDialog dialog = new
                     DirectoryDialog(Display.getCurrent().getActiveShell(), SWT.NONE);
+            String lastDirectory = getLastSelectedDirectory();
+            if (lastDirectory != null) {
+                dialog.setFilterPath(lastDirectory);
+            }
+
             String fn = dialog.open();
             if (null != fn) {
                 File f = new File(fn);
                 if (f.exists()) {
                     getBatchWizard().addFileToScan(fn);
-
+                    saveSelectedDirectory(f);
                 }
             }
             updateButtons();
@@ -200,6 +215,28 @@ public class ImportTraceWizardSelectDirectoriesPage extends AbstractImportTraceW
         }
     }
 
+    private String getLastSelectedDirectory() {
+        final IDialogSettings settings = getDialogSettings();
+        if (settings != null) {
+            final String directory = settings.get(STORE_DIRECTORY_ID);
+            if (directory != null && !directory.isEmpty()) {
+                final File file = new File(directory);
+                if (file.exists()) {
+                    return directory.toString();
+                }
+            }
+        }
+
+        return null;
+    }
+
+    private void saveSelectedDirectory(File directory) {
+        final IDialogSettings settings = getDialogSettings();
+        if (settings != null && directory != null && directory.exists()) {
+            settings.put(STORE_DIRECTORY_ID, directory.toString());
+        }
+    }
+
     private final class RemoveFileHandler implements SelectionListener {
         private final Table selectedFiles;
 
This page took 0.026394 seconds and 5 git commands to generate.