}
}
@Override
public void run() {
final StatusBar statusBar = getApplication().getAppFrame().getStatusBar();
try {
do {
ScreenImage image = images.take();
File file = nextName();
ImageIO.write(image.toBufferedImage(), format, file);
getLog().info("Screenshot saved " + file);
statusBar.message("Saved %s", file.getName());
} while (capturing.get());
} catch (InterruptedException ignore) {
} catch (IOException e) {
getLog().warn("Failed to save image: " + e);
} finally {
device.setRecordingListener(null);
capturing.set(false);
images.clear();
runner = null;
images = null;
device = null;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
setIcon("record");
statusBar.message("Recording stopped. %d images saved.", next.get());
}
});
}
}