import tim.prune.ExternalTools;
import tim.prune.I18nManager;
+import tim.prune.UpdateMessageBroker;
import tim.prune.data.Altitude;
import tim.prune.data.Coordinate;
import tim.prune.data.DataPoint;
{
private Frame _parentFrame = null;
private JDialog _dialog = null;
+ private JButton _okButton = null;
private JCheckBox _overwriteCheckbox = null;
private JProgressBar _progressBar = null;
private PhotoTableModel _photoTableModel = null;
+ private boolean _saveCancelled = false;
// To preserve timestamps of file use parameter -P
// Lower panel with ok and cancel buttons
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
- JButton okButton = new JButton(I18nManager.getText("button.ok"));
- okButton.addActionListener(new ActionListener() {
+ _okButton = new JButton(I18nManager.getText("button.ok"));
+ _okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
+ // disable ok button
+ _okButton.setEnabled(false);
// start new thread to do save
new Thread(ExifSaver.this).start();
}
});
- buttonPanel.add(okButton);
+ buttonPanel.add(_okButton);
JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
+ _saveCancelled = true;
_dialog.dispose();
}
});
*/
public void run()
{
+ _saveCancelled = false;
PhotoTableEntry entry = null;
Photo photo = null;
int numPhotos = _photoTableModel.getRowCount();
for (int i=0; i<numPhotos; i++)
{
entry = _photoTableModel.getPhotoTableEntry(i);
- if (entry != null && entry.getSaveFlag())
+ if (entry != null && entry.getSaveFlag() && !_saveCancelled)
{
// Only look at photos which are selected and whose status has changed since load
photo = entry.getPhoto();
_progressBar.setValue(i + 1);
}
_progressBar.setVisible(false);
- // Show confirmation dialog
- JOptionPane.showMessageDialog(_dialog, I18nManager.getText("dialog.saveexif.ok1") + " "
- + numSaved + " " + I18nManager.getText("dialog.saveexif.ok2"),
- I18nManager.getText("dialog.saveexif.title"), JOptionPane.INFORMATION_MESSAGE);
+ // Show confirmation
+ UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.saveexif.ok1") + " "
+ + numSaved + " " + I18nManager.getText("confirm.saveexif.ok2"));
// close dialog, all finished
_dialog.dispose();
}
// Execute exif command
try
{
- Runtime.getRuntime().exec(command);
+ Process process = Runtime.getRuntime().exec(command);
+ // Wait for process to finish so not too many run in parallel
+ try {
+ process.waitFor();
+ }
+ catch (InterruptedException ie) {}
}
catch (Exception e)
{