/* * 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.*; /** * Jalview Applet. Runs in Java 1.18 runtime * * @author $author$ * @version $Revision$ */ 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"); /** * init method for Jalview Applet */ public void init() { applet = this; int r = 255; int g = 255; int b = 255; String param = getParameter("RGB"); if (param != null) { try { r = Integer.parseInt(param.substring(0, 2), 16); g = Integer.parseInt(param.substring(2, 4), 16); b = Integer.parseInt(param.substring(4, 6), 16); } catch (Exception ex) { r = 255; g = 255; b = 255; } } this.setBackground(new Color(r, g, b)); 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 main(String [] args) { if(args.length!=1) { System.out.println("\nUsage: java -jar jalviewApplet.jar fileName\n"); System.exit(1); } String format = jalview.io.IdentifyFile.Identify(args[0],"File"); SequenceI[] sequences = FormatAdapter.readFile(args[0], "File", format); if ( (sequences != null) && (sequences.length > 0)) { AlignFrame af = new AlignFrame(new Alignment(sequences), null); addFrame(af, args[0], AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT); af.statusBar.setText("Successfully loaded file " + args[0]); } } /** * Displays the given URL in a new browser window * * @param url URL to display in browser window. *
New window will be named "HELP_WINDOW" */ public static void showURL(String url) { showURL(url, "HELP"); } public static void showURL(String url, String target) { if(applet==null) { System.out.println("Not running as applet - no browser available."); } else { try { applet.getAppletContext().showDocument(new java.net.URL(url), target); } catch (Exception ex) { ex.printStackTrace(); } } } /** * Starts a new LoadingThread for loading an alignment file * * @param file file name including full path to file * @param protocol file or URL or paste * @param format Fasta, Clustal, PFAM, MSF, PIR, BLC, Jalview */ public void LoadFile(String file, String protocol, String format) { LoadingThread loader = new LoadingThread(file, protocol, format, this); loader.start(); } /** * Initialises and displays a new java.awt.Frame * * @param frame java.awt.Frame to be displayed * @param title title of new frame * @param width width if new frame * @param height height of new frame */ 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); } /** * This paints the background surrounding the "Launch Jalview button" *
*
If file given in parameter not found, displays error message * * @param g graphics context */ 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(); } } } }