Make sure image save dialog happens in EDT.
This commit is contained in:
parent
78ab978180
commit
e2f810d3cd
@ -23,6 +23,7 @@ import javax.swing.JMenu;
|
|||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.filechooser.FileFilter;
|
import javax.swing.filechooser.FileFilter;
|
||||||
|
|
||||||
import net.sf.openrocket.database.Databases;
|
import net.sf.openrocket.database.Databases;
|
||||||
@ -151,43 +152,48 @@ public class PhotoFrame extends JFrame {
|
|||||||
photoPanel.addImageCallback(new PhotoPanel.ImageCallback() {
|
photoPanel.addImageCallback(new PhotoPanel.ImageCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void performAction(final BufferedImage image) {
|
public void performAction(final BufferedImage image) {
|
||||||
log.info("Got image {} to save...", image);
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
log.info("Got image {} to save...", image);
|
||||||
|
|
||||||
final FileFilter png = new SimpleFileFilter("PNG Image", ".png"); // TODO
|
final FileFilter png = new SimpleFileFilter("PNG Image", ".png"); // TODO
|
||||||
// Trans
|
// Trans
|
||||||
|
|
||||||
final JFileChooser chooser = new JFileChooser();
|
final JFileChooser chooser = new JFileChooser();
|
||||||
|
|
||||||
chooser.addChoosableFileFilter(png);
|
chooser.addChoosableFileFilter(png);
|
||||||
chooser.setFileFilter(png);
|
chooser.setFileFilter(png);
|
||||||
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||||
|
|
||||||
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences())
|
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences())
|
||||||
.getDefaultDirectory());
|
.getDefaultDirectory());
|
||||||
final int option = chooser.showSaveDialog(PhotoFrame.this);
|
final int option = chooser.showSaveDialog(PhotoFrame.this);
|
||||||
|
|
||||||
if (option != JFileChooser.APPROVE_OPTION) {
|
if (option != JFileChooser.APPROVE_OPTION) {
|
||||||
log.info(Markers.USER_MARKER, "User decided not to save, option=" + option);
|
log.info(Markers.USER_MARKER, "User decided not to save, option=" + option);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final File file = FileHelper.forceExtension(chooser.getSelectedFile(), "png");
|
final File file = FileHelper.forceExtension(chooser.getSelectedFile(), "png");
|
||||||
if (file == null) {
|
if (file == null) {
|
||||||
log.info(Markers.USER_MARKER, "User did not select a file");
|
log.info(Markers.USER_MARKER, "User did not select a file");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
((SwingPreferences) Application.getPreferences()).setDefaultDirectory(chooser
|
((SwingPreferences) Application.getPreferences()).setDefaultDirectory(chooser
|
||||||
.getCurrentDirectory());
|
.getCurrentDirectory());
|
||||||
log.info(Markers.USER_MARKER, "User chose to save image as {}", file);
|
log.info(Markers.USER_MARKER, "User chose to save image as {}", file);
|
||||||
|
|
||||||
if (FileHelper.confirmWrite(file, PhotoFrame.this)) {
|
if (FileHelper.confirmWrite(file, PhotoFrame.this)) {
|
||||||
try {
|
try {
|
||||||
ImageIO.write(image, "png", file);
|
ImageIO.write(image, "png", file);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new Error(e);
|
throw new Error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -332,7 +338,7 @@ public class PhotoFrame extends JFrame {
|
|||||||
pa.setVisible(true);
|
pa.setVisible(true);
|
||||||
|
|
||||||
GeneralRocketLoader grl = new GeneralRocketLoader(new File(
|
GeneralRocketLoader grl = new GeneralRocketLoader(new File(
|
||||||
"C:/Users/bkuker/git/openrocket/swing/resources/datafiles/examples/A simple model rocket.ork"));
|
"/Users/bkuker/git/openrocket/swing/resources/datafiles/examples/A simple model rocket.ork"));
|
||||||
OpenRocketDocument doc = grl.load();
|
OpenRocketDocument doc = grl.load();
|
||||||
pa.photoPanel.setDoc(doc);
|
pa.photoPanel.setDoc(doc);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user