X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=e03f2f4126b30b104e5d06d8800837163026b6f7;hb=1c66dc9053356a709e9cd9d3282517b5221f1ba2;hp=3ebc083686899da4af6d99789d67a8ac60c63a3c;hpb=d053a3c980cf4318b9a19a255f9fc870e74de989;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 3ebc083..e03f2f4 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -17,23 +17,80 @@ */ package jalview.appletgui; -import java.net.*; -import java.util.*; - -import java.awt.*; -import java.awt.event.*; - -import jalview.analysis.*; +import jalview.analysis.AAFrequency; +import jalview.analysis.AlignmentSorter; +import jalview.analysis.Conservation; import jalview.api.SequenceStructureBinding; import jalview.bin.JalviewLite; -import jalview.commands.*; -import jalview.datamodel.*; -import jalview.io.*; -import jalview.schemes.*; +import jalview.commands.CommandI; +import jalview.commands.EditCommand; +import jalview.commands.OrderCommand; +import jalview.commands.RemoveGapColCommand; +import jalview.commands.RemoveGapsCommand; +import jalview.commands.SlideSequencesCommand; +import jalview.commands.TrimRegionCommand; +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.AlignmentOrder; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.PDBEntry; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.io.AnnotationFile; +import jalview.io.AppletFormatAdapter; +import jalview.io.FeaturesFile; +import jalview.io.TCoffeeScoreFile; +import jalview.schemes.Blosum62ColourScheme; +import jalview.schemes.BuriedColourScheme; +import jalview.schemes.ClustalxColourScheme; +import jalview.schemes.ColourSchemeI; +import jalview.schemes.HelixColourScheme; +import jalview.schemes.HydrophobicColourScheme; +import jalview.schemes.NucleotideColourScheme; +import jalview.schemes.PIDColourScheme; +import jalview.schemes.PurinePyrimidineColourScheme; +import jalview.schemes.RNAHelicesColourChooser; +import jalview.schemes.ResidueProperties; +import jalview.schemes.StrandColourScheme; +import jalview.schemes.TCoffeeColourScheme; +import jalview.schemes.TaylorColourScheme; +import jalview.schemes.TurnColourScheme; +import jalview.schemes.ZappoColourScheme; import jalview.structure.StructureSelectionManager; -public class AlignFrame extends EmbmenuFrame implements ActionListener, - ItemListener, KeyListener +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.CheckboxMenuItem; +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Label; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.StringTokenizer; +import java.util.Vector; + +public class AlignFrame extends EmbmenuFrame implements ActionListener, ItemListener, KeyListener { public AlignmentPanel alignPanel; @@ -44,11 +101,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, int DEFAULT_HEIGHT = 500; String jalviewServletURL; + - public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet, - String title, boolean embedded) + public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet, String title, boolean embedded) { - if (applet != null) { jalviewServletURL = applet.getParameter("APPLICATION_URL"); @@ -131,7 +187,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } - + if (viewport.getAlignment().isNucleotide()) + { + viewport.updateStrucConsensus(alignPanel); + if (viewport.getAlignment().hasRNAStructure()) + { + RNAHelixColour.setEnabled(true); + } + else { + RNAHelixColour.setEnabled(false); + } + } else { + RNAHelixColour.setEnabled(false); + purinePyrimidineColour.setEnabled(false); + } // Some JVMS send keyevents to Top frame or lowest panel, // Havent worked out why yet. So add to both this frame and seqCanvas for // now @@ -684,6 +753,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { loadAnnotations(); } + else if( source == loadScores ) { + loadScores(); + } else if (source == outputAnnotations) { outputAnnotations(true); @@ -919,6 +991,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { changeColour(new NucleotideColourScheme()); } + else if (source == purinePyrimidineColour) + { + changeColour(new PurinePyrimidineColourScheme()); + } + else if (source == RNAHelixColour) + { + new RNAHelicesColourChooser(viewport, alignPanel); + } else if (source == modifyPID) { modifyPID_actionPerformed(); @@ -939,6 +1019,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { changeColour(new Blosum62ColourScheme()); } + else if (source == tcoffeeColour) { + changeColour(new TCoffeeColourScheme(alignPanel.getAlignment())); + } else if (source == annotationColour) { new AnnotationColourChooser(viewport, alignPanel); @@ -1028,6 +1111,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, jalview.bin.JalviewLite.addFrame(frame, "Paste Annotations ", 400, 300); } + + public void loadScores() { + //TODO + + } public String outputAnnotations(boolean displayTextbox) { @@ -1216,7 +1304,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } /** - * DOCUMENT ME! + * TODO: JAL-1104 */ void updateEditMenuBar() { @@ -1247,6 +1335,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } + /** + * TODO: JAL-1104 + */ public void addHistoryItem(CommandI command) { if (command.getSize() > 0) @@ -1259,6 +1350,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } /** + * TODO: JAL-1104 * DOCUMENT ME! * * @param e @@ -1287,6 +1379,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } /** + * TODO: JAL-1104 * DOCUMENT ME! * * @param e @@ -2251,7 +2344,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, cs.setConsensus(viewport.getSequenceConsensusHash()); - } + } viewport.setGlobalColourScheme(cs); if (viewport.getColourAppliesToAllGroups()) @@ -2276,7 +2369,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { try { - sg.cs = (ColourSchemeI) cs.getClass().newInstance(); + sg.cs = cs.getClass().newInstance(); } catch (Exception ex) { ex.printStackTrace(); @@ -2701,6 +2794,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MenuItem loadTree = new MenuItem("Load Associated Tree ..."); MenuItem loadAnnotations = new MenuItem("Load Features/Annotations ..."); + + MenuItem loadScores = new MenuItem("Load Associated T-Coffee scores ..."); MenuItem outputFeatures = new MenuItem("Export Features ..."); @@ -2774,11 +2869,16 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MenuItem buriedColour = new MenuItem(); + MenuItem purinePyrimidineColour = new MenuItem(); + MenuItem RNAHelixColour = new MenuItem(); + MenuItem userDefinedColour = new MenuItem(); MenuItem PIDColour = new MenuItem(); MenuItem BLOSUM62Colour = new MenuItem(); + + MenuItem tcoffeeColour = new MenuItem(); MenuItem njTreeBlosumMenuItem = new MenuItem(); @@ -2903,6 +3003,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, loadTree.addActionListener(this); loadAnnotations.addActionListener(this); + loadScores.addActionListener(this); outputFeatures.addActionListener(this); outputAnnotations.addActionListener(this); selectAllSequenceMenuItem.addActionListener(this); @@ -2962,14 +3063,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, turnColour.addActionListener(this); buriedColour.setLabel("Buried Index"); buriedColour.addActionListener(this); + purinePyrimidineColour.setLabel("Purine/Pyrimidine"); + purinePyrimidineColour.addActionListener(this); + RNAHelixColour.setLabel("by RNA Helices"); + RNAHelixColour.addActionListener(this); userDefinedColour.setLabel("User Defined..."); userDefinedColour.addActionListener(this); PIDColour.setLabel("Percentage Identity"); PIDColour.addActionListener(this); BLOSUM62Colour.setLabel("BLOSUM62 Score"); BLOSUM62Colour.addActionListener(this); - avDistanceTreeBlosumMenuItem - .setLabel("Average Distance Using BLOSUM62"); + tcoffeeColour.setLabel("T-Coffee Scores"); + tcoffeeColour.setEnabled(false); // it will enabled only if a score file is provided + tcoffeeColour.addActionListener(this); + avDistanceTreeBlosumMenuItem .setLabel("Average Distance Using BLOSUM62"); avDistanceTreeBlosumMenuItem.addActionListener(this); njTreeBlosumMenuItem.setLabel("Neighbour Joining Using BLOSUM62"); njTreeBlosumMenuItem.addActionListener(this); @@ -3114,7 +3221,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, fileMenu.add(inputText); fileMenu.add(loadTree); fileMenu.add(loadAnnotations); - + fileMenu.add(loadScores); + fileMenu.addSeparator(); fileMenu.add(outputTextboxMenu); fileMenu.add(outputFeatures); @@ -3175,6 +3283,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, colourMenu.add(turnColour); colourMenu.add(buriedColour); colourMenu.add(nucleotideColour); + colourMenu.add(purinePyrimidineColour); + colourMenu.add(tcoffeeColour); colourMenu.add(userDefinedColour); colourMenu.addSeparator(); colourMenu.add(conservationMenuItem); @@ -3182,6 +3292,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, colourMenu.add(abovePIDThreshold); colourMenu.add(modifyPID); colourMenu.add(annotationColour); + colourMenu.add(RNAHelixColour); calculateMenu.add(sort); calculateMenu.add(calculate); calculateMenu.addSeparator(); @@ -3602,4 +3713,51 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public String getSequenceSetId() { return viewport.getSequenceSetId(); } + + + /** + * Load the (T-Coffee) score file from the specified url + * + * @param source File/URL/T-COFFEE score file contents + * @throws IOException + * @return true if alignment was annotated with data from source + */ + public boolean loadScoreFile( String source ) throws IOException { + + TCoffeeScoreFile file = new TCoffeeScoreFile(source, AppletFormatAdapter.checkProtocol(source)); + if( !file.isValid()) { + // TODO: raise dialog for gui + System.err.println("Problems parsing T-Coffee scores: "+file.getWarningMessage()); + System.err.println("Origin was:\n"+source); + return false; + } + + /* + * check that the score matrix matches the alignment dimensions + */ + AlignmentI aln; + if( (aln=viewport.getAlignment()) != null && (aln.getHeight() != file.getHeight() || aln.getWidth() != file.getWidth()) ) { + // TODO: raise a dialog box here rather than bomb out. + System.err.println("The scores matrix does not match the alignment dimensions"); + + } + + // TODO add parameter to indicate if matching should be done + if (file.annotateAlignment(alignPanel.getAlignment(), false)) + { + alignPanel.fontChanged(); + tcoffeeColour.setEnabled(true); + // switch to this color + changeColour(new TCoffeeColourScheme(alignPanel.getAlignment())); + return true; + } else { + System.err.println("Problems resolving T-Coffee scores:"); + if (file.getWarningMessage()!=null) { + System.err.println(file.getWarningMessage()); + } + } + return false; + } + + }