X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=e1b5abb3c2e6571347faec893b4acb813d0d058f;hb=ab43013b7e357b84b4abade0dba949668dfb2a0e;hp=c83e1d4ac66afe17881716d02a2c5f164927c79a;hpb=a8f483d04205bb8273ee311c12968b7e86d205fa;p=jalview.git
diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java
index c83e1d4..e1b5abb 100644
--- a/src/jalview/gui/AlignmentPanel.java
+++ b/src/jalview/gui/AlignmentPanel.java
@@ -1,37 +1,57 @@
/*
- * 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.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
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!
@@ -176,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);
}
@@ -422,16 +442,19 @@ public class AlignmentPanel extends GAlignmentPanel implements
protected void validateAnnotationDimensions(boolean adjustPanelHeight)
{
int height = annotationPanel.adjustPanelHeight();
-
- int theight = av.getCharHeight() * (av.getAlignment().getHeight() + (!av.hasHiddenRows() ? 0 : av.getAlignment().getHiddenSequences().getSize()));
- float sscaling = (float) (theight/(1.0*theight+height));
- float ascaling=(float)(height*1.0/alignFrame.getHeight());
+
+ int theight = av.getCharHeight()
+ * (av.getAlignment().getHeight() + (!av.hasHiddenRows() ? 0
+ : av.getAlignment().getHiddenSequences().getSize()));
+ float sscaling = (float) (theight / (1.0 * theight + height));
+ float ascaling = (float) (height * 1.0 / alignFrame.getHeight());
int rheight = alignFrame.getHeight() - height - av.getCharHeight();
if (adjustPanelHeight)
{
- // NOTE: this logic is different in the applet. Need a better algorithm to define behaviour
+ // NOTE: this logic is different in the applet. Need a better algorithm to
+ // define behaviour
// try and set height according to alignment
- if (ascaling>0 && sscaling < 0.5)
+ if (ascaling > 0 && sscaling < 0.5)
{
// if the alignment is too big then
// default is 0.5 split
@@ -439,10 +462,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
}
else
{
- // if space for more than one sequence row left when annotation is fully displayed then set height to annotation height
- // otherwise, leave at least two lines of sequence shown.
- height = (rheight>av.getCharHeight()) ? height : (-av.getCharHeight() * 3
- + (int) (alignFrame.getHeight() * (1 - sscaling)));
+ // if space for more than one sequence row left when annotation is fully
+ // displayed then set height to annotation height
+ // otherwise, leave at least two lines of sequence shown.
+ height = (rheight > av.getCharHeight()) ? height
+ : (-av.getCharHeight() * 3 + (int) (alignFrame.getHeight() * (1 - sscaling)));
}
}
else
@@ -703,7 +727,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
seqPanel.seqCanvas.fastPaint(scrollX, scrollY);
scalePanel.repaint();
- if (av.getShowAnnotation() && scrollX!=0)
+ if (av.getShowAnnotation() && scrollX != 0)
{
annotationPanel.fastPaint(scrollX);
}
@@ -711,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)
@@ -834,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;
@@ -947,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);
}
@@ -1106,16 +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"));
+ boolean headless = (System.getProperty("java.awt.headless") != null && System
+ .getProperty("java.awt.headless").equals("true"));
if (alignFrame != null && !headless)
{
- alignFrame.setProgressBar("Saving "
- + (type == jalview.util.ImageMaker.PNG ? "PNG image"
- : "EPS file"), progress);
+ alignFrame.setProgressBar(MessageManager.formatMessage(
+ "status.saving_file",
+ new String[]
+ { type.getLabel() }), progress);
}
try
{
@@ -1159,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())
@@ -1202,7 +1242,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
{
if (alignFrame != null && !headless)
{
- alignFrame.setProgressBar("Export complete.", progress);
+ alignFrame.setProgressBar(MessageManager.getString("status.export_complete"), progress);
}
}
}
@@ -1212,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);
}
/**
@@ -1220,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
@@ -1459,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;