On 16 September 2016 at 21:48, <ago...@apache.org> wrote: > Author: agomes > Date: Fri Sep 16 20:48:32 2016 > New Revision: 1761081 > > URL: http://svn.apache.org/viewvc?rev=1761081&view=rev > Log: > This closes #209
Bug Id? > Modified: > jmeter/trunk/src/core/org/apache/jmeter/gui/util/FileDialoger.java > jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanel.java > jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java > > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java > > Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/FileDialoger.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/FileDialoger.java?rev=1761081&r1=1761080&r2=1761081&view=diff > ============================================================================== > --- jmeter/trunk/src/core/org/apache/jmeter/gui/util/FileDialoger.java > (original) > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/FileDialoger.java Fri > Sep 16 20:48:32 2016 > @@ -45,7 +45,7 @@ public final class FileDialoger { > } > > /** > - * Prompts the user to choose a file from their filesystems for our own > + * Prompts the user to choose a file or a directory from their > filesystems for our own > * devious uses. This method maintains the last directory the user > visited > * before dismissing the dialog. This does NOT imply they actually chose > a > * file from that directory, only that they closed the dialog there. It > is > @@ -60,7 +60,7 @@ public final class FileDialoger { > } > > /** > - * Prompts the user to choose a file from their filesystems for our own > + * Prompts the user to choose a file or a directory from their > filesystems for our own > * devious uses. This method maintains the last directory the user > visited > * before dismissing the dialog. This does NOT imply they actually chose > a > * file from that directory, only that they closed the dialog there. It > is > @@ -78,7 +78,27 @@ public final class FileDialoger { > } > > /** > - * Prompts the user to choose a file from their filesystems for our own > + * Prompts the user to choose a file or a directory from their > filesystems for our own > + * devious uses. This method maintains the last directory the user > visited > + * before dismissing the dialog. This does NOT imply they actually chose > a > + * file from that directory, only that they closed the dialog there. It > is > + * the caller's responsibility to check to see if the selected file is > + * non-null. > + * @param existingFileName The name of a file with path. If the filename > points > + * to an existing file, the directory in which it lies, will > be used > + * as the starting point for the returned JFileChooser. > + * @param onlyDirectories If true, only directories are displayed in the > FileChooser > + * > + * @return the JFileChooser that interacted with the user, after they are > + * finished using it - null if no file was chosen > + */ > + public static JFileChooser promptToOpenFile(String existingFileName, > boolean onlyDirectories) { > + return promptToOpenFile(new String[0], existingFileName, > onlyDirectories); > + } > + > + > + /** > + * Prompts the user to choose a file or a directory from their > filesystems for our own > * devious uses. This method maintains the last directory the user > visited > * before dismissing the dialog. This does NOT imply they actually chose > a > * file from that directory, only that they closed the dialog there. It > is > @@ -95,7 +115,7 @@ public final class FileDialoger { > } > > /** > - * Prompts the user to choose a file from their filesystems for our own > + * Prompts the user to choose a file or a directory from their > filesystems for our own > * devious uses. This method maintains the last directory the user > visited > * before dismissing the dialog. This does NOT imply they actually chose > a > * file from that directory, only that they closed the dialog there. It > is > @@ -111,38 +131,64 @@ public final class FileDialoger { > * finished using it - null if no file was chosen > */ > public static JFileChooser promptToOpenFile(String[] exts, String > existingFileName) { > - if(!StringUtils.isEmpty(existingFileName)) { > - File existingFileStart = new File(existingFileName); > - if(existingFileStart.exists() && existingFileStart.canRead()) { > - jfc.setCurrentDirectory(new File(existingFileName)); > - } > - } > - else if (lastJFCDirectory == null) { > - String start = System.getProperty("user.dir", ""); > //$NON-NLS-1$//$NON-NLS-2$ > + return promptToOpenFile(exts, null, false); > + } > + > + /** > + * Prompts the user to choose a file or a directory from their > filesystems for our own > + * devious uses. This method maintains the last directory the user visited > + * before dismissing the dialog. This does NOT imply they actually chose a > + * file from that directory, only that they closed the dialog there. It is > + * the caller's responsibility to check to see if the selected file is > + * non-null. > + * @param exts The list of allowed file extensions. If empty, any > + * file extension is allowed > + * @param existingFileName The name of a file with path. If the filename > points > + * to an existing file, the directory in which it lies, will > be used > + * as the starting point for the returned JFileChooser. > + * @param onlyDirectories If true, only directories are displayed in the > FileChooser > + * > + * @return the JFileChooser that interacted with the user, after they are > + * finished using it - null if no file was chosen > + */ > + public static JFileChooser promptToOpenFile(String[] exts, String > existingFileName, boolean onlyDirectories) { > + if (onlyDirectories) { > + jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); > + } else { > + jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); > + } > + if(!StringUtils.isEmpty(existingFileName)) { > + File existingFileStart = new File(existingFileName); > + if(existingFileStart.exists() && existingFileStart.canRead()) { > + jfc.setCurrentDirectory(new File(existingFileName)); > + } > + } > + else if (lastJFCDirectory == null) { > + String start = System.getProperty("user.dir", ""); > //$NON-NLS-1$//$NON-NLS-2$ > > - if (start.length() > 0) { > - jfc.setCurrentDirectory(new File(start)); > - } > - } > - clearFileFilters(); > - if(exts != null && exts.length > 0) { > - JMeterFileFilter currentFilter = new JMeterFileFilter(exts); > - jfc.addChoosableFileFilter(currentFilter); > - jfc.setAcceptAllFileFilterUsed(true); > - jfc.setFileFilter(currentFilter); > - } > - if(lastJFCDirectory==null) { > - lastJFCDirectory = System.getProperty("user.dir", ""); > //$NON-NLS-1$//$NON-NLS-2$ > - } > - jfc.setCurrentDirectory(new File(lastJFCDirectory)); > - int retVal = > jfc.showOpenDialog(GuiPackage.getInstance().getMainFrame()); > - lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); > + if (start.length() > 0) { > + jfc.setCurrentDirectory(new File(start)); > + } > + } > + clearFileFilters(); > + if(exts != null && exts.length > 0) { > + JMeterFileFilter currentFilter = new JMeterFileFilter(exts); > + jfc.addChoosableFileFilter(currentFilter); > + jfc.setAcceptAllFileFilterUsed(true); > + jfc.setFileFilter(currentFilter); > + } > + if(lastJFCDirectory==null) { > + lastJFCDirectory = System.getProperty("user.dir", ""); > //$NON-NLS-1$//$NON-NLS-2$ > + } > + jfc.setCurrentDirectory(new File(lastJFCDirectory)); > + int retVal = > jfc.showOpenDialog(GuiPackage.getInstance().getMainFrame()); > + lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); > > - if (retVal == JFileChooser.APPROVE_OPTION) { > - return jfc; > - } > - return null; > - } > + if (retVal == JFileChooser.APPROVE_OPTION) { > + return jfc; > + } > + return null; > + } > > private static void clearFileFilters() { > FileFilter[] filters = jfc.getChoosableFileFilters(); > > Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanel.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanel.java?rev=1761081&r1=1761080&r2=1761081&view=diff > ============================================================================== > --- jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanel.java (original) > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanel.java Fri Sep > 16 20:48:32 2016 > @@ -35,19 +35,31 @@ public class FilePanel extends FilePanel > public FilePanel(String title) { > this(title, (String) null); > } > + > + public FilePanel(String title, boolean onlyDirectories) { > + this(title, (String) null, onlyDirectories); > + } > > public FilePanel(String title, String filetype) { > - super(JMeterUtils.getResString("file_visualizer_filename"), > filetype); // $NON-NLS-1$ > + this(title, (String) null, false); > + } > + > + public FilePanel(String title, String filetype, boolean onlyDirectories) > { > + super(JMeterUtils.getResString("file_visualizer_filename"), > onlyDirectories, filetype); // $NON-NLS-1$ > this.title = title; > init(); > } > > public FilePanel(ChangeListener l, String title) { > - super(JMeterUtils.getResString("file_visualizer_filename"), l); // > $NON-NLS-1$ > + this(l,title, false); > + } > + > + public FilePanel(ChangeListener l, String title, boolean > onlyDirectories) { > + > super(JMeterUtils.getResString("file_visualizer_filename"),onlyDirectories, > l); // $NON-NLS-1$ > this.title = title; > init(); > } > - > + > public FilePanel(String resString, String[] exts) { > super(JMeterUtils.getResString("file_visualizer_filename"), exts); > // $NON-NLS-1$ > title = resString; > > Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java?rev=1761081&r1=1761080&r2=1761081&view=diff > ============================================================================== > --- jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java > (original) > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java Fri > Sep 16 20:48:32 2016 > @@ -52,6 +52,8 @@ public class FilePanelEntry extends Hori > private final List<ChangeListener> listeners = new LinkedList<>(); > > private final String[] filetypes; > + > + private boolean onlyDirectories = false; > > // Mainly needed for unit test Serialisable tests > public FilePanelEntry() { > @@ -66,7 +68,15 @@ public class FilePanelEntry extends Hori > this(label, (ChangeListener) null, exts); > } > > + public FilePanelEntry(String label, boolean onlyDirectories, String ... > exts) { > + this(label, onlyDirectories, (ChangeListener) null, exts); > + } > + > public FilePanelEntry(String label, ChangeListener listener, String ... > exts) { > + this(label, false, (ChangeListener) null, exts); > + } > + > + public FilePanelEntry(String label, boolean onlyDirectories, > ChangeListener listener, String ... exts) { > this.label = new JLabel(label); > if (listener != null) { > listeners.add(listener); > @@ -79,6 +89,7 @@ public class FilePanelEntry extends Hori > } else { > this.filetypes = null; > } > + this.onlyDirectories=onlyDirectories; > init(); > } > > @@ -141,9 +152,9 @@ public class FilePanelEntry extends Hori > if (e.getActionCommand().equals(ACTION_BROWSE)) { > JFileChooser chooser; > if(filetypes == null || filetypes.length == 0){ > - chooser = FileDialoger.promptToOpenFile(filename.getText()); > + chooser = > FileDialoger.promptToOpenFile(filename.getText(),onlyDirectories); > } else { > - chooser = FileDialoger.promptToOpenFile(filetypes, > filename.getText()); > + chooser = FileDialoger.promptToOpenFile(filetypes, > filename.getText(),onlyDirectories); > } > if (chooser != null && chooser.getSelectedFile() != null) { > filename.setText(chooser.getSelectedFile().getPath()); > > Modified: > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java?rev=1761081&r1=1761080&r2=1761081&view=diff > ============================================================================== > --- > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java > (original) > +++ > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java > Fri Sep 16 20:48:32 2016 > @@ -102,7 +102,7 @@ public class JMSPublisherGui extends Abs > > private final FilePanel messageFile = new > FilePanel(JMeterUtils.getResString("jms_file")); //$NON-NLS-1$ > > - private final FilePanel randomFile = new > FilePanel(JMeterUtils.getResString("jms_random_file")); //$NON-NLS-1$ > + private final FilePanel randomFile = new > FilePanel(JMeterUtils.getResString("jms_random_file"), true); //$NON-NLS-1$ > > private final JSyntaxTextArea textMessage = > JSyntaxTextArea.getInstance(10, 50); // $NON-NLS-1$ > > >