/* * 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.datamodel.Alignment; import jalview.gui.Desktop; import jalview.datamodel.SequenceI; public class FileLoader { public void LoadFile(String file, String protocol, String format) { LoadingThread loader = new LoadingThread(file, protocol, format); loader.start(); } public AlignFrame LoadFileWaitTillLoaded(String file, String protocol, String format) { LoadingThread loader = new LoadingThread(file, protocol, format); loader.start(); while (loader.isAlive()) { try { Thread.sleep(500); } catch (Exception ex) {} } return loader.af; } class LoadingThread extends Thread { String file; String protocol; String format; AlignFrame af; public LoadingThread(String file, String protocol, String format) { this.file = file; this.protocol = protocol; this.format = format; } 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)) { af = new AlignFrame(new Alignment(sequences)); af.currentFileFormat = format; af.statusBar.setText("Successfully loaded file " + file); Desktop.addInternalFrame(af, file, AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT); try { af.setMaximum(jalview.bin.Cache.getDefault("SHOW_FULLSCREEN", false)); } catch (Exception ex) { } } else { JOptionPane.showInternalMessageDialog(Desktop.desktop, "Couldn't load file "+file+"\n" +errorMessage, "Error loading file", JOptionPane.WARNING_MESSAGE); } } } } }