package com.illumina.basespace.igv.session;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import org.broad.igv.PreferenceManager;
import org.broad.igv.session.Session;
import org.broad.igv.session.SessionWriter;
import org.broad.igv.ui.IGV;
import org.broad.igv.ui.UIConstants;
import org.broad.igv.ui.WaitCursorManager;
import org.broad.igv.ui.action.SaveSessionMenuAction;
import org.broad.igv.ui.util.FileDialogUtils;
import com.illumina.basespace.igv.BaseSpaceMain;
public class BaseSpaceSaveSessionMenuAction extends SaveSessionMenuAction
{
public IGV mainFrame;
public BaseSpaceSaveSessionMenuAction(String label, int mnemonic, IGV mainFrame)
{
super(label, mnemonic, mainFrame);
this.mainFrame = mainFrame;
}
@Override
public void actionPerformed(ActionEvent e)
{
File sessionFile = null;
String currentSessionFilePath = mainFrame.getSession().getPath();
String initFile = currentSessionFilePath == null ? UIConstants.DEFAULT_SESSION_FILE : currentSessionFilePath;
sessionFile = FileDialogUtils.chooseFile("Save Session",
PreferenceManager.getInstance().getLastSessionDirectory(),
new File(initFile),
FileDialogUtils.SAVE);
if (sessionFile == null) {
mainFrame.resetStatusMessage();
return;
}
String filePath = sessionFile.getAbsolutePath();
if (!filePath.toLowerCase().endsWith(".xml")) {
sessionFile = new File(filePath + ".xml");
}
mainFrame.setStatusBarMessage("Saving session to " + sessionFile.getAbsolutePath());
final File sf = sessionFile;
WaitCursorManager.CursorToken token = WaitCursorManager.showWaitCursor();
try {
Session currentSession = mainFrame.getSession();
currentSession.setPath(sf.getAbsolutePath());
(new SessionWriter()).saveSession(currentSession, sf);
// No errors so save last location
PreferenceManager.getInstance().setLastSessionDirectory(sf.getParentFile());
} catch (Exception e2) {
JOptionPane.showMessageDialog(mainFrame.getMainFrame(), "There was an error writing to " + sf.getName() + "(" + e2.getMessage() + ")");
BaseSpaceMain.logger.log(Level.SEVERE,"Failed to save session!", e2);
} finally {
WaitCursorManager.removeWaitCursor(token);
mainFrame.resetStatusMessage();
}
}
}