+ // create backupfiles object and get new temp filename destination
+ boolean doBackup = BackupFiles.getEnabled();
+ BackupFiles backupfiles = null;
+ if (doBackup)
+ {
+ Cache.log.debug(
+ "ALIGNFRAME making backupfiles object for " + file);
+ backupfiles = new BackupFiles(file);
+ }
+ try
+ {
+ String tempFilePath = doBackup ? backupfiles.getTempFilePath()
+ : file;
+ Cache.log.debug("ALIGNFRAME setting PrintWriter");
+ PrintWriter out = new PrintWriter(new FileWriter(tempFilePath));
+
+ if (backupfiles != null)
+ {
+ Cache.log.debug("ALIGNFRAME about to write to temp file "
+ + backupfiles.getTempFilePath());
+ }
+
+ out.print(output);
+ Cache.log.debug("ALIGNFRAME about to close file");
+ out.close();
+ Cache.log.debug("ALIGNFRAME closed file");
+ AlignFrame.this.setTitle(file);
+ statusBar.setText(MessageManager.formatMessage(
+ "label.successfully_saved_to_file_in_format",
+ new Object[]
+ { fileName, format.getName() }));
+ lastSaveSuccessful = true;
+ } catch (IOException e)
+ {
+ lastSaveSuccessful = false;
+ Cache.log.error(
+ "ALIGNFRAME Something happened writing the temp file");
+ Cache.log.error(e.getMessage());
+ Cache.log.debug(e.getStackTrace());
+ } catch (Exception ex)
+ {
+ lastSaveSuccessful = false;
+ Cache.log.error(
+ "ALIGNFRAME Something else happened writing the temp file");
+ Cache.log.error(ex.getMessage());
+ Cache.log.debug(ex.getStackTrace());
+ }
+
+ if (doBackup)
+ {
+ backupfiles.setWriteSuccess(lastSaveSuccessful);
+ Cache.log.debug("ALIGNFRAME writing temp file was "
+ + (lastSaveSuccessful ? "" : "NOT ") + "successful");
+ // do the backup file roll and rename the temp file to actual file
+ Cache.log.debug(
+ "ALIGNFRAME about to rollBackupsAndRenameTempFile");
+ lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile();
+ Cache.log.debug(
+ "ALIGNFRAME performed rollBackupsAndRenameTempFile "
+ + (lastSaveSuccessful ? "" : "un")
+ + "successfully");
+ }
+
+ if (!lastSaveSuccessful)
+ {
+ if (!Platform.isHeadless())
+ {
+ JvOptionPane.showInternalMessageDialog(AlignFrame.this,
+ MessageManager.formatMessage(
+ "label.couldnt_save_file", new Object[]
+ { fileName }),
+ MessageManager.getString("label.error_saving_file"),
+ JvOptionPane.WARNING_MESSAGE);
+ }
+ }