X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fbin%2FJalviewLite.java;h=858c391371a1ff9f65b53925898e0c887e01fb97;hb=366b11bb8e79ff5bb1a9e6c50b648c3d4101862c;hp=1e94a0d0c86b16b1c95b6cbc30ae5a28257367cd;hpb=04b6d995eb9395cb4107b28119fff413d8bacafd;p=jalview.git diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index 1e94a0d..858c391 100755 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -28,6 +28,7 @@ import java.applet.*; import java.awt.*; import java.awt.event.*; +import jalview.appletgui.TreePanel; /** @@ -40,18 +41,25 @@ 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"); + //The currentAlignFrame is static, it will change + //if and when the user selects a new window + static AlignFrame currentAlignFrame; + + //This is the first frame to be displayed, and does not change + AlignFrame initialAlignFrame; + + boolean embedded = false; + + /** * init method for Jalview Applet */ public void init() { - applet = this; - int r = 255; int g = 255; int b = 255; @@ -73,22 +81,37 @@ public class JalviewLite extends Applet } } + param = getParameter("label"); + if(param != null) + launcher.setLabel(param); + this.setBackground(new Color(r, g, b)); file = getParameter("file"); - if (file != null) + final JalviewLite applet = this; + if(getParameter("embedded")!=null + && getParameter("embedded").equalsIgnoreCase("true")) + { + embedded = true; + LoadingThread loader = new LoadingThread(file, + AppletFormatAdapter.URL, + applet); + loader.start(); + } + else 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); - } + LoadingThread loader = new LoadingThread(file, + AppletFormatAdapter.URL, + applet); + loader.start(); + } }); } else @@ -98,6 +121,7 @@ public class JalviewLite extends Applet } } + public static void main(String [] args) { if(args.length!=1) @@ -106,10 +130,15 @@ public class JalviewLite extends Applet System.exit(1); } + String format = new jalview.io.IdentifyFile().Identify(args[0],AppletFormatAdapter.FILE); - String format = jalview.io.IdentifyFile.Identify(args[0],"File"); - SequenceI[] sequences = new FormatAdapter().readFile(args[0], "File", format); - + SequenceI[] sequences = null; + try{ + sequences = new AppletFormatAdapter().readFile(args[0], AppletFormatAdapter.FILE, format); + }catch(java.io.IOException ex) + { + ex.printStackTrace(); + } if ( (sequences != null) && (sequences.length > 0)) { AlignFrame af = new AlignFrame(new Alignment(sequences), null, args[0]); @@ -117,50 +146,6 @@ public class JalviewLite extends Applet } } - /** - * 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 @@ -182,12 +167,64 @@ public class JalviewLite extends Applet { public void windowClosing(WindowEvent e) { + if(currentAlignFrame == frame) + { + currentAlignFrame = null; + } + lastFrameX -=40; + lastFrameY -=40; + frame.setMenuBar(null); frame.dispose(); } + public void windowActivated(WindowEvent e) + { + if(frame instanceof AlignFrame) + currentAlignFrame = (AlignFrame)frame; + } + }); frame.setVisible(true); } + public String getSelectedSequences() + { + StringBuffer result = new StringBuffer(""); + + if(initialAlignFrame.viewport.getSelectionGroup()!=null) + { + SequenceI[] seqs = initialAlignFrame.viewport.getSelectionGroup(). + getSequencesInOrder( + initialAlignFrame.viewport.getAlignment()); + + for (int i = 0; i < seqs.length; i++) + result.append(seqs[i].getName() + "¬"); + } + + return result.toString(); + } + + 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(), seqlimits); + return reply; + } + catch (Exception ex) + { + ex.printStackTrace(); + return "Error retrieving alignment in " + format + " format. "; + } + } + /** * This paints the background surrounding the "Launch Jalview button" *
@@ -206,6 +243,15 @@ public class JalviewLite extends Applet g.drawString("Jalview can't open file", 5, 15); g.drawString("\"" + file + "\"", 5, 30); } + else if(embedded) + { + g.setColor(Color.black); + g.setFont(new Font("Arial", Font.BOLD, 24)); + g.drawString("Jalview Applet", 50, this.size().height/2 -30); + g.drawString("Loading Data...", 50, this.size().height/2); + } + + } class LoadingThread extends Thread @@ -213,27 +259,122 @@ public class JalviewLite extends Applet String file; String protocol; String format; - JalviewLite jlapplet; + JalviewLite applet; - public LoadingThread(String file, String protocol, String format, - JalviewLite applet) + public LoadingThread(String _file, + String _protocol, + JalviewLite _applet) { - this.file = file; - this.protocol = protocol; - this.format = format; - this.jlapplet = applet; + file = _file; + if(inArchive(file)) + protocol = AppletFormatAdapter.CLASSLOADER; + else + protocol = _protocol; + + format = new jalview.io.IdentifyFile().Identify(file, protocol); + applet = _applet; } public void run() { SequenceI[] sequences = null; - sequences = new FormatAdapter().readFile(file, protocol, format); - + try{ + sequences = new AppletFormatAdapter().readFile(file, protocol, + format); + }catch(java.io.IOException ex) + { + ex.printStackTrace(); + } if ((sequences != null) && (sequences.length > 0)) { - AlignFrame af = new AlignFrame(new Alignment(sequences), - jlapplet, file); - af.statusBar.setText("Successfully loaded file " + file); + currentAlignFrame = new AlignFrame(new Alignment(sequences), + applet, file); + + initialAlignFrame = currentAlignFrame; + + if (embedded) + currentAlignFrame.setEmbedded(); + + currentAlignFrame.statusBar.setText("Successfully loaded file " + file); + + + String treeFile = applet.getParameter("treeFile"); + if (treeFile != null) + { + try + { + if(inArchive(treeFile)) + protocol = AppletFormatAdapter.CLASSLOADER; + else + { + protocol = AppletFormatAdapter.URL; + treeFile = addProtocol(treeFile); + } + + jalview.io.NewickFile fin = new jalview.io.NewickFile(treeFile, protocol); + + fin.parse(); + + if (fin.getTree() != null) + { + TreePanel tp = null; + tp = new TreePanel(currentAlignFrame.viewport, + currentAlignFrame.viewport.getAlignment().getSequences(), + fin, "FromFile", treeFile); + addFrame(tp, treeFile, 600, 500); + currentAlignFrame.addTreeMenuItem(tp, treeFile); + } + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + + String param = getParameter("features"); + if (param != null) + { + if( !inArchive(param) ) + param = addProtocol( param ); + + currentAlignFrame.parseFeaturesFile(param); + } + + param = getParameter("annotations"); + if (param != null) + { + if( !inArchive(param) ) + param = addProtocol( param ); + + new AnnotationReader().readAnnotationFile( + currentAlignFrame.viewport.getAlignment(), + param); + + currentAlignFrame.alignPanel.fontChanged(); + } + + + String pdbfile = applet.getParameter("PDBFILE"); + if(pdbfile!=null) + { + if( inArchive(pdbfile) ) + protocol = AppletFormatAdapter.CLASSLOADER; + else + { + protocol = AppletFormatAdapter.URL; + pdbfile = addProtocol(pdbfile); + } + + String sequence = applet.getParameter("PDBSEQ"); + + if(sequence!=null) + { + new MCview.AppletPDBViewer(pdbfile, protocol, + (Sequence)currentAlignFrame.getAlignViewport().getAlignment().findName(sequence), + currentAlignFrame.getSeqcanvas()); + } + + } } else { @@ -242,5 +383,24 @@ public class JalviewLite extends Applet repaint(); } } + + /** + * Discovers whether the given file is in the Applet Archive + * @param file String + * @return boolean + */ + boolean inArchive(String file) + { + return ( getClass().getResourceAsStream("/" + file) != null ); + } + + String addProtocol(String file) + { + if (file.indexOf("://") == -1) + file = getCodeBase() + file; + + return file; + } + } }