X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqCanvas.java;h=ff576ec756e89084b7360f5ed2499fedb94908d7;hb=0846d23b8e3bd33b2120a0f724299bf05c175f32;hp=ad5e052a17af0a4e9bf2d81cd27ec44039df45ca;hpb=53ec6ec5b4b6288bd8f33162a9974cc3a0a16c91;p=jalview.git
diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java
index ad5e052..ff576ec 100755
--- a/src/jalview/gui/SeqCanvas.java
+++ b/src/jalview/gui/SeqCanvas.java
@@ -1,28 +1,42 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
- * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
- * 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 file is part of Jalview.
*
- * 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.
+ * 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.
+ *
+ * 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 this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ * along with Jalview. If not, see .
+ * 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 jalview.datamodel.*;
+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 java.util.List;
+
+import javax.swing.JComponent;
/**
* DOCUMENT ME!
@@ -62,7 +76,7 @@ public class SeqCanvas extends JComponent
* Creates a new SeqCanvas object.
*
* @param av
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public SeqCanvas(AlignmentPanel ap)
{
@@ -88,13 +102,13 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param g
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param endx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param ypos
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
void drawNorthScale(Graphics g, int startx, int endx, int ypos)
{
@@ -106,7 +120,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);
}
@@ -125,35 +139,35 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param g
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param endx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param ypos
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
void drawWestScale(Graphics g, int startx, int endx, int ypos)
{
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;
@@ -166,7 +180,7 @@ public class SeqCanvas extends JComponent
continue;
}
- value = av.alignment.getSequenceAt(i).findPosition(index);
+ value = av.getAlignment().getSequenceAt(i).findPosition(index);
break;
}
@@ -185,28 +199,28 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param g
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param endx
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param ypos
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
void drawEastScale(Graphics g, int startx, int endx, int ypos)
{
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;
@@ -239,22 +253,17 @@ public class SeqCanvas extends JComponent
* slider adjustment
*
* @param horizontal
- * shift along
+ * shift along
* @param vertical
- * shift up or down in repaint
+ * shift up or down in repaint
*/
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,
@@ -322,7 +331,7 @@ public class SeqCanvas extends JComponent
public void paintComponent(Graphics g)
{
BufferedImage lcimg = img; // take reference since other threads may null
- // img and call later.
+ // img and call later.
super.paintComponent(g);
if (lcimg != null
@@ -392,7 +401,7 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param cwidth
- * DOCUMENT ME!
+ * DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
@@ -426,9 +435,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;
@@ -446,13 +455,13 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param g
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param canvasWidth
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param canvasHeight
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startRes
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void drawWrappedPanel(Graphics g, int canvasWidth,
int canvasHeight, int startRes)
@@ -486,9 +495,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;
}
@@ -524,7 +533,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;
@@ -565,7 +574,7 @@ public class SeqCanvas extends JComponent
drawPanel(g, startRes, endx, 0, al.getHeight(), ypos);
- if (av.showAnnotation)
+ if (av.isShowAnnotation())
{
g.translate(0, cHeight + ypos + 3);
if (annotations == null)
@@ -573,7 +582,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);
@@ -589,7 +599,7 @@ public class SeqCanvas extends JComponent
int getAnnotationHeight()
{
- if (!av.showAnnotation)
+ if (!av.isShowAnnotation())
{
return 0;
}
@@ -606,36 +616,37 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param g1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startRes
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param endRes
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param startSeq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param endSeq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param offset
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
- void drawPanel(Graphics g1, int startRes, int endRes, int startSeq,
+ public 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);
}
else
{
- java.util.Vector regions = av.getColumnSelection().getHiddenColumns();
+ List regions = av.getColumnSelection().getHiddenColumns();
int screenY = 0;
int blockStart = startRes;
int blockEnd = endRes;
- for (int i = 0; regions!=null && i < regions.size(); i++)
+ for (int i = 0; regions != null && i < regions.size(); i++)
{
- int[] region = (int[]) regions.elementAt(i);
+ int[] region = regions.get(i);
int hideStart = region[0];
int hideEnd = region[1];
@@ -655,11 +666,9 @@ public class SeqCanvas extends JComponent
{
g1.setColor(Color.blue);
- g1
- .drawLine((blockEnd - blockStart + 1) * av.charWidth - 1,
- 0 + offset, (blockEnd - blockStart + 1)
- * av.charWidth - 1, (endSeq - startSeq)
- * av.charHeight + offset);
+ g1.drawLine((blockEnd - blockStart + 1) * av.charWidth - 1,
+ 0 + offset, (blockEnd - blockStart + 1) * av.charWidth
+ - 1, (endSeq - startSeq) * av.charHeight + offset);
}
g1.translate(-screenY * av.charWidth, 0);
@@ -693,16 +702,17 @@ public class SeqCanvas extends JComponent
// ///////////////////////////
for (int i = startSeq; i < endSeq; i++)
{
- nextSeq = av.alignment.getSequenceAt(i);
- if (nextSeq==null)
+ nextSeq = av.getAlignment().getSequenceAt(i);
+ if (nextSeq == null)
{
- // occasionally, a race condition occurs such that the alignment row is empty
+ // occasionally, a race condition occurs such that the alignment row is
+ // empty
continue;
}
- sr.drawSequence(nextSeq, av.alignment.findAllGroups(nextSeq),
+ sr.drawSequence(nextSeq, av.getAlignment().findAllGroups(nextSeq),
startRes, endRes, offset + ((i - startSeq) * av.charHeight));
- if (av.showSequenceFeatures)
+ if (av.isShowSequenceFeatures())
{
fr.drawSequence(g, nextSeq, startRes, endRes, offset
+ ((i - startSeq) * av.charHeight));
@@ -736,7 +746,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);
}
@@ -759,9 +769,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;
}
@@ -788,11 +798,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;
}
@@ -801,7 +811,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;
}
@@ -917,15 +927,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());
}
@@ -935,7 +945,7 @@ public class SeqCanvas extends JComponent
* DOCUMENT ME!
*
* @param results
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void highlightSearchResults(SearchResults results)
{