/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.io; import jalview.gui.AlignFrame; import jalview.gui.Jalview2XML; import javax.swing.JOptionPane; import jalview.gui.*; import jalview.datamodel.*; import java.util.Vector; import java.util.StringTokenizer; public class FileLoader { String file; String protocol; String format; AlignViewport viewport; public void LoadFile(AlignViewport viewport, String file, String protocol, String format) { this.viewport = viewport; LoadFile(file, protocol, format); } public void LoadFile(String file, String protocol, String format) { this.file = file; this.protocol = protocol; this.format = format; LoadingThread loader = new LoadingThread(); loader.start(); } public AlignFrame LoadFileWaitTillLoaded(String file, String protocol, String format) { this.file = file; this.protocol = protocol; this.format = format; LoadingThread loader = new LoadingThread(); loader.start(); while (loader.isAlive()) { try { Thread.sleep(500); } catch (Exception ex) {} } return loader.af; } public void updateRecentlyOpened() { Vector recent = new Vector(); String type = protocol.equals(FormatAdapter.FILE) ? "RECENT_FILE" : "RECENT_URL"; String historyItems = jalview.bin.Cache.getProperty(type); StringTokenizer st; if (historyItems != null) { st = new StringTokenizer(historyItems, "\t"); while (st.hasMoreTokens()) { recent.addElement(st.nextElement().toString().trim()); } } if (recent.contains(file)) { recent.remove(file); } StringBuffer newHistory = new StringBuffer(file); for (int i = 0; i < recent.size() && i < 10; i++) { newHistory.append("\t"); newHistory.append(recent.elementAt(i)); } jalview.bin.Cache.setProperty(type, newHistory.toString()); if(type.equals(FormatAdapter.FILE)) jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", format); } class LoadingThread extends Thread { AlignFrame af; public void run() { SequenceI[] sequences = null; if (format.equalsIgnoreCase("Jalview")) { af = new Jalview2XML().LoadJalviewAlign(file); } else { String errorMessage = AppletFormatAdapter.SUPPORTED_FORMATS; if (FormatAdapter.formats.contains(format)) { try { sequences = new FormatAdapter().readFile(file, protocol, format); } catch (java.io.IOException ex) { errorMessage = ex.getMessage(); } } if ( (sequences != null) && (sequences.length > 0)) { if(viewport!=null) { for(int i=0; i