/* * 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.bin; import jalview.appletgui.AlignFrame; import jalview.datamodel.*; import jalview.io.*; import java.applet.*; import java.awt.*; import java.awt.event.*; public class JalviewLite extends Applet { static int lastFrameX = 200; static int lastFrameY = 200; static Applet applet; boolean fileFound = true; String file = "No file"; Button launcher = new Button("Start Jalview"); public void init() { applet = this; this.setBackground(Color.white); file = getParameter("file"); if (file != null) { add(launcher); file = applet.getCodeBase() + file; launcher.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { String format = jalview.io.IdentifyFile.Identify(file, "URL"); LoadFile(file, "URL", format); } }); } else { file = "NO FILE"; fileFound = false; } } public static void showURL(String url) { try { applet.getAppletContext().showDocument(new java.net.URL(url), "HELP_WINDOW"); } catch (Exception ex) { } } public void LoadFile(String file, String protocol, String format) { LoadingThread loader = new LoadingThread(file, protocol, format, this); loader.start(); } public static void addFrame(final Frame frame, String title, int width, int height) { frame.setLocation(lastFrameX, lastFrameY); lastFrameX += 40; lastFrameY += 40; frame.setSize(width, height); frame.setTitle(title); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { frame.dispose(); } }); frame.setVisible(true); } public void paint(Graphics g) { if (!fileFound) { g.setColor(new Color(200, 200, 200)); g.setColor(Color.cyan); g.fillRect(0, 0, getSize().width, getSize().height); g.setColor(Color.red); g.drawString("Jalview can't open file", 5, 15); g.drawString("\"" + file + "\"", 5, 30); } } class LoadingThread extends Thread { String file; String protocol; String format; JalviewLite jlapplet; public LoadingThread(String file, String protocol, String format, JalviewLite applet) { this.file = file; this.protocol = protocol; this.format = format; this.jlapplet = applet; } public void run() { SequenceI[] sequences = null; sequences = FormatAdapter.readFile(file, protocol, format); if ((sequences != null) && (sequences.length > 0)) { AlignFrame af = new AlignFrame(new Alignment(sequences), jlapplet); addFrame(af, file, AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT); af.statusBar.setText("Successfully loaded file " + file); } else { fileFound = false; remove(launcher); repaint(); } } } }