JAL-1620 version bump and release notes
[jalview.git] / src / jalview / gui / TreeCanvas.java
index ea78d0f..9660f82 100755 (executable)
@@ -1,19 +1,22 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview 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 3 of the License, or (at your option) any later version.
- * 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
  * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
@@ -125,7 +128,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         aps[a].av.setSelectionGroup(selected);
       }
 
-      selected.setEndRes(aps[a].av.alignment.getWidth() - 1);
+      selected.setEndRes(aps[a].av.getAlignment().getWidth() - 1);
       selected.addOrRemove(sequence, true);
     }
   }
@@ -608,7 +611,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 
     if (tree == null)
     {
-      g.drawString("Calculating tree....", 20, getHeight() / 2);
+      g.drawString(MessageManager.getString("label.calculating_tree")
+              + "....", 20, getHeight() / 2);
     }
     else
     {
@@ -666,9 +670,12 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
             RenderingHints.VALUE_ANTIALIAS_ON);
     g2.setColor(Color.white);
     g2.fillRect(0, 0, width, height);
-
     g2.setFont(font);
 
+    if (longestName == null || tree == null)
+    {
+      g2.drawString("Calculating tree.", 20, 20);
+    }
     offy = font.getSize() + 10;
 
     fm = g2.getFontMetrics(font);
@@ -750,7 +757,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       if (SwingUtilities.isRightMouseButton(evt))
       {
         Color col = JColorChooser.showDialog(this,
-                "Select Sub-Tree Colour", highlightNode.color);
+                MessageManager.getString("label.select_subtree_colour"), highlightNode.color);
         if (col != null)
         {
           setColor(highlightNode, col);
@@ -790,9 +797,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
     if (ob instanceof SequenceNode)
     {
       highlightNode = (SequenceNode) ob;
-      this.setToolTipText("<html>Left click to select leaves"
-              + "<br>Double-click to invert leaves"
-              + "<br>Right click to change colour");
+      this.setToolTipText("<html>"
+              + MessageManager.getString("label.highlightnode"));
       repaint();
 
     }
@@ -851,8 +857,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         for (int a = 0; a < aps.length; a++)
         {
           aps[a].av.setSelectionGroup(null);
-          aps[a].av.alignment.deleteAllGroups();
-          aps[a].av.sequenceColours = null;
+          aps[a].av.getAlignment().deleteAllGroups();
+          aps[a].av.clearSequenceColours();
         }
         colourGroups();
       }
@@ -889,6 +895,8 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
       }
 
       ColourSchemeI cs = null;
+      SequenceGroup sg = new SequenceGroup(sequences, null, cs, true, true,
+              false, 0, av.getAlignment().getWidth() - 1);
 
       if (av.getGlobalColourScheme() != null)
       {
@@ -901,18 +909,18 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         }
         else
         {
-          cs = ColourSchemeProperty.getColour(sequences, av.alignment
-                  .getWidth(), ColourSchemeProperty.getColourName(av
-                  .getGlobalColourScheme()));
+          cs = ColourSchemeProperty.getColour(sg, ColourSchemeProperty
+                  .getColourName(av.getGlobalColourScheme()));
+        }
+        // cs is null if shading is an annotationColourGradient
+        if (cs != null)
+        {
+          cs.setThreshold(av.getGlobalColourScheme().getThreshold(),
+                  av.getIgnoreGapsConsensus());
         }
-
-        cs.setThreshold(av.getGlobalColourScheme().getThreshold(),
-                av.getIgnoreGapsConsensus());
       }
-
-      SequenceGroup sg = new SequenceGroup(sequences, null, cs, true, true,
-              false, 0, av.alignment.getWidth() - 1);
-
+      sg.cs = cs;
+      // sg.recalcConservation();
       sg.setName("JTreeGroup:" + sg.hashCode());
       sg.setIdColour(col);
       for (int a = 0; a < aps.length; a++)
@@ -925,18 +933,19 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
                   sg.getStartRes(), sg.getEndRes());
 
           c.calculate();
-          c.verdict(false, aps[a].av.ConsPercGaps);
+          c.verdict(false, aps[a].av.getConsPercGaps());
           sg.cs.setConservation(c);
         }
 
-        aps[a].av.alignment.addGroup(sg);
+        aps[a].av.getAlignment().addGroup(new SequenceGroup(sg));
       }
     }
     // notify the panel to redo any group specific stuff.
     for (int a = 0; a < aps.length; a++)
     {
       aps[a].updateAnnotation();
-      // TODO: JAL-868 - need to ensure view colour change message is broadcast to any Jmols listening in
+      // TODO: JAL-868 - need to ensure view colour change message is broadcast
+      // to any Jmols listening in
     }
 
   }