applied copyright 2008
[jalview.git] / src / jalview / gui / TreeCanvas.java
index 7fdb33c..a022408 100755 (executable)
@@ -1,39 +1,34 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
+ * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
- *
+ * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
+ * 
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 package jalview.gui;
 
-import jalview.analysis.*;
-
-import jalview.datamodel.*;
-
-import jalview.schemes.*;
-
-import jalview.util.*;
+import java.util.*;
 
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.print.*;
-
-import java.util.*;
-
 import javax.swing.*;
 
+import jalview.analysis.*;
+import jalview.datamodel.*;
+import jalview.schemes.*;
+import jalview.util.*;
 
 /**
  * DOCUMENT ME!
@@ -41,7 +36,8 @@ import javax.swing.*;
  * @author $author$
  * @version $Revision$
  */
-public class TreeCanvas extends JPanel implements MouseListener, Runnable,
+public class TreeCanvas
+    extends JPanel implements MouseListener, Runnable,
     Printable, MouseMotionListener
 {
   /** DOCUMENT ME!! */
@@ -208,14 +204,14 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         nodeLabel = new Format("%-.2f").form(node.dist);
       }
 
-      if (showBootstrap)
+      if (showBootstrap && node.bootstrap>-1)
       {
         if (showDistances)
         {
           nodeLabel = nodeLabel + " : ";
         }
 
-        nodeLabel = nodeLabel + String.valueOf(node.getBootstrap());
+        nodeLabel = nodeLabel + String.valueOf(node.bootstrap);
       }
 
       if (!nodeLabel.equals(""))
@@ -238,7 +234,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       SequenceGroup selected = av.getSelectionGroup();
 
       if ( (selected != null) &&
-          selected.getSequences(false).contains( (SequenceI) node.element()))
+          selected.getSequences(null).contains( (SequenceI) node.element()))
       {
         g.setColor(Color.gray);
 
@@ -269,9 +265,13 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       // Draw horizontal line
       g.drawLine(xstart, ypos, xend, ypos);
       if (node == highlightNode)
+      {
         g.fillRect(xend - 3, ypos - 3, 6, 6);
+      }
       else
+      {
         g.fillRect(xend - 2, ypos - 2, 4, 4);
+      }
 
       int ystart = (int) ( ( (SequenceNode) node.left()).ycount * chunk) +
           offy;
@@ -284,10 +284,26 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       g.drawLine( (int) (height * scale) + offx, ystart,
                  (int) (height * scale) + offx, yend);
 
+      String nodeLabel = "";
+
       if (showDistances && (node.dist > 0))
       {
-        g.drawString(new Format("%-.2f").form(node.dist).trim(), xstart + 2,
-                     ypos - 2);
+        nodeLabel = new Format("%-.2f").form(node.dist);
+      }
+
+      if (showBootstrap && node.bootstrap>-1)
+      {
+        if (showDistances)
+        {
+          nodeLabel = nodeLabel + " : ";
+        }
+
+        nodeLabel = nodeLabel + String.valueOf(node.bootstrap);
+      }
+
+      if (!nodeLabel.equals(""))
+      {
+        g.drawString(nodeLabel, xstart + 2, ypos - 2);
       }
     }
   }
@@ -423,7 +439,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       return;
     }
 
-    if ( (node.left() == null) && (node.right() == null))
+    if ( (node.left() == null) && (node.right() == null)) // TODO: internal node
     {
       node.color = c;
 
@@ -682,8 +698,10 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       {
         Color col = JColorChooser.showDialog(this, "Select Sub-Tree Colour",
                                              highlightNode.color);
-
-        setColor(highlightNode, col);
+        if (col!=null)
+        {
+          setColor(highlightNode, col);
+        }
       }
       else
       if (evt.getClickCount() > 1)
@@ -827,21 +845,25 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 
         }
         else
+        {
           cs = ColourSchemeProperty.getColour(sequences,
                                               av.alignment.getWidth(),
                                               ColourSchemeProperty.
                                               getColourName(
                                                   av.getGlobalColourScheme()));
+        }
 
         cs.setThreshold(av.getGlobalColourScheme().getThreshold(),
                         av.getIgnoreGapsConsensus());
       }
 
       SequenceGroup sg = new SequenceGroup(sequences,
-                                           "TreeGroup", cs, true, true, false,
+                                           null, cs, true, true, false,
                                            0,
                                            av.alignment.getWidth() - 1);
 
+      sg.setName("JTreeGroup:" + sg.hashCode());
+      sg.setIdColour(col);
       AlignmentPanel[] aps = getAssociatedPanels();
       for (int a = 0; a < aps.length; a++)
       {
@@ -850,7 +872,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         {
           Conservation c = new Conservation("Group",
                                             ResidueProperties.propHash, 3,
-                                            sg.getSequences(false),
+                                            sg.getSequences(null),
                                             sg.getStartRes(), sg.getEndRes());
 
           c.calculate();
@@ -904,6 +926,10 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       return PaintRefresher.getAssociatedPanels(av.getSequenceSetId());
     }
     else
-      return new AlignmentPanel[]{ap};
+    {
+      return new AlignmentPanel[]
+          {
+          ap};
+    }
   }
 }