Faded anntotations when recalculating
authoramwaterhouse <Andrew Waterhouse>
Wed, 18 Oct 2006 13:02:58 +0000 (13:02 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 18 Oct 2006 13:02:58 +0000 (13:02 +0000)
src/jalview/gui/AnnotationPanel.java

index 9fee829..844c1ab 100755 (executable)
@@ -49,6 +49,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
     AlignmentPanel ap;\r
     int activeRow = -1;\r
     BufferedImage image;\r
+    BufferedImage fadedImage;\r
     Graphics2D gg;\r
     FontMetrics fm;\r
     int imgWidth = 0;\r
@@ -587,6 +588,8 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
         gg.setFont(av.getFont());\r
         fm = gg.getFontMetrics();\r
+        gg.setColor(Color.white);\r
+        gg.fillRect(0, 0, imgWidth, image.getHeight());\r
       }\r
 \r
 \r
@@ -601,9 +604,12 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void fastPaint(int horizontal)\r
     {\r
-        if ((horizontal == 0) || gg==null ||\r
-                (av.alignment.getAlignmentAnnotation() == null) ||\r
-                (av.alignment.getAlignmentAnnotation().length < 1))\r
+        if ((horizontal == 0)\r
+            || gg==null\r
+            || av.alignment.getAlignmentAnnotation()==null\r
+            || av.alignment.getAlignmentAnnotation().length < 1\r
+            || av.updatingConsensus\r
+            || av.updatingConservation)\r
         {\r
             repaint();\r
             return;\r
@@ -646,14 +652,45 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void drawComponent(Graphics g, int startRes, int endRes)\r
     {\r
-      g.setFont(av.getFont());\r
+      if(av.updatingConsensus || av.updatingConservation)\r
+      {\r
+        //We'll keep a record of the old image,\r
+        //and draw a faded image until the calculation\r
+        //has completed\r
+        if(fadedImage==null\r
+           || fadedImage.getWidth()!=imgWidth\r
+        || fadedImage.getHeight()!=image.getHeight())\r
+        {\r
+          fadedImage = new BufferedImage(\r
+              imgWidth, image.getHeight(),\r
+              BufferedImage.TYPE_INT_RGB);\r
+\r
+          Graphics2D fadedG = (Graphics2D) fadedImage.getGraphics();\r
+\r
+          fadedG.setColor(Color.white);\r
+        fadedG.fillRect(0, 0, imgWidth, image.getHeight());\r
+\r
+          fadedG.setComposite(\r
+              AlphaComposite.getInstance(\r
+                  AlphaComposite.SRC_OVER, .3f));\r
+          fadedG.drawImage(image, 0, 0, this);\r
+\r
+        }\r
+\r
+      }\r
+      else\r
+        fadedImage = null;\r
+\r
 \r
+      g.setColor(Color.white);\r
+      g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());\r
+\r
+      g.setFont(av.getFont());\r
       if (fm == null)\r
         fm = g.getFontMetrics();\r
 \r
 \r
-        g.setColor(Color.white);\r
-        g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());\r
+\r
 \r
         if ( (av.alignment.getAlignmentAnnotation() == null) ||\r
                 (av.alignment.getAlignmentAnnotation().length < 1))\r
@@ -710,22 +747,39 @@ public class AnnotationPanel extends JPanel implements MouseListener,
 \r
             if (av.updatingConsensus && aa[i].label.equals("Consensus"))\r
             {\r
-              g.setColor(Color.darkGray);\r
-              g.drawString("Recalculating Consensus....", 20, y - 5);\r
               y += av.charHeight;\r
+\r
+              g.drawImage(fadedImage,\r
+              0,y-row.height,imgWidth, y,\r
+              0,y-row.height,imgWidth, y, this);\r
+              g.setColor(Color.black);\r
+             // g.drawString("Calculating Consensus....",20, y-row.height/2);\r
+\r
               continue;\r
             }\r
             else if (av.updatingConservation && aa[i].label.equals("Conservation"))\r
             {\r
-              g.setColor(Color.darkGray);\r
-              g.drawString("Recalculating Conservation.....", 20, y - 5);\r
+\r
               y += av.charHeight;\r
+              g.drawImage(fadedImage,\r
+                          0, y - row.height, imgWidth, y,\r
+                          0, y - row.height, imgWidth, y, this);\r
+\r
+              g.setColor(Color.black);\r
+            //  g.drawString("Calculating Conservation.....",20, y-row.height/2);\r
+\r
               continue;\r
             }\r
             else if (av.updatingConservation && aa[i].label.equals("Quality"))\r
             {\r
-              g.setColor(Color.darkGray);\r
-              g.drawString("Recalculating Quality....", 20, y - 5);\r
+\r
+              y += av.charHeight;\r
+              g.drawImage(fadedImage,\r
+                          0, y - row.height, imgWidth, y,\r
+                          0, y - row.height, imgWidth, y, this);\r
+              g.setColor(Color.black);\r
+             /// g.drawString("Calculating Quality....",20, y-row.height/2);\r
+\r
               continue;\r
             }\r
 \r