Merge branch 'Tcoffee_JAL-1065' of https://source.jalview.org/git/jalview into test_p...
[jalview.git] / src / jalview / gui / AlignFrame.java
index 2ecd947..b3e34fb 100755 (executable)
@@ -55,6 +55,7 @@ import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.io.JnetAnnotationMaker;
 import jalview.io.NewickFile;
+import jalview.io.TCoffeeScoreFile;
 import jalview.jbgui.GAlignFrame;
 import jalview.schemes.Blosum62ColourScheme;
 import jalview.schemes.BuriedColourScheme;
@@ -67,11 +68,11 @@ import jalview.schemes.NucleotideColourScheme;
 import jalview.schemes.PIDColourScheme;
 import jalview.schemes.ResidueProperties;
 import jalview.schemes.StrandColourScheme;
+import jalview.schemes.TCoffeeColourScheme;
 import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
-import jalview.ws.WSMenuEntryProviderI;
 import jalview.ws.jws1.Discoverer;
 import jalview.ws.jws2.Jws2Discoverer;
 
@@ -141,6 +142,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   AlignViewport viewport;
 
   Vector alignPanels = new Vector();
+  
+  TCoffeeScoreFile tcoffeeScoreFile;
 
   /**
    * Last format used to load or save alignments in this window
@@ -3859,7 +3862,70 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       }
     }
   }
-
+  
+  @Override
+  public void loadScores_actionPerformed(ActionEvent e)
+  {
+           // Pick the tree file
+           JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
+           chooser.setFileView(new JalviewFileView());
+           chooser.setDialogTitle("Select a T-Coffee scores ascii file");
+           chooser.setToolTipText("Load a score file");
+
+           int value = chooser.showOpenDialog(null);
+
+           if (value == JalviewFileChooser.APPROVE_OPTION)
+           {
+             String sFilePath = chooser.getSelectedFile().getPath();
+             jalview.bin.Cache.setProperty("LAST_DIRECTORY", sFilePath);
+           
+             
+             try 
+             {
+                 TCoffeeScoreFile result = TCoffeeScoreFile.load(new File(sFilePath));
+                 if( result == null ) { throw new RuntimeException("The file provided does not match the T-Coffee scores file format"); }
+
+                 // TODO check that the loaded scores matches the current MSA 'dimension'
+                 changeColour( new TCoffeeColourScheme(result) );
+                 tcoffeeScoreFile = result;
+                 tcoffeeColour.setEnabled(true);
+                 tcoffeeColour.setSelected(true);
+                 
+             } 
+             catch (Exception ex) {
+               JOptionPane.showMessageDialog(
+                                       Desktop.desktop, 
+                                       ex.getMessage(), 
+                                       "Problem reading tree file", 
+                                       JOptionPane.WARNING_MESSAGE);
+
+               ex.printStackTrace();
+             }
+           }
+
+  } 
+
+  
+  @Override
+  protected void tcoffeeColorScheme_actionPerformed(ActionEvent e) {
+         if( tcoffeeScoreFile != null ) {
+         changeColour( new TCoffeeColourScheme(tcoffeeScoreFile) );
+         }
+  }
+  
+//  /**
+//   * Load the (T-Coffee) score file from the specified url 
+//   * 
+//   * @param url The absolute path from where download and read the score file
+//   * @throws IOException 
+//   */
+//  public void loadScoreFile(URL url ) throws IOException {
+//       
+//       TCoffeeScoreFile result = new TCoffeeScoreFile();
+//       result.parse( new InputStreamReader( url.openStream() ) );
+//       tcoffeeScoreFile = result;
+//  }  
+  
   public TreePanel ShowNewickTree(NewickFile nf, String title)
   {
     return ShowNewickTree(nf, title, 600, 500, 4, 5);