JAL-1620 version bump and release notes
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index cdac5b4..e1b5abb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
  * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  */
 package jalview.gui;
 
-import java.beans.*;
-import java.io.*;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.print.*;
-import javax.swing.*;
-
+import jalview.analysis.AnnotationSorter;
 import jalview.api.AlignmentViewPanel;
 import jalview.bin.Cache;
-import jalview.datamodel.*;
-import jalview.jbgui.*;
-import jalview.schemes.*;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SearchResults;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.jbgui.GAlignmentPanel;
+import jalview.schemes.ResidueProperties;
 import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+
+import javax.swing.SwingUtilities;
+
 /**
  * DOCUMENT ME!
  * 
@@ -179,7 +196,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
     int afwidth = (alignFrame != null ? alignFrame.getWidth() : 300);
     int maxwidth = Math.max(20,
-            Math.min(afwidth - 200, (int) 2 * afwidth / 3));
+            Math.min(afwidth - 200, 2 * afwidth / 3));
     return calculateIdWidth(maxwidth);
   }
 
@@ -718,8 +735,17 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
   }
 
+  /**
+   * Repaint the alignment including the annotations and overview panels (if
+   * shown).
+   */
   public void paintAlignment(boolean updateOverview)
   {
+    final AnnotationSorter sorter = new AnnotationSorter(getAlignment(),
+            av.isShowAutocalculatedAbove());
+    sorter.sort(getAlignment()
+            .getAlignmentAnnotation(),
+            av.getSortAnnotationsBy());
     repaint();
 
     if (updateOverview)
@@ -841,7 +867,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     // / How many sequences and residues can we fit on a printable page?
     int totalRes = (pwidth - idWidth) / av.getCharWidth();
 
-    int totalSeq = (int) ((pheight - scaleHeight) / av.getCharHeight()) - 1;
+    int totalSeq = (pheight - scaleHeight) / av.getCharHeight() - 1;
 
     int pagesWide = (av.getAlignment().getWidth() / totalRes) + 1;
 
@@ -954,10 +980,10 @@ public class AlignmentPanel extends GAlignmentPanel implements
       int offset = -alabels.scrollOffset;
       pg.translate(0, offset);
       pg.translate(-idWidth - 3, (endSeq - startSeq) * av.charHeight + 3);
-      alabels.drawComponent((Graphics2D) pg, idWidth);
+      alabels.drawComponent(pg, idWidth);
       pg.translate(idWidth + 3, 0);
       annotationPanel.renderer.drawComponent(annotationPanel, av,
-              (Graphics2D) pg, -1, startRes, endRes + 1);
+              pg, -1, startRes, endRes + 1);
       pg.translate(0, -offset);
     }
 
@@ -1113,14 +1139,17 @@ public class AlignmentPanel extends GAlignmentPanel implements
     return idwidth.intValue() + 4;
   }
 
-  void makeAlignmentImage(int type, File file)
+  void makeAlignmentImage(jalview.util.ImageMaker.TYPE type, File file)
   {
     long progress = System.currentTimeMillis();
     boolean headless = (System.getProperty("java.awt.headless") != null && System
             .getProperty("java.awt.headless").equals("true"));
     if (alignFrame != null && !headless)
     {
-      alignFrame.setProgressBar(MessageManager.formatMessage("status.saving_file", new String[]{(type == jalview.util.ImageMaker.PNG ? MessageManager.getString("label.png_image") : MessageManager.getString("label.eps_file"))}), progress);
+      alignFrame.setProgressBar(MessageManager.formatMessage(
+              "status.saving_file",
+              new String[]
+              { type.getLabel() }), progress);
     }
     try
     {
@@ -1164,16 +1193,22 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
         jalview.util.ImageMaker im;
         final String imageAction, imageTitle;
-        if (type == jalview.util.ImageMaker.PNG)
+        if (type == jalview.util.ImageMaker.TYPE.PNG)
         {
           imageAction = "Create PNG image from alignment";
           imageTitle = null;
         }
-        else
+        else if (type == jalview.util.ImageMaker.TYPE.EPS)
         {
           imageAction = "Create EPS file from alignment";
           imageTitle = alignFrame.getTitle();
         }
+        else
+        {
+          imageAction = "Create SVG file from alignment";
+          imageTitle = alignFrame.getTitle();
+        }
+
         im = new jalview.util.ImageMaker(this, type, imageAction, width,
                 height, file, imageTitle);
         if (av.getWrapAlignment())
@@ -1217,7 +1252,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
    */
   public void makeEPS(File epsFile)
   {
-    makeAlignmentImage(jalview.util.ImageMaker.EPS, epsFile);
+    makeAlignmentImage(jalview.util.ImageMaker.TYPE.EPS, epsFile);
   }
 
   /**
@@ -1225,9 +1260,13 @@ public class AlignmentPanel extends GAlignmentPanel implements
    */
   public void makePNG(File pngFile)
   {
-    makeAlignmentImage(jalview.util.ImageMaker.PNG, pngFile);
+    makeAlignmentImage(jalview.util.ImageMaker.TYPE.PNG, pngFile);
   }
 
+  public void makeSVG(File svgFile)
+  {
+    makeAlignmentImage(jalview.util.ImageMaker.TYPE.SVG, svgFile);
+  }
   public void makePNGImageMap(File imgMapFile, String imageName)
   {
     // /////ONLY WORKS WITH NONE WRAPPED ALIGNMENTS
@@ -1464,11 +1503,8 @@ public class AlignmentPanel extends GAlignmentPanel implements
     return av.getAlignment();
   }
 
-  /**
-   * get the name for this view
-   * 
-   * @return
-   */
+
+  @Override
   public String getViewName()
   {
     return av.viewName;