package com.illumina.basespace.igv.session; import java.awt.event.ActionEvent; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.broad.igv.PreferenceManager; import org.broad.igv.ui.IGV; import org.broad.igv.ui.UIConstants; import org.broad.igv.ui.action.OpenSessionMenuAction; import org.broad.igv.ui.util.FileDialogUtils; import org.broad.igv.util.FileUtils; public class BaseSpaceOpenSessionMenuAction extends OpenSessionMenuAction { public String sessionFile = null; public boolean autoload = false; public IGV mainFrame; public BaseSpaceOpenSessionMenuAction(String label, int mnemonic, IGV mainFrame) { super(label, mnemonic, mainFrame); this.mainFrame = mainFrame; autoload = true; } public BaseSpaceOpenSessionMenuAction(String label, String sessionFile, IGV mainFrame) { super(label, sessionFile, mainFrame); this.mainFrame = mainFrame; this.sessionFile = sessionFile; } @Override public void actionPerformed(ActionEvent e) { if (sessionFile == null || autoload == false) { File lastSessionDirectory = PreferenceManager.getInstance().getLastSessionDirectory(); File tmpFile = FileDialogUtils.chooseFile("Open Session", lastSessionDirectory, JFileChooser.FILES_ONLY); if (tmpFile == null) { return; } sessionFile = tmpFile.getAbsolutePath(); } restoreSession(); } public void restoreSession() { // If anything has been loaded warn the users. Popping up the // warning all the time will get annoying. if (IGV.getInstance().getAllTracks().size() > 0) { int status = JOptionPane.showConfirmDialog(mainFrame.getMainFrame(), UIConstants.OVERWRITE_SESSION_MESSAGE, null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null); if (status == JOptionPane.CANCEL_OPTION || status == JOptionPane.CLOSED_OPTION) { return; } } if (sessionFile != null) { if (FileUtils.isRemote(sessionFile)) { boolean merge = false; mainFrame.doRestoreSession(sessionFile, null, merge); } else { File f = new File(sessionFile); mainFrame.doRestoreSession(f, null); } } } }