JAL-1620 version bump and release notes
[jalview.git] / src / jalview / appletgui / TreeCanvas.java
index 4a38767..7d457d4 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.appletgui;
 
@@ -64,9 +67,12 @@ public class TreeCanvas extends Panel implements MouseListener,
 
   SequenceNode highlightNode;
 
-  public TreeCanvas(AlignViewport av, ScrollPane scroller)
+  AlignmentPanel ap;
+
+  public TreeCanvas(AlignmentPanel ap, ScrollPane scroller)
   {
-    this.av = av;
+    this.ap = ap;
+    this.av = ap.av;
     font = av.getFont();
     scrollPane = scroller;
     addMouseListener(this);
@@ -85,7 +91,7 @@ public class TreeCanvas extends Panel implements MouseListener,
       av.setSelectionGroup(selected);
     }
 
-    selected.setEndRes(av.alignment.getWidth() - 1);
+    selected.setEndRes(av.getAlignment().getWidth() - 1);
     selected.addOrRemove(sequence, true);
   }
 
@@ -141,7 +147,7 @@ public class TreeCanvas extends Panel implements MouseListener,
 
       if (node.element() instanceof SequenceI)
       {
-        SequenceI seq = (SequenceI) ((SequenceNode) node).element();
+        SequenceI seq = (SequenceI) node.element();
 
         if (av.getSequenceColour(seq) == Color.white)
         {
@@ -192,13 +198,12 @@ public class TreeCanvas extends Panel implements MouseListener,
       Rectangle rect = new Rectangle(xend + 10, ypos - charHeight,
               charWidth, charHeight);
 
-      nameHash.put((SequenceI) node.element(), rect);
+      nameHash.put(node.element(), rect);
 
       // Colour selected leaves differently
       SequenceGroup selected = av.getSelectionGroup();
       if (selected != null
-              && selected.getSequences(null).contains(
-                      (SequenceI) node.element()))
+              && selected.getSequences(null).contains(node.element()))
       {
         g.setColor(Color.gray);
 
@@ -222,7 +227,7 @@ public class TreeCanvas extends Panel implements MouseListener,
       int xend = (int) (height * scale) + offx;
       int ypos = (int) (node.ycount * chunk) + offy;
 
-      g.setColor(((SequenceNode) node).color.darker());
+      g.setColor(node.color.darker());
 
       // Draw horizontal line
       g.drawLine(xstart, ypos, xend, ypos);
@@ -388,11 +393,13 @@ public class TreeCanvas extends Panel implements MouseListener,
     }
   }
 
+  @Override
   public void update(Graphics g)
   {
     paint(g);
   }
 
+  @Override
   public void paint(Graphics g)
   {
     if (tree == null)
@@ -438,8 +445,7 @@ public class TreeCanvas extends Panel implements MouseListener,
     // for
     // scrollbar
 
-    float wscale = (float) (width - labelLength - offx * 2)
-            / tree.getMaxHeight();
+    float wscale = (width - labelLength - offx * 2) / tree.getMaxHeight();
 
     SequenceNode top = tree.getTopNode();
 
@@ -463,26 +469,29 @@ public class TreeCanvas extends Panel implements MouseListener,
         g.setColor(Color.gray);
       }
 
-      int x = (int) (threshold
-              * (float) (getSize().width - labelLength - 2 * offx) + offx);
+      int x = (int) (threshold * (getSize().width - labelLength - 2 * offx) + offx);
 
       g.drawLine(x, 0, x, getSize().height);
     }
 
   }
 
+  @Override
   public void mouseReleased(MouseEvent e)
   {
   }
 
+  @Override
   public void mouseEntered(MouseEvent e)
   {
   }
 
+  @Override
   public void mouseExited(MouseEvent e)
   {
   }
 
+  @Override
   public void mouseClicked(MouseEvent evt)
   {
     if (highlightNode != null)
@@ -512,10 +521,12 @@ public class TreeCanvas extends Panel implements MouseListener,
     }
   }
 
+  @Override
   public void mouseDragged(MouseEvent ect)
   {
   }
 
+  @Override
   public void mouseMoved(MouseEvent evt)
   {
     av.setCurrentTree(tree);
@@ -537,6 +548,7 @@ public class TreeCanvas extends Panel implements MouseListener,
     }
   }
 
+  @Override
   public void mousePressed(MouseEvent e)
   {
     av.setCurrentTree(tree);
@@ -568,8 +580,8 @@ public class TreeCanvas extends Panel implements MouseListener,
         setColor(tree.getTopNode(), Color.black);
 
         av.setSelectionGroup(null);
-        av.alignment.deleteAllGroups();
-        av.sequenceColours = null;
+        av.getAlignment().deleteAllGroups();
+        av.clearSequenceColours();
 
         colourGroups();
 
@@ -606,6 +618,9 @@ public class TreeCanvas extends Panel implements MouseListener,
 
       ColourSchemeI cs = null;
 
+      SequenceGroup sg = new SequenceGroup(sequences, "", cs, true, true,
+              false, 0, av.getAlignment().getWidth() - 1);
+
       if (av.getGlobalColourScheme() != null)
       {
         if (av.getGlobalColourScheme() instanceof UserColourScheme)
@@ -617,17 +632,20 @@ public class TreeCanvas extends Panel implements MouseListener,
         }
         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, "", cs, true, true,
-              false, 0, av.alignment.getWidth() - 1);
+      // TODO: cs used to be initialized with a sequence collection and
+      // recalcConservation called automatically
+      // instead we set it manually - recalc called after updateAnnotation
+      sg.cs = cs;
 
       sg.setName("JTreeGroup:" + sg.hashCode());
       sg.setIdColour(col);
@@ -639,16 +657,17 @@ public class TreeCanvas extends Panel implements MouseListener,
                 sg.getStartRes(), sg.getEndRes());
 
         c.calculate();
-        c.verdict(false, av.ConsPercGaps);
+        c.verdict(false, av.getConsPercGaps());
         cs.setConservation(c);
 
         sg.cs = cs;
 
       }
 
-      av.alignment.addGroup(sg);
+      av.getAlignment().addGroup(sg);
 
     }
+    ap.updateAnnotation();
 
   }