JAL-2499 JAL-2403 push 'configure for view' inside ScoreModels, defer
[jalview.git] / src / jalview / gui / PCAPanel.java
index 482dff3..0675cdf 100644 (file)
@@ -24,8 +24,6 @@ import jalview.analysis.scoremodels.ScoreModels;
 import jalview.analysis.scoremodels.SimilarityParams;
 import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.SimilarityParamsI;
-import jalview.api.analysis.ViewBasedAnalysisI;
-import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.AlignmentView;
@@ -83,20 +81,20 @@ public class PCAPanel extends GPCAPanel implements Runnable,
    */
   public PCAPanel(AlignmentPanel alignPanel)
   {
-    this(alignPanel, ScoreModels.getInstance().getDefaultModel(
-            !alignPanel.av.getAlignment().isNucleotide()),
-            SimilarityParams.SeqSpace);
+    this(alignPanel, ScoreModels.getInstance()
+            .getDefaultModel(!alignPanel.av.getAlignment().isNucleotide())
+            .getName(), SimilarityParams.SeqSpace);
   }
 
   /**
-   * Constructor given sequence data, a similarity (or distance) score model,
-   * and score calculation parameters
+   * Constructor given sequence data, a similarity (or distance) score model
+   * name, and score calculation parameters
    * 
    * @param alignPanel
-   * @param scoreModel
+   * @param modelName
    * @param params
    */
-  public PCAPanel(AlignmentPanel alignPanel, ScoreModelI scoreModel,
+  public PCAPanel(AlignmentPanel alignPanel, String modelName,
           SimilarityParamsI params)
   {
     super();
@@ -128,6 +126,8 @@ public class PCAPanel extends GPCAPanel implements Runnable,
       seqs = av.getSelectionGroup().getSequencesInOrder(av.getAlignment());
     }
 
+    ScoreModelI scoreModel = ScoreModels.getInstance().getScoreModel(
+            modelName, ap);
     pcaModel = new PCAModel(seqstrings, seqs, nucleotide, scoreModel,
             params);
     PaintRefresher.Register(this, av.getSequenceSetId());
@@ -184,7 +184,8 @@ public class PCAPanel extends GPCAPanel implements Runnable,
           {
             if (!pcaModel.getScoreModelName().equals(name))
             {
-              ScoreModelI sm2 = configureScoreModel(sm);
+              ScoreModelI sm2 = ScoreModels.getInstance().getScoreModel(
+                      name, ap);
               pcaModel.setScoreModel(sm2);
               Thread worker = new Thread(PCAPanel.this);
               worker.start();
@@ -776,28 +777,4 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     top = t;
     zCombobox.setSelectedIndex(2);
   }
-
-  /**
-   * 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(ScoreModelI sm)
-  {
-    if (sm instanceof ViewBasedAnalysisI)
-    {
-      try
-      {
-        sm = sm.getClass().newInstance();
-        ((ViewBasedAnalysisI) sm).configureFromAlignmentView(ap);
-      } catch (Exception q)
-      {
-        Cache.log.error("Couldn't create a scoremodel instance for "
-                + sm.getName());
-      }
-    }
-    return sm;
-  }
 }