patch fixes JAL-1558
[jalview.git] / src / jalview / gui / PCAPanel.java
index fc32e54..133c0ce 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
  * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
@@ -28,7 +28,6 @@ import javax.swing.*;
 import jalview.datamodel.*;
 import jalview.jbgui.*;
 import jalview.schemes.ResidueProperties;
-import jalview.schemes.ScoreMatrix;
 import jalview.util.MessageManager;
 import jalview.viewmodel.PCAModel;
 
@@ -115,26 +114,37 @@ public class PCAPanel extends GPCAPanel implements Runnable,
   protected void scoreMatrix_menuSelected()
   {
     scoreMatrixMenu.removeAll();
-    for (final Object sm:ResidueProperties.scoreMatrices.keySet())
+    for (final String sm:ResidueProperties.scoreMatrices.keySet())
     {
-      JMenuItem jm=new JMenuItem();
-      jm.setText((String)sm);
-      jm.setSelected(pcaModel.getScore_matrix().equals((String)sm));
-      final PCAPanel us = this;
-      jm.addActionListener(new ActionListener()
+      if (ResidueProperties.getScoreMatrix(sm) != null)
       {
-        @Override
-        public void actionPerformed(ActionEvent e)
+        // create an entry for this score matrix for use in PCA
+        JCheckBoxMenuItem jm = new JCheckBoxMenuItem();
+        jm.setText(MessageManager
+                .getStringOrReturn("label.score_model", sm));
+        jm.setSelected(pcaModel.getScore_matrix().equals(sm));
+        if ((ResidueProperties.scoreMatrices.get(sm).isDNA() && ResidueProperties.scoreMatrices
+                .get(sm).isProtein())
+                || pcaModel.isNucleotide() == ResidueProperties.scoreMatrices
+                        .get(sm).isDNA())
         {
-          if (!pcaModel.getScore_matrix().equals((String)sm))
+          final PCAPanel us = this;
+          jm.addActionListener(new ActionListener()
           {
-            pcaModel.setScore_matrix((String) sm);
-            Thread worker = new Thread(us);
-            worker.start();
-          }
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+              if (!pcaModel.getScore_matrix().equals((String) sm))
+              {
+                pcaModel.setScore_matrix((String) sm);
+                Thread worker = new Thread(us);
+                worker.start();
+              }
+            }
+          });
+          scoreMatrixMenu.add(jm);
         }
-      });
-      scoreMatrixMenu.add(jm);   
+      }
     }
   }
   public void bgcolour_actionPerformed(ActionEvent e)
@@ -203,6 +213,7 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     if (!pcaModel.isNucleotide())
     {
       pcaModel.setNucleotide(true);
+      pcaModel.setScore_matrix("DNA");
       Thread worker = new Thread(this);
       worker.start();
     }
@@ -216,6 +227,7 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     if (pcaModel.isNucleotide())
     {
       pcaModel.setNucleotide(false);
+      pcaModel.setScore_matrix("BLOSUM62");
       Thread worker = new Thread(this);
       worker.start();
     }