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