View | Details | Raw Unified | Return to bug 63945
Collapse All | Expand All

(-)a/src/core/src/main/java/org/apache/jmeter/gui/util/FileDialoger.java (-17 / +22 lines)
Lines 20-25 package org.apache.jmeter.gui.util; Link Here
20
20
21
import java.awt.Component;
21
import java.awt.Component;
22
import java.io.File;
22
import java.io.File;
23
import java.util.Arrays;
23
24
24
import javax.swing.JFileChooser;
25
import javax.swing.JFileChooser;
25
import javax.swing.filechooser.FileFilter;
26
import javax.swing.filechooser.FileFilter;
Lines 27-32 import javax.swing.filechooser.FileFilter; Link Here
27
import org.apache.commons.lang3.StringUtils;
28
import org.apache.commons.lang3.StringUtils;
28
import org.apache.jmeter.gui.GuiPackage;
29
import org.apache.jmeter.gui.GuiPackage;
29
import org.apache.jmeter.gui.JMeterFileFilter;
30
import org.apache.jmeter.gui.JMeterFileFilter;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
30
33
31
/**
34
/**
32
 * Class implementing a file open dialogue
35
 * Class implementing a file open dialogue
Lines 39-44 public final class FileDialoger { Link Here
39
42
40
    private static JFileChooser jfc = new JFileChooser();
43
    private static JFileChooser jfc = new JFileChooser();
41
44
45
    private static final Logger LOG = LoggerFactory.getLogger(FileDialoger.class);
46
42
    /**
47
    /**
43
     * Prevent instantiation of utility class.
48
     * Prevent instantiation of utility class.
44
     */
49
     */
Lines 180-198 public final class FileDialoger { Link Here
180
       } else {
185
       } else {
181
           jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
186
           jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
182
       }
187
       }
183
       if(!StringUtils.isEmpty(existingFileName)) {
188
       setCurrentDirOnJFC(existingFileName, lastJFCDirectory, System.getProperty("user.dir"));
184
           File existingFileStart = new File(existingFileName);
185
           if(existingFileStart.exists() && existingFileStart.canRead()) {
186
               jfc.setCurrentDirectory(new File(existingFileName));
187
           }
188
       }
189
       else if (lastJFCDirectory == null) {
190
           String start = System.getProperty("user.dir", ""); //$NON-NLS-1$//$NON-NLS-2$
191
192
           if (start.length() > 0) {
193
               jfc.setCurrentDirectory(new File(start));
194
           }
195
       }
196
       clearFileFilters();
189
       clearFileFilters();
197
       if(exts != null && exts.length > 0) {
190
       if(exts != null && exts.length > 0) {
198
           JMeterFileFilter currentFilter = new JMeterFileFilter(exts);
191
           JMeterFileFilter currentFilter = new JMeterFileFilter(exts);
Lines 200-209 public final class FileDialoger { Link Here
200
           jfc.setAcceptAllFileFilterUsed(true);
193
           jfc.setAcceptAllFileFilterUsed(true);
201
           jfc.setFileFilter(currentFilter);
194
           jfc.setFileFilter(currentFilter);
202
       }
195
       }
203
       if(lastJFCDirectory==null) {
204
           lastJFCDirectory = System.getProperty("user.dir", ""); //$NON-NLS-1$//$NON-NLS-2$
205
       }
206
       jfc.setCurrentDirectory(new File(lastJFCDirectory));
207
       int retVal = jfc.showOpenDialog(parentComponent);
196
       int retVal = jfc.showOpenDialog(parentComponent);
208
       lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath();
197
       lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath();
209
198
Lines 213-218 public final class FileDialoger { Link Here
213
       return null;
202
       return null;
214
   }
203
   }
215
204
205
    private static void setCurrentDirOnJFC(String... dirNames) {
206
        for (String dirName : dirNames) {
207
            if (StringUtils.isBlank(dirName)) {
208
                continue;
209
            }
210
            File possibleDir = new File(dirName);
211
            if (possibleDir.exists() && possibleDir.canRead()) {
212
                jfc.setCurrentDirectory(possibleDir);
213
                return;
214
            }
215
        }
216
        LOG.info("No valid initial directory found for: {}",
217
                    Arrays.asList(dirNames));
218
        jfc.setCurrentDirectory(null);
219
    }
220
216
    private static void clearFileFilters() {
221
    private static void clearFileFilters() {
217
        FileFilter[] filters = jfc.getChoosableFileFilters();
222
        FileFilter[] filters = jfc.getChoosableFileFilters();
218
        for (FileFilter filter : filters) {
223
        for (FileFilter filter : filters) {

Return to bug 63945