X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqCanvas.java;h=7f30c2489ada6adc0b43fc1ea0cb955e9877c0b3;hb=f5700411d71ab46a54d9e7dd46223b59fd1565b8;hp=8fcca782189c29145ee9fe9f2277cf9e320957da;hpb=353236b63bd005adee3fb297984228e26bc9d66c;p=jalview.git diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index 8fcca78..7f30c24 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -31,6 +31,7 @@ public class SeqCanvas extends JPanel { this.av = av; setLayout(new BorderLayout()); + PaintRefresher.Register(this); } @@ -196,7 +197,7 @@ public class SeqCanvas extends JPanel */ - if (y2 > starty && y1 < av.getEndSeq()) + /* if (y2 > starty && y1 < av.getEndSeq()) { fillBackground(g, Color.red, @@ -204,24 +205,24 @@ public class SeqCanvas extends JPanel offset + AlignmentUtil.getPixelHeight(starty,y1,av.getCharHeight()), (x2-x1+1)*charWidth, offset + AlignmentUtil.getPixelHeight(y1,y2,av.getCharHeight())); - } + }*/ SequenceI nextSeq; SequenceGroup group=null; - boolean newGroup=false; + SequenceGroup [] groups=null; + boolean inGroup=false; // are we in a defined group? + boolean inRB=false; //Are we in a rubberband group? int sx=-1, sy=-1, ex=-1, ey=-1; int oldStartX=0,oldEndX=0,oldY=0; + int oldRStartX=0,oldREndX=0,oldRY=0; for (int i = y1 ; i < y2 ;i++) { nextSeq = av.getAlignment().getSequenceAt(i); - if(group==null || group!=av.alignment.findGroup( nextSeq )) - newGroup = true; - else - newGroup = false; - group = av.alignment.findGroup( nextSeq ); + group = av.alignment.findGroup( nextSeq ); + groups = av.alignment.findAllGroups( nextSeq ); - sr.drawSequence(g, nextSeq, group,x1,x2, + sr.drawSequence(g, nextSeq, groups,x1,x2, (x1 - startx) * charWidth, offset + AlignmentUtil.getPixelHeight(starty, i, av.getCharHeight()), charWidth,charHeight,null, i); @@ -238,10 +239,10 @@ public class SeqCanvas extends JPanel ey = offset + AlignmentUtil.getPixelHeight(starty, i+1, av.getCharHeight()); - if (newGroup) + if (!inGroup) { - g.drawLine(oldStartX, oldY, oldEndX, oldY); // Horizontal, bottom of old box g.drawLine(sx, sy, ex, sy); // Horizontal, top of new box + inGroup=true; } g.drawLine(sx, sy, sx, ey ); // vertical line, left hand side @@ -254,17 +255,18 @@ public class SeqCanvas extends JPanel oldY = ey; } - else if(sx>-1) + else if(inGroup) { g.setColor(Color.lightGray); - g.drawLine(sx, ey, ex, ey); // Horizontal, bottom of old box + g.drawLine(oldStartX, oldY, oldEndX, oldY); // Horizontal, bottom of old box } + else + inGroup = false; group = av.getRubberbandGroup(); - if( group !=null && group.sequences.contains(nextSeq) ) + if( group != null && group.sequences.contains(nextSeq) ) { - g.setColor(Color.red); - + g.setColor(Color.RED.brighter()); sx = (group.getStartRes() - startx) * charWidth; sy = offset + AlignmentUtil.getPixelHeight(starty, i, av.getCharHeight()); @@ -272,10 +274,11 @@ public class SeqCanvas extends JPanel ey = offset + AlignmentUtil.getPixelHeight(starty, i + 1, av.getCharHeight()); - if (newGroup) + if (!inRB) { - g.drawLine(oldStartX, oldY, oldEndX, oldY); // Horizontal, bottom of old box + g.drawLine(sx, sy, ex, sy); // Horizontal, top of new box + inRB = true; } g.drawLine(sx, sy, sx, ey); // vertical line, left hand side @@ -283,11 +286,18 @@ public class SeqCanvas extends JPanel if (i == y2 - 1) // last line of alignment, seal the box g.drawLine(sx, ey, ex, ey); // Horizontal, bottom of old box - // oldStartX = sx; - // oldEndX = ex; - // oldY = ey; - + oldRStartX = sx; + oldREndX = ex; + oldRY = ey; } + else if(inRB) + { + g.setColor(Color.RED.brighter()); + g.drawLine(oldRStartX, oldRY, oldREndX, oldRY); // Horizontal, bottom of old box + inRB = false; + } + else + inRB = false; } @@ -303,7 +313,7 @@ public class SeqCanvas extends JPanel if (searchSeq >= y1 && searchSeq <= y2) { SequenceRenderer ssr = (SequenceRenderer) sr; - ssr.drawHighlightedText(g, av.getAlignment().getSequenceAt(searchSeq), + ssr.drawHighlightedText(av.getAlignment().getSequenceAt(searchSeq), searchStart, searchEnd, (searchStart - startx) * charWidth,