/*
* Copyright (c) 2007-2013 The Broad Institute, Inc.
* SOFTWARE COPYRIGHT NOTICE
* This software and its documentation are the copyright of the Broad Institute, Inc. All rights are reserved.
*
* This software is supplied without any warranty or guaranteed support whatsoever. The Broad Institute is not responsible for its use, misuse, or functionality.
*
* This software is licensed under the terms of the GNU Lesser General Public License (LGPL),
* Version 2.1 which is available at http://www.opensource.org/licenses/lgpl-2.1.php.
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.broad.igv.ui.action;
import org.apache.log4j.Logger;
import org.broad.igv.ui.IGV;
import org.broad.igv.ui.util.MessageUtils;
import org.broad.igv.util.ResourceLocator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.Arrays;
/**
* @author jrobinso
*/
public class LoadFromURLMenuAction extends MenuAction {
static Logger log = Logger.getLogger(LoadFilesMenuAction.class);
public static final String LOAD_FROM_DAS = "Load from DAS...";
public static final String LOAD_FROM_URL = "Load from URL...";
public static final String LOAD_GENOME_FROM_URL = "Load Genome from URL...";
private IGV igv;
public LoadFromURLMenuAction(String label, int mnemonic, IGV igv) {
super(label, null, mnemonic);
this.igv = igv;
}
@Override
public void actionPerformed(ActionEvent e) {
JPanel ta = new JPanel();
ta.setPreferredSize(new Dimension(600, 20));
if (e.getActionCommand().equalsIgnoreCase(LOAD_FROM_URL)) {
String url = JOptionPane.showInputDialog(IGV.getMainFrame(), ta, "Enter URL (http or ftp)", JOptionPane.QUESTION_MESSAGE);
if (url != null && url.trim().length() > 0) {
if (url.endsWith(".xml") || url.endsWith(".session")) {
try {
boolean merge = false;
String locus = null;
igv.doRestoreSession(url, locus, merge);
} catch (Exception ex) {
MessageUtils.showMessage("Error loading url: " + url + " (" + ex.toString() + ")");
}
} else {
ResourceLocator rl = new ResourceLocator(url.trim());
igv.loadTracks(Arrays.asList(rl));
}
}
} else if ((e.getActionCommand().equalsIgnoreCase(LOAD_FROM_DAS))) {
String url = JOptionPane.showInputDialog(IGV.getMainFrame(), ta, "Enter DAS feature source URL",
JOptionPane.QUESTION_MESSAGE);
if (url != null && url.trim().length() > 0) {
ResourceLocator rl = new ResourceLocator(url.trim());
rl.setType("das");
igv.loadTracks(Arrays.asList(rl));
}
} else if ((e.getActionCommand().equalsIgnoreCase(LOAD_GENOME_FROM_URL))) {
String url = JOptionPane.showInputDialog(IGV.getMainFrame(), ta, "Enter URL to .genome or FASTA file",
JOptionPane.QUESTION_MESSAGE);
if (url != null && url.trim().length() > 0) {
try {
igv.loadGenome(url.trim(), null, true);
} catch (IOException e1) {
MessageUtils.showMessage("Error loading genome: " + e1.getMessage());
}
}
}
}
}