/* * 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; boolean fileFound = true; String file = "No file"; Button launcher = new Button("Start Jalview"); public static boolean AWT1 = false; AlignFrame currentAlignFrame; /** * init method for Jalview Applet */ public void init() { String version = System.getProperty("java.version"); if (version.indexOf("1.1") == 0) AWT1 = true; 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)); param = getParameter("features"); if(param!=null) { if(param.indexOf("://")==-1) param = getCodeBase() + param; } final String featuresFile = param; file = getParameter("file"); final JalviewLite applet = this; if (file != null) { add(launcher); if(file.indexOf("://")==-1) file = getCodeBase() + file; launcher.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { String format = jalview.io.IdentifyFile.Identify(file, "URL"); LoadingThread loader = new LoadingThread(file, "URL", format, featuresFile, applet); loader.start(); } }); } 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 = new AppletFormatAdapter().readFile(args[0], "File", format); if ( (sequences != null) && (sequences.length > 0)) { AlignFrame af = new AlignFrame(new Alignment(sequences), null, args[0]); af.statusBar.setText("Successfully loaded file " + args[0]); } } /** * 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); } public String getAlignment(String format) { return getAlignment(format, "true"); } public String getAlignment(String format, String suffix) { try { boolean seqlimits = suffix.equalsIgnoreCase("true"); String reply = new AppletFormatAdapter().formatSequences(format, currentAlignFrame.viewport.getAlignment().getSequences(), true, seqlimits); return reply; } catch (Exception ex) {ex.printStackTrace(); return "Error retrieving alignment in " + format + " format. "; } } /** * 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; String featuresFile; JalviewLite applet; public LoadingThread(String file, String protocol, String format, String features, JalviewLite applet) { this.file = file; this.protocol = protocol; this.format = format; featuresFile = features; this.applet = applet; } public void run() { SequenceI[] sequences = null; sequences = new AppletFormatAdapter().readFile(file, protocol, format); if ((sequences != null) && (sequences.length > 0)) { currentAlignFrame = new AlignFrame(new Alignment(sequences), applet, file); currentAlignFrame.statusBar.setText("Successfully loaded file " + file); if(featuresFile!=null) currentAlignFrame.parseFeaturesFile(featuresFile); } else { fileFound = false; remove(launcher); repaint(); } } } }