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
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$