JAL-1129 progress bar - this patch doesn't provide any indication of whether the...
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 474d392..8f2dd04 100644 (file)
@@ -20,7 +20,6 @@ package jalview.gui;
 import java.beans.*;
 import java.io.*;
 import java.util.Hashtable;
-import java.util.Vector;
 
 import java.awt.*;
 import java.awt.event.*;
@@ -921,10 +920,14 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
     if (av.showAnnotation && (endSeq == av.getAlignment().getHeight()))
     {
+      // draw annotation - need to offset for current scroll position
+      int offset=-alabels.scrollOffset;
+      pg.translate(0, offset);
       pg.translate(-idWidth - 3, (endSeq - startSeq) * av.charHeight + 3);
       alabels.drawComponent((Graphics2D) pg, idWidth);
       pg.translate(idWidth + 3, 0);
       annotationPanel.renderer.drawComponent(annotationPanel, av, (Graphics2D) pg, -1, startRes, endRes + 1);
+      pg.translate(0, -offset);
     }
 
     return Printable.PAGE_EXISTS;
@@ -1072,6 +1075,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   void makeAlignmentImage(int type, File file)
   {
+    long progress=System.currentTimeMillis();
+    if (alignFrame!=null) {
+      alignFrame.setProgressBar("Saving "+(type == jalview.util.ImageMaker.PNG ? "PNG image":"EPS file") , progress);
+    }
+    try {
     int maxwidth = av.getAlignment().getWidth();
     if (av.hasHiddenColumns())
     {
@@ -1110,19 +1118,17 @@ public class AlignmentPanel extends GAlignmentPanel implements
     {
 
       jalview.util.ImageMaker im;
+      final String imageAction,imageTitle;
       if (type == jalview.util.ImageMaker.PNG)
       {
-        im = new jalview.util.ImageMaker(this, jalview.util.ImageMaker.PNG,
-                "Create PNG image from alignment", width, height, file,
-                null);
-      }
-      else
-      {
-        im = new jalview.util.ImageMaker(this, jalview.util.ImageMaker.EPS,
-                "Create EPS file from alignment", width, height, file,
-                alignFrame.getTitle());
+      imageAction="Create PNG image from alignment";
+      imageTitle=null;
+      } else {
+        imageAction="Create EPS file from alignment";
+        imageTitle=alignFrame.getTitle();
       }
-
+      im = new jalview.util.ImageMaker(this, type, imageAction, width, height, file,
+                imageTitle);
       if (av.getWrapAlignment())
       {
         if (im.getGraphics() != null)
@@ -1150,6 +1156,13 @@ public class AlignmentPanel extends GAlignmentPanel implements
     {
       ex.printStackTrace();
     }
+    }
+    finally {
+      if (alignFrame!=null)
+      {
+        alignFrame.setProgressBar("Export complete.", progress);
+      }
+    }
   }
 
   /**
@@ -1172,7 +1185,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
   {
     // /////ONLY WORKS WITH NONE WRAPPED ALIGNMENTS
     // ////////////////////////////////////////////
-    int idWidth = getVisibleIdWidth(true);
+    int idWidth = getVisibleIdWidth(false);
     FontMetrics fm = getFontMetrics(av.getFont());
     int scaleHeight = av.charHeight + fm.getDescent();
 
@@ -1400,7 +1413,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
     // remove old automatic annotation
     // add any new annotation
 
-    Vector gr = av.getAlignment().getGroups(); // OrderedBy(av.getAlignment().getSequencesArray());
     // intersect alignment annotation with alignment groups
 
     AlignmentAnnotation[] aan = av.getAlignment().getAlignmentAnnotation();
@@ -1417,13 +1429,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
         }
       }
     }
-    SequenceGroup sg;
-    if (gr != null)
+    if (av.getAlignment().getGroups()!=null)
     {
-      for (int g = 0; g < gr.size(); g++)
+      for (SequenceGroup sg:av.getAlignment().getGroups())
       {
         updateCalcs = false;
-        sg = (SequenceGroup) gr.elementAt(g);
         if (applyGlobalSettings || !oldrfs.containsKey(sg))
         {
           // set defaults for this group's conservation/consensus
@@ -1494,4 +1504,22 @@ public class AlignmentPanel extends GAlignmentPanel implements
   {
     new OOMWarning(string,  error, this);
   }
+
+  public FeatureRenderer cloneFeatureRenderer()
+  {
+    
+    return new FeatureRenderer(this);
+  }
+
+  public void updateFeatureRenderer(FeatureRenderer fr)
+  {
+    fr.transferSettings(seqPanel.seqCanvas.getFeatureRenderer());
+  }
+
+  public void updateFeatureRendererFrom(FeatureRenderer fr)
+  {
+    if (seqPanel.seqCanvas.getFeatureRenderer()!=null) {
+      seqPanel.seqCanvas.getFeatureRenderer().transferSettings(fr);
+    }
+  }
 }