Hi,
If you never access or subclass visad.util.TextEditor then please ignore
this message.
We have come across a deadlock problem in the IDV running on windows
under jdk1.6.
This problem is caused by creating JFileChooser objects in multiple threads.
I'd like to change the fileChooser member of visad.util.TextEditor from
protected to private so that this member
does not get created at object instantiation time but rather gets
created when needed. I have also
modified visad.python.JPythonEditor because it would directly access
that member.
Is this going to break anyone's code?
Thanks,
Jeff
The proposed changes:
In TextEditor add:
/** Create and initialize the the file chooser */
protected JFileChooser doMakeFileChooser() {
JFileChooser tmpChooser = new
JFileChooser(System.getProperty("user.dir"));
tmpChooser.addChoosableFileFilter(
new ExtensionFileFilter("txt", "Text files"));
return tmpChooser;
}
/** Create if needed and return the file chooser */
protected JFileChooser getFileChooser() {
if(fileChooser == null) {
fileChooser = doMakeFileChooser();
}
return fileChooser;
}
Any access to fileChooser in these classes is changed to getFileChooser()
In visad.python.JPythonEditor overwrite the doMakeFileChooser to add the
file filter:
/** Create and initialize the the file chooser */
protected JFileChooser doMakeFileChooser() {
JFileChooser tmpFileChooser = super.doMakeFileChooser();
// add JPython files to file chooser dialog box
tmpFileChooser.addChoosableFileFilter(
new ExtensionFileFilter("py", "JPython source code"));
return tmpFileChooser;
}