/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)\r
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)\r
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
* \r
* This file is part of Jalview.\r
* \r
*/\r
package jalview.appletgui;\r
\r
-import java.net.*;\r
-import java.util.*;\r
-\r
-import java.awt.*;\r
-import java.awt.event.*;\r
-\r
-import jalview.analysis.*;\r
+import jalview.analysis.AAFrequency;\r
+import jalview.analysis.AlignmentSorter;\r
+import jalview.analysis.Conservation;\r
import jalview.api.SequenceStructureBinding;\r
import jalview.bin.JalviewLite;\r
-import jalview.commands.*;\r
-import jalview.datamodel.*;\r
-import jalview.io.*;\r
-import jalview.schemes.*;\r
+import jalview.commands.CommandI;\r
+import jalview.commands.EditCommand;\r
+import jalview.commands.OrderCommand;\r
+import jalview.commands.RemoveGapColCommand;\r
+import jalview.commands.RemoveGapsCommand;\r
+import jalview.commands.SlideSequencesCommand;\r
+import jalview.commands.TrimRegionCommand;\r
+import jalview.datamodel.Alignment;\r
+import jalview.datamodel.AlignmentI;\r
+import jalview.datamodel.AlignmentOrder;\r
+import jalview.datamodel.ColumnSelection;\r
+import jalview.datamodel.PDBEntry;\r
+import jalview.datamodel.Sequence;\r
+import jalview.datamodel.SequenceGroup;\r
+import jalview.datamodel.SequenceI;\r
+import jalview.io.AnnotationFile;\r
+import jalview.io.AppletFormatAdapter;\r
+import jalview.io.FeaturesFile;\r
+import jalview.io.TCoffeeScoreFile;\r
+import jalview.schemes.Blosum62ColourScheme;\r
+import jalview.schemes.BuriedColourScheme;\r
+import jalview.schemes.ClustalxColourScheme;\r
+import jalview.schemes.ColourSchemeI;\r
+import jalview.schemes.HelixColourScheme;\r
+import jalview.schemes.HydrophobicColourScheme;\r
+import jalview.schemes.NucleotideColourScheme;\r
+import jalview.schemes.PIDColourScheme;\r
+import jalview.schemes.ResidueProperties;\r
+import jalview.schemes.StrandColourScheme;\r
+import jalview.schemes.TCoffeeColourScheme;\r
+import jalview.schemes.TaylorColourScheme;\r
+import jalview.schemes.TurnColourScheme;\r
+import jalview.schemes.ZappoColourScheme;\r
import jalview.structure.StructureSelectionManager;\r
\r
-public class AlignFrame extends EmbmenuFrame implements ActionListener,\r
- ItemListener, KeyListener\r
+import java.awt.BorderLayout;\r
+import java.awt.Canvas;\r
+import java.awt.CheckboxMenuItem;\r
+import java.awt.Color;\r
+import java.awt.Font;\r
+import java.awt.FontMetrics;\r
+import java.awt.Frame;\r
+import java.awt.Graphics;\r
+import java.awt.Label;\r
+import java.awt.Menu;\r
+import java.awt.MenuBar;\r
+import java.awt.MenuItem;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.FocusEvent;\r
+import java.awt.event.FocusListener;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.KeyListener;\r
+import java.awt.event.WindowAdapter;\r
+import java.awt.event.WindowEvent;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+import java.net.URL;\r
+import java.net.URLEncoder;\r
+import java.util.Enumeration;\r
+import java.util.Hashtable;\r
+import java.util.StringTokenizer;\r
+import java.util.Vector;\r
+\r
+public class AlignFrame extends EmbmenuFrame implements ActionListener, ItemListener, KeyListener\r
{\r
public AlignmentPanel alignPanel;\r
\r
int DEFAULT_HEIGHT = 500;\r
\r
String jalviewServletURL;\r
+ \r
+ TCoffeeScoreFile tcoffeeScoreFile;\r
\r
- public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet,\r
- String title, boolean embedded)\r
+ public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet, String title, boolean embedded)\r
{\r
-\r
if (applet != null)\r
{\r
jalviewServletURL = applet.getParameter("APPLICATION_URL");\r
}\r
\r
/**\r
- * DOCUMENT ME!\r
+ * Load a features file onto the alignment\r
* \r
- * @param String\r
- * DOCUMENT ME!\r
+ * @param file file URL, content, or other resolvable path\r
+ * @param type is protocol for accessing data referred to by file\r
*/\r
\r
public void parseFeaturesFile(String file, String type)\r
{\r
+ parseFeaturesFile(file, type, true);\r
+ }\r
+ \r
+ /**\r
+ * Load a features file onto the alignment\r
+ * \r
+ * @param file file URL, content, or other resolvable path\r
+ * @param type is protocol for accessing data referred to by file\r
+ * @param autoenabledisplay when true, display features flag will be automatically enabled if features are loaded\r
+ */\r
+ public void parseFeaturesFile(String file, String type, boolean autoenabledisplay)\r
+ { \r
Hashtable featureLinks = new Hashtable();\r
boolean featuresFile = false;\r
try\r
{\r
alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureLinks = featureLinks;\r
}\r
- viewport.showSequenceFeatures = true;\r
- sequenceFeatures.setState(true);\r
+ if (autoenabledisplay)\r
+ {\r
+ viewport.showSequenceFeatures = true;\r
+ sequenceFeatures.setState(true);\r
+ }\r
if (viewport.featureSettings != null)\r
{\r
viewport.featureSettings.refreshTable();\r
{\r
viewport.autocalculateConsensus = autoCalculate.getState();\r
}\r
+ else if (evt.getSource() == sortByTree)\r
+ {\r
+ viewport.sortByTree = sortByTree.getState();\r
+ }\r
else if (evt.getSource() == this.centreColumnLabelFlag)\r
{\r
centreColumnLabelFlag_stateChanged();\r
{\r
loadAnnotations();\r
}\r
+ else if( source == loadScores ) {\r
+ loadScores();\r
+ }\r
else if (source == outputAnnotations)\r
{\r
outputAnnotations(true);\r
{\r
changeColour(new Blosum62ColourScheme());\r
}\r
+ else if (source == tcoffeeColour) {\r
+ changeColour(new TCoffeeColourScheme(tcoffeeScoreFile));\r
+ }\r
else if (source == annotationColour)\r
{\r
new AnnotationColourChooser(viewport, alignPanel);\r
jalview.bin.JalviewLite.addFrame(frame, "Paste Annotations ", 400, 300);\r
\r
}\r
+ \r
+ public void loadScores() {\r
+ //TODO\r
+ \r
+ }\r
\r
public String outputAnnotations(boolean displayTextbox)\r
{\r
\r
private Hashtable getDisplayedFeatureCols()\r
{\r
- if (alignPanel.getFeatureRenderer() != null)\r
+ if (alignPanel.getFeatureRenderer() != null && viewport.featuresDisplayed!=null)\r
{\r
FeatureRenderer fr = alignPanel.getFeatureRenderer();\r
Hashtable fcols = new Hashtable();\r
\r
if (displayTextbox)\r
{\r
- CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this);\r
+ boolean frimport=false;\r
+ if (features==null || features.equals("No Features Visible"))\r
+ {\r
+ features = "# No features visible - paste some and import them here.";\r
+ frimport=true;\r
+ }\r
+ \r
+ CutAndPasteTransfer cap = new CutAndPasteTransfer(frimport, this);\r
+ if (frimport)\r
+ {\r
+ cap.setAnnotationImport();\r
+ }\r
Frame frame = new Frame();\r
frame.add(cap);\r
jalview.bin.JalviewLite.addFrame(frame, "Features", 600, 500);\r
-\r
cap.setText(features);\r
+ } else {\r
+ if (features==null)\r
+ features = "";\r
}\r
\r
return features;\r
\r
cs.setConsensus(viewport.hconsensus);\r
\r
- }\r
+ } \r
viewport.setGlobalColourScheme(cs);\r
\r
if (viewport.getColourAppliesToAllGroups())\r
sortByTree(treePanel, title); // treePanel.getTitle());\r
}\r
});\r
-\r
+ \r
treePanel.addWindowListener(new WindowAdapter()\r
{\r
public void windowOpened(WindowEvent e)\r
alignPanel.paintAlignment(true);\r
return true;\r
}\r
+\r
protected void documentation_actionPerformed()\r
{\r
alignPanel.av.applet.openJalviewHelpUrl();\r
MenuItem loadTree = new MenuItem("Load Associated Tree ...");\r
\r
MenuItem loadAnnotations = new MenuItem("Load Features/Annotations ...");\r
+ \r
+ MenuItem loadScores = new MenuItem("Load Associated T-Coffee scores ...");\r
\r
MenuItem outputFeatures = new MenuItem("Export Features ...");\r
\r
MenuItem PIDColour = new MenuItem();\r
\r
MenuItem BLOSUM62Colour = new MenuItem();\r
+ \r
+ MenuItem tcoffeeColour = new MenuItem();\r
\r
MenuItem njTreeBlosumMenuItem = new MenuItem();\r
\r
CheckboxMenuItem autoCalculate = new CheckboxMenuItem(\r
"Autocalculate Consensus", true);\r
\r
+ CheckboxMenuItem sortByTree = new CheckboxMenuItem(\r
+ "Sort Alignment With New Tree", true);\r
+\r
Menu sortByTreeMenu = new Menu();\r
\r
Menu sort = new Menu();\r
\r
loadTree.addActionListener(this);\r
loadAnnotations.addActionListener(this);\r
+ loadScores.addActionListener(this);\r
outputFeatures.addActionListener(this);\r
outputAnnotations.addActionListener(this);\r
selectAllSequenceMenuItem.addActionListener(this);\r
PIDColour.addActionListener(this);\r
BLOSUM62Colour.setLabel("BLOSUM62 Score");\r
BLOSUM62Colour.addActionListener(this);\r
- avDistanceTreeBlosumMenuItem\r
- .setLabel("Average Distance Using BLOSUM62");\r
+ tcoffeeColour.setLabel("T-Coffee Scores");\r
+ tcoffeeColour.setEnabled(false); // it will enabled only if a score file is provided\r
+ tcoffeeColour.addActionListener(this);\r
+ avDistanceTreeBlosumMenuItem .setLabel("Average Distance Using BLOSUM62");\r
avDistanceTreeBlosumMenuItem.addActionListener(this);\r
njTreeBlosumMenuItem.setLabel("Neighbour Joining Using BLOSUM62");\r
njTreeBlosumMenuItem.addActionListener(this);\r
sort.setLabel("Sort");\r
calculate.setLabel("Calculate Tree");\r
autoCalculate.addItemListener(this);\r
+ sortByTree.addItemListener(this);\r
inputText.setLabel("Input from textbox");\r
inputText.addActionListener(this);\r
centreColumnLabelFlag.setLabel("Centre column labels");\r
fileMenu.add(inputText);\r
fileMenu.add(loadTree);\r
fileMenu.add(loadAnnotations);\r
-\r
+ fileMenu.add(loadScores);\r
+ \r
fileMenu.addSeparator();\r
fileMenu.add(outputTextboxMenu);\r
fileMenu.add(outputFeatures);\r
colourMenu.add(turnColour);\r
colourMenu.add(buriedColour);\r
colourMenu.add(nucleotideColour);\r
+ colourMenu.add(tcoffeeColour);\r
colourMenu.add(userDefinedColour);\r
colourMenu.addSeparator();\r
colourMenu.add(conservationMenuItem);\r
calculateMenu.add(pairwiseAlignmentMenuItem);\r
calculateMenu.add(PCAMenuItem);\r
calculateMenu.add(autoCalculate);\r
+ calculateMenu.add(sortByTree);\r
this.add(statusBar, BorderLayout.SOUTH);\r
pasteMenu.add(pasteNew);\r
pasteMenu.add(pasteThis);\r
public String getSequenceSetId() {\r
return viewport.getSequenceSetId();\r
}\r
+ \r
+ \r
+ /**\r
+ * Load the (T-Coffee) score file from the specified url \r
+ * \r
+ * @param url The absolute path from where download and read the score file\r
+ * @throws IOException \r
+ */\r
+ public void loadScoreFile( URL url ) throws IOException {\r
+ \r
+ TCoffeeScoreFile file = TCoffeeScoreFile.load( new InputStreamReader( url.openStream() ) );\r
+ if( file == null ) {\r
+ throw new RuntimeException("The file provided does not match the T-Coffee scores file format");\r
+ }\r
+ \r
+ tcoffeeColour.setEnabled(true);\r
+ tcoffeeScoreFile = file;\r
+ \r
+ // switch to this color\r
+ changeColour(new TCoffeeColourScheme(tcoffeeScoreFile));\r
+ }\r
+ \r
+ \r
}\r