X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalviewLite.java;h=222d0497649962f1923926b32aaae53cee1318a9;hb=f22d8c3bfc1892fe88b4aad3f6381e5018f175f1;hp=858c391371a1ff9f65b53925898e0c887e01fb97;hpb=366b11bb8e79ff5bb1a9e6c50b648c3d4101862c;p=jalview.git diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index 858c391..222d049 100755 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer -* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle +* Copyright (C) 2006 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 @@ -28,7 +28,7 @@ import java.applet.*; import java.awt.*; import java.awt.event.*; -import jalview.appletgui.TreePanel; +import jalview.appletgui.FeatureSettings; /** @@ -39,6 +39,96 @@ import jalview.appletgui.TreePanel; */ public class JalviewLite extends Applet { + + /////////////////////////////////////////// + //The following public methods maybe called + //externally, eg via javascript in HTML page + + 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(), seqlimits); + return reply; + } + catch (Exception ex) + { + ex.printStackTrace(); + return "Error retrieving alignment in " + format + " format. "; + } + } + + public void loadAnnotation(String annotation) + { + if (new AnnotationFile().readAnnotationFile( + currentAlignFrame.getAlignViewport().getAlignment(), annotation, + AppletFormatAdapter.PASTE)) + { + currentAlignFrame.alignPanel.fontChanged(); + currentAlignFrame.alignPanel.setScrollValues(0, 0); + } + else + { + currentAlignFrame.parseFeaturesFile(annotation, AppletFormatAdapter.PASTE); + } + } + + public String getFeatures(String format) + { + return currentAlignFrame.outputFeatures(false, format); + } + + public String getAnnotation() + { + return currentAlignFrame.outputAnnotations(false); + } + + public void loadAlignment(String text, String title) + { + Alignment al = null; + String format = new IdentifyFile().Identify(text, AppletFormatAdapter.PASTE); + try{ + al = new AppletFormatAdapter().readFile(text, + AppletFormatAdapter.PASTE, + format); + if (al.getHeight() > 0) + new AlignFrame(al, this, title, false); + }catch(java.io.IOException ex) + { + ex.printStackTrace(); + } + } + + //////////////////////////////////////////////// + //////////////////////////////////////////////// + + + static int lastFrameX = 200; static int lastFrameY = 200; boolean fileFound = true; @@ -47,7 +137,7 @@ public class JalviewLite extends Applet //The currentAlignFrame is static, it will change //if and when the user selects a new window - static AlignFrame currentAlignFrame; + public static AlignFrame currentAlignFrame; //This is the first frame to be displayed, and does not change AlignFrame initialAlignFrame; @@ -89,14 +179,26 @@ public class JalviewLite extends Applet file = getParameter("file"); + if(file==null) + { + //Maybe the sequences are added as parameters + StringBuffer data = new StringBuffer("PASTE"); + int i=1; + while( (file=getParameter("sequence"+i))!=null) + { + data.append(file.toString()+"\n"); + i++; + } + if(data.length()>5) + file = data.toString(); + } + final JalviewLite applet = this; if(getParameter("embedded")!=null && getParameter("embedded").equalsIgnoreCase("true")) { embedded = true; - LoadingThread loader = new LoadingThread(file, - AppletFormatAdapter.URL, - applet); + LoadingThread loader = new LoadingThread(file, applet); loader.start(); } else if (file != null) @@ -108,7 +210,6 @@ public class JalviewLite extends Applet public void actionPerformed(ActionEvent e) { LoadingThread loader = new LoadingThread(file, - AppletFormatAdapter.URL, applet); loader.start(); } @@ -132,16 +233,16 @@ public class JalviewLite extends Applet String format = new jalview.io.IdentifyFile().Identify(args[0],AppletFormatAdapter.FILE); - SequenceI[] sequences = null; + Alignment al = null; try{ - sequences = new AppletFormatAdapter().readFile(args[0], AppletFormatAdapter.FILE, format); + al = new AppletFormatAdapter().readFile(args[0], AppletFormatAdapter.FILE, format); }catch(java.io.IOException ex) { ex.printStackTrace(); } - if ( (sequences != null) && (sequences.length > 0)) + if ( (al != null) && (al.getHeight() > 0)) { - AlignFrame af = new AlignFrame(new Alignment(sequences), null, args[0]); + AlignFrame af = new AlignFrame(al, null, args[0], false); af.statusBar.setText("Successfully loaded file " + args[0]); } } @@ -167,6 +268,8 @@ public class JalviewLite extends Applet { public void windowClosing(WindowEvent e) { + if(frame instanceof AlignFrame) + ((AlignFrame)frame).closeMenuItem_actionPerformed(); if(currentAlignFrame == frame) { currentAlignFrame = null; @@ -186,44 +289,7 @@ public class JalviewLite extends Applet 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" @@ -247,8 +313,8 @@ public class JalviewLite extends Applet { 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); + g.drawString("Jalview Applet", 50, this.getSize().height/2 -30); + g.drawString("Loading Data...", 50, this.getSize().height/2); } @@ -262,43 +328,54 @@ public class JalviewLite extends Applet JalviewLite applet; public LoadingThread(String _file, - String _protocol, JalviewLite _applet) { file = _file; - if(inArchive(file)) + if(file.startsWith("PASTE")) + { + file = file.substring(5); + protocol = AppletFormatAdapter.PASTE; + } + else if(inArchive(file)) protocol = AppletFormatAdapter.CLASSLOADER; else - protocol = _protocol; - + { + file = addProtocol(file); + protocol = AppletFormatAdapter.URL; + } format = new jalview.io.IdentifyFile().Identify(file, protocol); applet = _applet; } public void run() { - SequenceI[] sequences = null; + Alignment al = null; try{ - sequences = new AppletFormatAdapter().readFile(file, protocol, + al = new AppletFormatAdapter().readFile(file, protocol, format); }catch(java.io.IOException ex) { ex.printStackTrace(); } - if ((sequences != null) && (sequences.length > 0)) + if ((al != null) && (al.getHeight() > 0)) { - currentAlignFrame = new AlignFrame(new Alignment(sequences), - applet, file); + currentAlignFrame = new AlignFrame(al, + applet, + file, + embedded); - initialAlignFrame = currentAlignFrame; + if(protocol==jalview.io.AppletFormatAdapter.PASTE) + currentAlignFrame.setTitle("Sequences from "+getDocumentBase()); - if (embedded) - currentAlignFrame.setEmbedded(); + initialAlignFrame = currentAlignFrame; currentAlignFrame.statusBar.setText("Successfully loaded file " + file); - String treeFile = applet.getParameter("treeFile"); + String treeFile = applet.getParameter("tree"); + if(treeFile==null) + treeFile = applet.getParameter("treeFile"); + if (treeFile != null) { try @@ -317,12 +394,7 @@ public class JalviewLite extends Applet 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); + currentAlignFrame.loadTree(fin, treeFile); } } catch (Exception ex) @@ -337,7 +409,14 @@ public class JalviewLite extends Applet if( !inArchive(param) ) param = addProtocol( param ); - currentAlignFrame.parseFeaturesFile(param); + currentAlignFrame.parseFeaturesFile(param, protocol); + } + + param = getParameter("showFeatureSettings"); + if(param !=null && param.equalsIgnoreCase("true")) + { + currentAlignFrame.viewport.showSequenceFeatures(true); + new FeatureSettings(currentAlignFrame.alignPanel); } param = getParameter("annotations"); @@ -346,35 +425,91 @@ public class JalviewLite extends Applet if( !inArchive(param) ) param = addProtocol( param ); - new AnnotationReader().readAnnotationFile( + new AnnotationFile().readAnnotationFile( currentAlignFrame.viewport.getAlignment(), - param); + param, + protocol); currentAlignFrame.alignPanel.fontChanged(); + currentAlignFrame.alignPanel.setScrollValues(0,0); + + } + + param = getParameter("jnetfile"); + if (param != null) + { + try + { + if (inArchive(param)) + protocol = AppletFormatAdapter.CLASSLOADER; + else + { + protocol = AppletFormatAdapter.URL; + param = addProtocol(param); + } + + jalview.io.JPredFile predictions = new jalview.io.JPredFile( + param, protocol); + new JnetAnnotationMaker().add_annotation(predictions, + currentAlignFrame.viewport.getAlignment(), + 0,false); // do not add sequence profile from concise output + currentAlignFrame.alignPanel.fontChanged(); + currentAlignFrame.alignPanel.setScrollValues(0, 0); + } catch (Exception ex) { + ex.printStackTrace(); + } } - String pdbfile = applet.getParameter("PDBFILE"); - if(pdbfile!=null) + param = getParameter("PDBFILE"); + if(param!=null) { - if( inArchive(pdbfile) ) + if( inArchive(param) ) protocol = AppletFormatAdapter.CLASSLOADER; else { protocol = AppletFormatAdapter.URL; - pdbfile = addProtocol(pdbfile); + param = addProtocol(param); } String sequence = applet.getParameter("PDBSEQ"); if(sequence!=null) { - new MCview.AppletPDBViewer(pdbfile, protocol, + new MCview.AppletPDBViewer(param, protocol, (Sequence)currentAlignFrame.getAlignViewport().getAlignment().findName(sequence), currentAlignFrame.getSeqcanvas()); } } + + int gIndex = 1; + param = getParameter("SEQUENCE_GROUP"+gIndex); + if(param!=null) + do{ + new AnnotationFile().readAnnotationFile( + currentAlignFrame.viewport.getAlignment(), + "JALVIEW_ANNOTATION\nSEQUENCE_GROUP\t"+param, + AppletFormatAdapter.PASTE); + gIndex++; + param = applet.getParameter("SEQUENCE_GROUP"+gIndex); + currentAlignFrame.alignPanel.repaint(); + }while(param!=null); + + gIndex = 1; + param = getParameter("PROPERTIES" + gIndex); + if (param != null) + do + { + new AnnotationFile().readAnnotationFile( + currentAlignFrame.viewport.getAlignment(), + "JALVIEW_ANNOTATION\nPROPERTIES\t" + param, + AppletFormatAdapter.PASTE); + gIndex++; + param = applet.getParameter("PROPERTIES" + gIndex); + currentAlignFrame.alignPanel.repaint(); + } + while (param != null); } else { @@ -391,7 +526,15 @@ public class JalviewLite extends Applet */ boolean inArchive(String file) { - return ( getClass().getResourceAsStream("/" + file) != null ); + //This might throw a security exception in certain browsers + //Netscape Communicator for instance. + try{ + return (getClass().getResourceAsStream("/" + file) != null); + }catch(Exception ex) + { + System.out.println("Exception checking resources: "+file+" "+ex); + return false; + } } String addProtocol(String file)