fixed incorrect panel title
[jalview.git] / src / jalview / gui / TreePanel.java
index 3af174a..67ac836 100755 (executable)
 package jalview.gui;
 
 import jalview.analysis.AlignmentSorter;
-import jalview.analysis.AverageDistanceTree;
-import jalview.analysis.NJTree;
-import jalview.analysis.TreeBuilder;
 import jalview.analysis.TreeModel;
-import jalview.analysis.scoremodels.ScoreModels;
-import jalview.api.analysis.ScoreModelI;
-import jalview.api.analysis.SimilarityParamsI;
 import jalview.bin.Cache;
 import jalview.commands.CommandI;
 import jalview.commands.OrderCommand;
@@ -41,7 +35,7 @@ import jalview.datamodel.NodeTransformI;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.SequenceNode;
-import jalview.ext.archaeopteryx.Testo;
+import jalview.ext.archaeopteryx.ArchaeopteryxNewickInit;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.io.NewickFile;
@@ -56,9 +50,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.image.BufferedImage;
 import java.beans.PropertyChangeEvent;
-import java.io.File;
 import java.io.FileOutputStream;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -77,14 +69,12 @@ import org.jibble.epsgraphics.EpsGraphics2D;
  */
 public class TreePanel extends GTreePanel
 {
-  String treeType;
+  String substitutionMatrix;
 
-  String scoreModelName; // if tree computed
+  String treeType;
 
   String treeTitle; // if tree loaded
 
-  SimilarityParamsI similarityParams;
-
   TreeCanvas treeCanvas;
 
   TreeModel tree;
@@ -95,28 +85,37 @@ public class TreePanel extends GTreePanel
    * Creates a new TreePanel object.
    * 
    * @param ap
-   * @param type
-   * @param modelName
-   * @param options
+   * @param tree
    */
-  public TreePanel(AlignmentPanel ap, String type, String modelName,
-          SimilarityParamsI options)
+  public TreePanel(AlignmentPanel ap, TreeModel tree, String treeType,
+          String substitutionMatrix)
   {
     super();
-    this.similarityParams = options;
-    initTreePanel(ap, type, modelName, null, null);
+    this.treeType = treeType;
+    this.substitutionMatrix = substitutionMatrix;
+    this.tree = tree;
+    initNewTreePanel(ap, tree);
 
     // We know this tree has distances. JBPNote TODO: prolly should add this as
     // a userdefined default
     // showDistances(true);
   }
 
+  /**
+   * Creates a new TreePanel object.
+   * 
+   * @param alignPanel
+   * @param newtree
+   * @param theTitle
+   * @param inputData
+   * @param viewport
+   */
   public TreePanel(AlignmentPanel alignPanel, NewickFile newtree,
           String theTitle, AlignmentView inputData)
   {
     super();
     this.treeTitle = theTitle;
-    initTreePanel(alignPanel, null, null, newtree, inputData);
+    initLoadedTreePanel(alignPanel, newtree, inputData);
   }
 
   public AlignmentI getAlignment()
@@ -129,17 +128,30 @@ public class TreePanel extends GTreePanel
     return treeCanvas.av;
   }
 
-  void initTreePanel(AlignmentPanel ap, String type, String modelName,
+  void initNewTreePanel(AlignmentPanel ap, TreeModel tree)
+  {
+    buildTreeCanvas(ap);
+
+    TreeLoader tl = new TreeLoader(null, null);
+    tl.start();
+
+  }
+  void initLoadedTreePanel(AlignmentPanel ap, 
           NewickFile newTree, AlignmentView inputData)
   {
+    buildTreeCanvas(ap);
 
-    av = ap.av;
-    this.treeType = type;
-    this.scoreModelName = modelName;
+    TreeLoader tl = new TreeLoader(newTree, inputData);
+    tl.start();
+  }
+
+public void buildTreeCanvas(AlignmentPanel ap) { 
+     av = ap.av;
 
     treeCanvas = new TreeCanvas(this, ap, scrollPane);
     scrollPane.setViewportView(treeCanvas);
 
+
     PaintRefresher.Register(this, ap.av.getSequenceSetId());
 
     buildAssociatedViewMenu();
@@ -174,8 +186,7 @@ public class TreePanel extends GTreePanel
     });
 
 
-    TreeLoader tl = new TreeLoader(newTree, inputData);
-    tl.start();
+  
 
   }
 
@@ -247,21 +258,21 @@ public class TreePanel extends GTreePanel
 
   class TreeLoader extends Thread
   {
-    private NewickFile newtree;
+    private NewickFile newTree;
 
     private AlignmentView odata = null;
 
     public TreeLoader(NewickFile newickFile, AlignmentView inputData)
     {
-      this.newtree = newickFile;
+      this.newTree = newickFile;
       this.odata = inputData;
 
-      if (newickFile != null)
+      if (newTree != null)
       {
         // Must be outside run(), as Jalview2XML tries to
         // update distance/bootstrap visibility at the same time
-        showBootstrap(newickFile.hasBootstrap());
-        showDistances(newickFile.hasDistances());
+        showBootstrap(newTree.hasBootstrap());
+        showDistances(newTree.hasDistances());
 
       }
 
@@ -271,48 +282,37 @@ public class TreePanel extends GTreePanel
     public void run()
     {
 
-      if (newtree != null)
+      if (newTree != null)
       {
         tree = new TreeModel(av.getAlignment().getSequencesArray(), odata,
-                newtree);
+                newTree);
         if (tree.getOriginalData() == null)
         {
           originalSeqData.setVisible(false);
         }
+
+
+
       }
-      else
-      {
-        ScoreModelI sm = ScoreModels.getInstance()
-                .getScoreModel(scoreModelName, treeCanvas.ap);
-        TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING)
-                ? new NJTree(av, sm, similarityParams)
-                : new AverageDistanceTree(av, sm, similarityParams);
-        tree = new TreeModel(njtree);
-        showDistances(true);
-      }
+      showTree(tree);
 
+    }
+      
+    public void showTree(TreeModel tree)
+    {
       tree.reCount(tree.getTopNode());
       tree.findHeight(tree.getTopNode());
       treeCanvas.setTree(tree);
       treeCanvas.repaint();
 
-      Testo test = new Testo();
-      NewickFile newickTree = test.treeToNewick(tree);
-      File newickAsFile = test.newickToArchaeopteryx(newickTree);
-      try
-      {
-        String[] archaeCommandlineArgs = {
-            "-open", newickAsFile.getCanonicalPath() };
-        test.startArchaeopteryx(archaeCommandlineArgs);
-      } catch (IOException e)
-      {
-        e.printStackTrace();
-      }
       av.setCurrentTree(tree);
       if (av.getSortByTree())
       {
         sortByTree_actionPerformed();
       }
+
+      ArchaeopteryxNewickInit archae = new ArchaeopteryxNewickInit(tree);
+      archae.startArchaeopteryx();
     }
   }
 
@@ -847,29 +847,31 @@ public class TreePanel extends GTreePanel
    * 
    * @return
    */
-  public String getPanelTitle()
+  public String getPanelTitle() // to be moved/fixed
   {
     if (treeTitle != null)
     {
       return treeTitle;
     }
-
-    /*
-     * i18n description of Neighbour Joining or Average Distance method
-     */
-    String treecalcnm = MessageManager
-            .getString("label.tree_calc_" + treeType.toLowerCase());
-
-    /*
-     * short score model name (long description can be too long)
-     */
-    String smn = scoreModelName;
-
-    /*
-     * put them together as <method> Using <model>
-     */
-    final String ttl = MessageManager.formatMessage("label.treecalc_title",
-            treecalcnm, smn);
-    return ttl;
+    else
+    {
+      /*
+       * i18n description of Neighbour Joining or Average Distance method
+       */
+      String treecalcnm = MessageManager
+              .getString("label.tree_calc_" + treeType.toLowerCase());
+
+      /*
+       * short score model name (long description can be too long)
+       */
+      String smn = substitutionMatrix;
+
+      /*
+       * put them together as <method> Using <model>
+       */
+      final String ttl = MessageManager
+              .formatMessage("label.treecalc_title", treecalcnm, smn);
+      return ttl;
+    }
   }
 }