JAL-1632 refactored NJTree constructor to include SimilarityParams
[jalview.git] / src / jalview / appletgui / TreePanel.java
index 5b12fa6..7266665 100644 (file)
@@ -22,10 +22,11 @@ package jalview.appletgui;
 
 import jalview.analysis.NJTree;
 import jalview.analysis.scoremodels.ScoreModels;
+import jalview.analysis.scoremodels.SimilarityParams;
 import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.ViewBasedAnalysisI;
+import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentView;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SequenceI;
 import jalview.io.NewickFile;
@@ -219,40 +220,8 @@ public class TreePanel extends EmbmenuFrame implements ActionListener,
       }
       else
       {
-        int start, end;
-        SequenceI[] seqs;
-        boolean selview = av.getSelectionGroup() != null
-                && av.getSelectionGroup().getSize() > 1;
-        AlignmentView seqStrings = av.getAlignmentView(selview);
-        if (!selview)
-        {
-          start = 0;
-          end = av.getAlignment().getWidth();
-          seqs = av.getAlignment().getSequencesArray();
-        }
-        else
-        {
-          start = av.getSelectionGroup().getStartRes();
-          end = av.getSelectionGroup().getEndRes() + 1;
-          seqs = av.getSelectionGroup().getSequencesInOrder(
-                  av.getAlignment());
-        }
-        ScoreModelI sm = ScoreModels.getInstance().forName(pwtype);
-        if (sm instanceof ViewBasedAnalysisI)
-        {
-          try
-          {
-            sm = sm.getClass().newInstance();
-            ((ViewBasedAnalysisI) sm)
-                    .configureFromAlignmentView(treeCanvas.ap);
-          } catch (Exception q)
-          {
-            System.err.println("Couldn't create a scoremodel instance for "
-                    + sm.getName());
-            q.printStackTrace();
-          }
-        }
-        tree = new NJTree(seqs, seqStrings, type, pwtype, sm, start, end);
+        ScoreModelI sm = configureScoreModel(pwtype);
+        tree = new NJTree(av, type, sm, SimilarityParams.Jalview);
       }
 
       tree.reCount(tree.getTopNode());
@@ -420,4 +389,29 @@ public class TreePanel extends EmbmenuFrame implements ActionListener,
     inputData.addActionListener(this);
   }
 
+  /**
+   * Gets the score model for the given name. If the score model is one that
+   * requires to get state data from the current view, allow it to do so
+   * 
+   * @param sm
+   * @return
+   */
+  protected ScoreModelI configureScoreModel(String modelName)
+  {
+    ScoreModelI sm = ScoreModels.getInstance().forName(modelName);
+    if (sm instanceof ViewBasedAnalysisI)
+    {
+      try
+      {
+        sm = sm.getClass().newInstance();
+        ((ViewBasedAnalysisI) sm).configureFromAlignmentView(treeCanvas.ap);
+      } catch (Exception q)
+      {
+        Cache.log.error("Couldn't create a scoremodel instance for "
+                + sm.getName());
+      }
+    }
+    return sm;
+  }
+
 }