JAL-1620 version bump and release notes
[jalview.git] / src / jalview / gui / SeqCanvas.java
index c8a6a75..d5dd927 100755 (executable)
@@ -1,27 +1,41 @@
 /*
- * 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;
 
-import java.awt.*;
-import java.awt.image.*;
-import javax.swing.*;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+
+import java.awt.BasicStroke;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.Shape;
+import java.awt.image.BufferedImage;
 
-import jalview.datamodel.*;
+import javax.swing.JComponent;
 
 /**
  * DOCUMENT ME!
@@ -105,7 +119,7 @@ public class SeqCanvas extends JComponent
     for (int i = scalestartx; i < endx; i += 10)
     {
       int value = i;
-      if (av.hasHiddenColumns)
+      if (av.hasHiddenColumns())
       {
         value = av.getColumnSelection().adjustForHiddenColumns(value);
       }
@@ -137,22 +151,22 @@ public class SeqCanvas extends JComponent
     FontMetrics fm = getFontMetrics(av.getFont());
     ypos += av.charHeight;
 
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       startx = av.getColumnSelection().adjustForHiddenColumns(startx);
       endx = av.getColumnSelection().adjustForHiddenColumns(endx);
     }
 
-    int maxwidth = av.alignment.getWidth();
-    if (av.hasHiddenColumns)
+    int maxwidth = av.getAlignment().getWidth();
+    if (av.hasHiddenColumns())
     {
       maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
     }
 
     // WEST SCALE
-    for (int i = 0; i < av.alignment.getHeight(); i++)
+    for (int i = 0; i < av.getAlignment().getHeight(); i++)
     {
-      SequenceI seq = av.alignment.getSequenceAt(i);
+      SequenceI seq = av.getAlignment().getSequenceAt(i);
       int index = startx;
       int value = -1;
 
@@ -165,7 +179,7 @@ public class SeqCanvas extends JComponent
           continue;
         }
 
-        value = av.alignment.getSequenceAt(i).findPosition(index);
+        value = av.getAlignment().getSequenceAt(i).findPosition(index);
 
         break;
       }
@@ -196,16 +210,16 @@ public class SeqCanvas extends JComponent
   {
     ypos += av.charHeight;
 
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       endx = av.getColumnSelection().adjustForHiddenColumns(endx);
     }
 
     SequenceI seq;
     // EAST SCALE
-    for (int i = 0; i < av.alignment.getHeight(); i++)
+    for (int i = 0; i < av.getAlignment().getHeight(); i++)
     {
-      seq = av.alignment.getSequenceAt(i);
+      seq = av.getAlignment().getSequenceAt(i);
       int index = endx;
       int value = -1;
 
@@ -244,16 +258,11 @@ public class SeqCanvas extends JComponent
    */
   public void fastPaint(int horizontal, int vertical)
   {
-    if (fastpainting)
+    if (fastpainting || gg == null)
     {
       return;
     }
     fastpainting = true;
-    if (gg == null)
-    {
-      return;
-    }
-
     fastPaint = true;
 
     gg.copyArea(horizontal * av.charWidth, vertical * av.charHeight,
@@ -425,9 +434,9 @@ public class SeqCanvas extends JComponent
     String mask = "00";
     int maxWidth = 0;
     int tmp;
-    for (int i = 0; i < av.alignment.getHeight(); i++)
+    for (int i = 0; i < av.getAlignment().getHeight(); i++)
     {
-      tmp = av.alignment.getSequenceAt(i).getEnd();
+      tmp = av.getAlignment().getSequenceAt(i).getEnd();
       if (tmp > maxWidth)
       {
         maxWidth = tmp;
@@ -485,9 +494,9 @@ public class SeqCanvas extends JComponent
 
     int endx;
     int ypos = hgap;
-    int maxwidth = av.alignment.getWidth() - 1;
+    int maxwidth = av.getAlignment().getWidth() - 1;
 
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
     }
@@ -523,7 +532,7 @@ public class SeqCanvas extends JComponent
         drawNorthScale(g, startRes, endx, ypos);
       }
 
-      if (av.hasHiddenColumns && av.showHiddenMarkers)
+      if (av.hasHiddenColumns() && av.showHiddenMarkers)
       {
         g.setColor(Color.blue);
         int res;
@@ -572,7 +581,8 @@ public class SeqCanvas extends JComponent
           annotations = new AnnotationPanel(av);
         }
 
-        annotations.drawComponent((Graphics2D) g, startRes, endx + 1);
+        annotations.renderer.drawComponent(annotations, av, g,
+                -1, startRes, endx + 1);
         g.translate(0, -cHeight - ypos - 3);
       }
       g.setClip(clip);
@@ -620,7 +630,7 @@ public class SeqCanvas extends JComponent
   void drawPanel(Graphics g1, int startRes, int endRes, int startSeq,
           int endSeq, int offset)
   {
-    if (!av.hasHiddenColumns)
+    if (!av.hasHiddenColumns())
     {
       draw(g1, startRes, endRes, startSeq, endSeq, offset);
     }
@@ -690,24 +700,20 @@ public class SeqCanvas extends JComponent
     // ///////////////////////////
     for (int i = startSeq; i < endSeq; i++)
     {
-      nextSeq = av.alignment.getSequenceAt(i);
+      nextSeq = av.getAlignment().getSequenceAt(i);
       if (nextSeq == null)
       {
         // occasionally, a race condition occurs such that the alignment row is
         // empty
         continue;
       }
-      // draw box background, possibly with sequence label.
-      sr.drawSequence(nextSeq, av.alignment.findAllGroups(nextSeq),
-              startRes, endRes, offset + ((i - startSeq) * av.charHeight), true, !av.showSequenceFeatures);
-      
+      sr.drawSequence(nextSeq, av.getAlignment().findAllGroups(nextSeq),
+              startRes, endRes, offset + ((i - startSeq) * av.charHeight));
+
       if (av.showSequenceFeatures)
       {
         fr.drawSequence(g, nextSeq, startRes, endRes, offset
                 + ((i - startSeq) * av.charHeight));
-        // draw sequence label
-        sr.drawSequence(nextSeq, av.alignment.findAllGroups(nextSeq),
-                startRes, endRes, offset + ((i - startSeq) * av.charHeight), false, true);
       }
 
       // / Highlight search Results once all sequences have been drawn
@@ -738,7 +744,7 @@ public class SeqCanvas extends JComponent
     }
 
     if (av.getSelectionGroup() != null
-            || av.alignment.getGroups().size() > 0)
+            || av.getAlignment().getGroups().size() > 0)
     {
       drawGroupsBoundaries(g, startRes, endRes, startSeq, endSeq, offset);
     }
@@ -761,9 +767,9 @@ public class SeqCanvas extends JComponent
     int groupIndex = -1;
     int visWidth = (endRes - startRes + 1) * av.charWidth;
 
-    if ((group == null) && (av.alignment.getGroups().size() > 0))
+    if ((group == null) && (av.getAlignment().getGroups().size() > 0))
     {
-      group = (SequenceGroup) av.alignment.getGroups().elementAt(0);
+      group = av.getAlignment().getGroups().get(0);
       groupIndex = 0;
     }
 
@@ -790,11 +796,11 @@ public class SeqCanvas extends JComponent
 
           if ((sx <= (endRes - startRes) * av.charWidth)
                   && group.getSequences(null).contains(
-                          av.alignment.getSequenceAt(i)))
+                          av.getAlignment().getSequenceAt(i)))
           {
             if ((bottom == -1)
                     && !group.getSequences(null).contains(
-                            av.alignment.getSequenceAt(i + 1)))
+                            av.getAlignment().getSequenceAt(i + 1)))
             {
               bottom = sy + av.charHeight;
             }
@@ -803,7 +809,7 @@ public class SeqCanvas extends JComponent
             {
               if (((top == -1) && (i == 0))
                       || !group.getSequences(null).contains(
-                              av.alignment.getSequenceAt(i - 1)))
+                              av.getAlignment().getSequenceAt(i - 1)))
               {
                 top = sy;
               }
@@ -919,15 +925,15 @@ public class SeqCanvas extends JComponent
 
         g.setStroke(new BasicStroke());
 
-        if (groupIndex >= av.alignment.getGroups().size())
+        if (groupIndex >= av.getAlignment().getGroups().size())
         {
           break;
         }
 
-        group = (SequenceGroup) av.alignment.getGroups().elementAt(
-                groupIndex);
+        group = av.getAlignment().getGroups()
+                .get(groupIndex);
 
-      } while (groupIndex < av.alignment.getGroups().size());
+      } while (groupIndex < av.getAlignment().getGroups().size());
 
     }