X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalviewLite.java;h=ea425d0b228e8e1273f35b1f1d308adf7b3be1fd;hb=3e3378e2ccfea39a2b161600c5a2029716acd1b7;hp=a26b9d05b83c26ac560cbbeb3f33fb2dccdc5537;hpb=8f8dbc28e40a7e23e984882191ef2f9772bb1dbb;p=jalview.git diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index a26b9d0..ea425d0 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,6 @@ import java.applet.*; import java.awt.*; import java.awt.event.*; -import jalview.appletgui.TreePanel; /** @@ -45,7 +44,13 @@ public class JalviewLite extends Applet 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; @@ -82,17 +87,27 @@ public class JalviewLite extends Applet this.setBackground(new Color(r, g, b)); file = getParameter("file"); - if(file.indexOf("://")==-1) - file = getCodeBase() + 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, - "URL", - applet); + LoadingThread loader = new LoadingThread(file, applet); loader.start(); } else if (file != null) @@ -104,7 +119,6 @@ public class JalviewLite extends Applet public void actionPerformed(ActionEvent e) { LoadingThread loader = new LoadingThread(file, - "URL", applet); loader.start(); } @@ -126,12 +140,18 @@ public class JalviewLite extends Applet System.exit(1); } - String format = jalview.io.IdentifyFile.Identify(args[0],"File"); - SequenceI[] sequences = new AppletFormatAdapter().readFile(args[0], "File", format); + String format = new jalview.io.IdentifyFile().Identify(args[0],AppletFormatAdapter.FILE); + 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]); + AlignFrame af = new AlignFrame(new Alignment(sequences), null, args[0], false); af.statusBar.setText("Successfully loaded file " + args[0]); } } @@ -162,7 +182,7 @@ public class JalviewLite extends Applet currentAlignFrame = null; } lastFrameX -=40; - lastFrameY-=40; + lastFrameY -=40; frame.setMenuBar(null); frame.dispose(); } @@ -176,6 +196,23 @@ 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"); @@ -234,51 +271,74 @@ public class JalviewLite extends Applet String format; JalviewLite applet; - public LoadingThread(String file, - String protocol, - JalviewLite applet) + public LoadingThread(String _file, + JalviewLite _applet) { - this.file = file; - this.protocol = protocol; - format = jalview.io.IdentifyFile.Identify(file, "URL"); - this.applet = applet; + file = _file; + if(file.startsWith("PASTE")) + { + file = file.substring(5); + protocol = AppletFormatAdapter.PASTE; + } + else if(inArchive(file)) + protocol = AppletFormatAdapter.CLASSLOADER; + else + { + file = addProtocol(file); + protocol = AppletFormatAdapter.URL; + } + format = new jalview.io.IdentifyFile().Identify(file, protocol); + applet = _applet; } public void run() { SequenceI[] sequences = null; - sequences = new AppletFormatAdapter().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)) { currentAlignFrame = new AlignFrame(new Alignment(sequences), - applet, file); - if (embedded) - currentAlignFrame.setEmbedded(); + applet, + file, + embedded); + + if(protocol==jalview.io.AppletFormatAdapter.PASTE) + currentAlignFrame.setTitle("Sequences from "+getDocumentBase()); + + 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) { - if (treeFile.indexOf("://") == -1) - treeFile = getCodeBase() + treeFile; - try { - jalview.io.NewickFile fin = new jalview.io.NewickFile(applet. - getCodeBase() + treeFile, "URL"); + 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", applet.getCodeBase() + treeFile); - addFrame(tp, treeFile, 600, 500); - currentAlignFrame.addTreeMenuItem(tp, treeFile); + currentAlignFrame.loadTree(fin, treeFile); } } catch (Exception ex) @@ -290,37 +350,76 @@ public class JalviewLite extends Applet String param = getParameter("features"); if (param != null) { - if (param.indexOf("://") == -1) - param = getCodeBase() + param; + 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); + currentAlignFrame.featureSettings_actionPerformed(); } param = getParameter("annotations"); if (param != null) { - if (param.indexOf("://") == -1) - param = getCodeBase() + param; + if( !inArchive(param) ) + param = addProtocol( param ); - new AnnotationReader().readAnnotationFile( + new AnnotationFile().readAnnotationFile( currentAlignFrame.viewport.getAlignment(), param); 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) { - if(pdbfile.indexOf("://")==-1) - pdbfile = getCodeBase() + pdbfile; + 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, "URL", + new MCview.AppletPDBViewer(pdbfile, protocol, (Sequence)currentAlignFrame.getAlignViewport().getAlignment().findName(sequence), currentAlignFrame.getSeqcanvas()); } @@ -334,5 +433,32 @@ 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) + { + //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) + { + if (file.indexOf("://") == -1) + file = getCodeBase() + file; + + return file; + } + } }