label.save_png_image = Save As PNG Image
label.load_tree_for_sequence_set = Load a tree for this sequence set
label.export_image = Export Image
+label.export_split_frame = Export Split Frame Image
label.vamsas_store = VAMSAS store
label.translate_cDNA = Translate as cDNA
label.reverse = Reverse
label.save_png_image = Guardar como imagen PNG
label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias
label.export_image = Exportar imagen
+label.export_split_frame = Exportar imagen de la ventana dividida
label.vamsas_store = Almacén VAMSAS
label.translate_cDNA = Traducir cDNA
label.extract_scores = Extraer puntuaciones
if (outputFormat.equalsIgnoreCase("png"))
{
- af.createPNG(new File(file));
+ af.createPNG(new File(file), false);
imageName = (new File(file)).getName();
System.out.println("Creating PNG image: " + file);
continue;
File outputFile = new File(file);
System.out.println(
"Creating EPS file: " + outputFile.getAbsolutePath());
- af.createEPS(outputFile);
+ af.createEPS(outputFile, false);
continue;
}
}
/**
- * DOCUMENT ME!
+ * Creates and writes a PNG image of the alignment, to the given file if
+ * specified, else after prompting for the output file
*
- * @param e
- * DOCUMENT ME!
+ * @param f
+ * @param forSplitFrame
*/
@Override
- public void createPNG(File f)
+ public void createPNG(File f, boolean forSplitFrame)
{
- alignPanel.makePNG(f);
+ alignPanel.makePNG(f, forSplitFrame);
}
/**
- * DOCUMENT ME!
+ * Creates and writes an EPS image of the alignment, to the given file if
+ * specified, else after prompting for the output file
*
- * @param e
- * DOCUMENT ME!
+ * @param f
+ * @param forSplitFrame
*/
@Override
- public void createEPS(File f)
+ public void createEPS(File f, boolean forSplitFrame)
{
- alignPanel.makeEPS(f);
+ alignPanel.makeEPS(f, forSplitFrame);
}
@Override
public void createSVG(File f)
{
- alignPanel.makeSVG(f);
+ alignPanel.makeSVG(f, false);
}
@Override
import jalview.schemes.ResidueProperties;
import jalview.structure.StructureSelectionManager;
import jalview.util.Comparison;
+import jalview.util.ImageMaker;
import jalview.util.MessageManager;
import jalview.viewmodel.ViewportListenerI;
import jalview.viewmodel.ViewportRanges;
return idwidth.intValue() + 4;
}
- void makeAlignmentImage(jalview.util.ImageMaker.TYPE type, File file)
+ /**
+ * Generates an image of the alignment panel of the specified type. If
+ * {@code type} is not null, the image is written to the file, otherwise the
+ * user is prompted to specify the output file before writing to it.
+ *
+ * @param type
+ * @param file
+ * @param forSplitFrame
+ */
+ void makeAlignmentImage(ImageMaker.TYPE type, File file,
+ boolean forSplitFrame)
{
int borderBottomOffset = 5;
long pSessionId = System.currentTimeMillis();
}
try
{
- // todo splitFrame a parameter (optional menu item choice)
- boolean splitFrame = av.getCodingComplement() != null;
+ /*
+ * if exporting a split frame image, the graphics object has
+ * width: maximum of the top and bottom image widths
+ * height: sum of the top and bottom image heights
+ */
+ AlignmentPanel comp = null;
AlignmentDimension dim1 = getAlignmentDimension();
AlignmentDimension dim2 = new AlignmentDimension(0, 0);
- if (splitFrame)
+ if (forSplitFrame)
{
- AlignmentPanel comp = ((AlignViewport) av.getCodingComplement())
+ comp = ((AlignViewport) av.getCodingComplement())
.getAlignPanel();
dim2 = comp.getAlignmentDimension();
}
+ borderBottomOffset;
final int graphicsWidth = Math.max(dim1.width, dim2.width);
- jalview.util.ImageMaker im;
final String imageAction, imageTitle;
- if (type == jalview.util.ImageMaker.TYPE.PNG)
+ if (type == ImageMaker.TYPE.PNG)
{
imageAction = "Create PNG image from alignment";
imageTitle = null;
}
- else if (type == jalview.util.ImageMaker.TYPE.EPS)
+ else if (type == ImageMaker.TYPE.EPS)
{
imageAction = "Create EPS file from alignment";
imageTitle = alignFrame.getTitle();
imageTitle = alignFrame.getTitle();
}
- im = new jalview.util.ImageMaker(this, type, imageAction,
+ ImageMaker im = new ImageMaker(this, type, imageAction,
graphicsWidth, graphicsHeight, file,
imageTitle, alignFrame, pSessionId, headless);
Graphics graphics = im.getGraphics();
printUnwrapped(dim1.width, dim1.height, 0, graphics, graphics);
}
- if (splitFrame)
+ if (forSplitFrame)
{
/*
* append coding complement image
* todo: always write top frame first!
*/
graphics.translate(0, dim1.height);
- AlignmentPanel comp = ((AlignViewport) av.getCodingComplement())
- .getAlignPanel();
if (av.getCodingComplement().getWrapAlignment())
{
comp.printWrappedAlignment(dim2.width,
* <li>sequence ids</li>
* <li>scale above, left or right if shown</li>
* <li>sequences</li>
- * <li>annotations, if shown</li> The alignment may be in wrapped or unwrapped
- * mode.
+ * <li>annotations, if shown</li>
+ * </ul>
+ * The alignment may be in wrapped or unwrapped mode.
* <ul>
*
* @return
}
/**
- * DOCUMENT ME!
+ * Creates and writes an EPS image of the alignment, to the given file if
+ * specified, else after prompting for the output file
+ *
+ * @param epsFile
+ * @param forSplitFrame
*/
- public void makeEPS(File epsFile)
+ public void makeEPS(File epsFile, boolean forSplitFrame)
{
- makeAlignmentImage(jalview.util.ImageMaker.TYPE.EPS, epsFile);
+ makeAlignmentImage(ImageMaker.TYPE.EPS, epsFile, forSplitFrame);
}
/**
- * DOCUMENT ME!
+ * Creates and writes a PNG image of the alignment, to the given file if
+ * specified, else after prompting for the output file
+ *
+ * @param pngFile
+ * @param forSplitFrame
*/
- public void makePNG(File pngFile)
+ public void makePNG(File pngFile, boolean forSplitFrame)
{
- makeAlignmentImage(jalview.util.ImageMaker.TYPE.PNG, pngFile);
+ makeAlignmentImage(ImageMaker.TYPE.PNG, pngFile, forSplitFrame);
}
- public void makeSVG(File svgFile)
+ /**
+ * Creates and writes an SVG image of the alignment, to the given file if
+ * specified, else after prompting for the output file
+ *
+ * @param svgFile
+ * @param forSplitFrame
+ */
+ public void makeSVG(File svgFile, boolean forSplitFrame)
{
- makeAlignmentImage(jalview.util.ImageMaker.TYPE.SVG, svgFile);
+ makeAlignmentImage(ImageMaker.TYPE.SVG, svgFile, forSplitFrame);
}
public void makePNGImageMap(File imgMapFile, String imageName)
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.io.File;
import java.util.HashMap;
import java.util.Map;
private SplitContainerI splitFrame;
+ protected JMenu exportSplitFrameMenu;
+
public GAlignFrame()
{
try
@Override
public void actionPerformed(ActionEvent e)
{
- createPNG(null);
+ createPNG(null, false);
}
});
createPNG.setActionCommand(
MessageManager.getString("label.save_png_image"));
+ JMenuItem createSplitFramePNG = new JMenuItem("PNG");
+ createSplitFramePNG.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ createPNG(null, true);
+ }
+ });
+
JMenuItem font = new JMenuItem(MessageManager.getString("action.font"));
font.addActionListener(new ActionListener()
{
seqLimit_actionPerformed(e);
}
});
- JMenuItem epsFile = new JMenuItem("EPS");
- epsFile.addActionListener(new ActionListener()
+ JMenuItem createEPS = new JMenuItem("EPS");
+ createEPS.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ createEPS(null, false);
+ }
+ });
+ JMenuItem createSplitFrameEPS = new JMenuItem("EPS");
+ createEPS.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
- createEPS(null);
+ createEPS(null, true);
}
});
JMenu exportImageMenu = new JMenu(
MessageManager.getString("label.export_image"));
+ exportSplitFrameMenu = new JMenu(
+ MessageManager.getString("label.export_split_frame"));
+ exportSplitFrameMenu.setVisible(false);
JMenu fileMenu = new JMenu(MessageManager.getString("action.file"));
alignFrameMenuBar.add(fileMenu);
alignFrameMenuBar.add(editMenu);
fileMenu.add(printMenuItem);
fileMenu.addSeparator();
fileMenu.add(exportImageMenu);
+ fileMenu.add(exportSplitFrameMenu);
fileMenu.add(exportFeatures);
fileMenu.add(exportAnnotations);
fileMenu.add(loadTreeMenuItem);
MessageManager.getString("label.no_services"));
webService.add(webServiceNoServices);
exportImageMenu.add(htmlMenuItem);
- exportImageMenu.add(epsFile);
+ exportImageMenu.add(createEPS);
exportImageMenu.add(createPNG);
exportImageMenu.add(createBioJS);
exportImageMenu.add(createSVG);
+ exportSplitFrameMenu.add(createSplitFrameEPS);
+ exportSplitFrameMenu.add(createSplitFramePNG);
addSequenceMenu.add(addFromFile);
addSequenceMenu.add(addFromText);
addSequenceMenu.add(addFromURL);
{
}
- public void createPNG(java.io.File f)
+ public void createPNG(File f, boolean forSplitFrame)
{
}
}
- public void createEPS(java.io.File f)
+ public void createEPS(File f, boolean forSplitFrame)
{
}
- public void createSVG(java.io.File f)
+ public void createSVG(File f)
{
}
}
/**
- * Sets a reference to the containing split frame. Also makes the 'toggle
- * split view' menu item visible and checked.
+ * Sets a reference to the containing split frame. Also makes the 'toggle split
+ * view' menu item visible and checked. Also makes the 'export split frame
+ * image' menu visible.
*
* @param sf
*/
{
this.showComplementMenuItem.setVisible(true);
this.showComplementMenuItem.setState(true);
+ this.exportSplitFrameMenu.setVisible(true);
}
}
private boolean headless;
+ /**
+ * Image format, currently either EPS, PNG or SVG
+ */
public enum TYPE
{
EPS("EPS", MessageManager.getString("label.eps_file"), EPS_EXTENSION,
}
+ /**
+ * Constructor that prepares the image context for writing to. If {@code file}
+ * is null, the user is prompted to choose a file.
+ *
+ * @param parent
+ * @param type
+ * @param title
+ * @param width
+ * @param height
+ * @param file
+ * @param fileTitle
+ * @param pIndicator
+ * @param pSessionId
+ * @param headless
+ */
public ImageMaker(Component parent, TYPE type, String title, int width,
int height, File file, String fileTitle,
IProgressIndicator pIndicator, long pSessionId, boolean headless)