Skip to content
Snippets Groups Projects
Commit 452db7f7 authored by Tobias Pietzsch's avatar Tobias Pietzsch
Browse files

use JFileChooser or FileDialog depending on ij.Prefs.useJFileChooser

parent 04813980
No related branches found
No related tags found
No related merge requests found
package bdv.ij;
import ij.Prefs;
import ij.plugin.PlugIn;
import java.awt.FileDialog;
import java.awt.Frame;
import java.io.File;
import java.io.FilenameFilter;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
......@@ -14,6 +18,10 @@ public class BigDataViewerPlugIn implements PlugIn
{
@Override
public void run( final String arg )
{
File file = null;
if ( Prefs.useJFileChooser )
{
final JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter( new FileFilter()
......@@ -44,8 +52,35 @@ public class BigDataViewerPlugIn implements PlugIn
final int returnVal = fileChooser.showOpenDialog( null );
if ( returnVal == JFileChooser.APPROVE_OPTION )
file = fileChooser.getSelectedFile();
}
else // use FileDialog
{
final FileDialog fd = new FileDialog( ( Frame ) null, "Open", FileDialog.LOAD );
fd.setFilenameFilter( new FilenameFilter()
{
@Override
public boolean accept( final File dir, final String name )
{
final int i = name.lastIndexOf( '.' );
if ( i > 0 && i < name.length() - 1 )
{
final String ext = name.substring( i + 1 ).toLowerCase();
return ext.equals( "xml" );
}
return false;
}
} );
fd.setVisible( true );
final String filename = fd.getFile();
if ( filename != null )
{
file = new File( fd.getDirectory() + filename );
}
}
if ( file != null )
{
final File file = fileChooser.getSelectedFile();
try
{
BigDataViewer.view( file.getAbsolutePath(), new ProgressWriterIJ() );
......
package bdv.ij.util;
import ij.Prefs;
import java.awt.Button;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Panel;
......@@ -9,6 +13,7 @@ import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
......@@ -42,6 +47,8 @@ public class PluginHelper
dialog.add( panel );
}
public static boolean useFileDialog = true;
public static class ChooseXmlFileListener implements ActionListener
{
TextField text;
......@@ -55,10 +62,14 @@ public class PluginHelper
public void actionPerformed( final ActionEvent e )
{
File directory = new File( text.getText() );
final String fn = directory.getName();
while ( directory != null && !directory.exists() )
directory = directory.getParentFile();
if ( Prefs.useJFileChooser )
{
final JFileChooser fc = new JFileChooser( directory );
fc.setSelectedFile( new File( fn ) );
fc.setFileFilter( new FileFilter()
{
@Override
......@@ -76,7 +87,8 @@ public class PluginHelper
{
final String s = f.getName();
final int i = s.lastIndexOf( '.' );
if (i > 0 && i < s.length() - 1) {
if ( i > 0 && i < s.length() - 1 )
{
final String ext = s.substring( i + 1 ).toLowerCase();
return ext.equals( "xml" );
}
......@@ -96,6 +108,36 @@ public class PluginHelper
text.setText( f );
}
}
else // use FileDialog
{
final FileDialog fd = new FileDialog( ( Frame ) null, "Save", FileDialog.SAVE );
fd.setDirectory( directory.getAbsolutePath() );
fd.setFile( fn );
fd.setFilenameFilter( new FilenameFilter()
{
@Override
public boolean accept( final File dir, final String name )
{
final int i = name.lastIndexOf( '.' );
if ( i > 0 && i < name.length() - 1 )
{
final String ext = name.substring( i + 1 ).toLowerCase();
return ext.equals( "xml" );
}
return false;
}
} );
fd.setVisible( true );
final String filename = fd.getFile();
if ( filename != null )
{
String f = new File( fd.getDirectory() + filename ).getAbsolutePath();
if ( !f.endsWith( ".xml" ) )
f += ".xml";
text.setText( f );
}
}
}
}
public static int[][] parseResolutionsString( final String s )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment