git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b56f333
)
JAL-3364 submenu for Export Split Frame Image
author
gmungoc
<g.m.carstairs@dundee.ac.uk>
Mon, 15 Jul 2019 08:24:08 +0000
(09:24 +0100)
committer
gmungoc
<g.m.carstairs@dundee.ac.uk>
Mon, 15 Jul 2019 08:24:08 +0000
(09:24 +0100)
resources/lang/Messages.properties
patch
|
blob
|
history
resources/lang/Messages_es.properties
patch
|
blob
|
history
src/jalview/bin/Jalview.java
patch
|
blob
|
history
src/jalview/gui/AlignFrame.java
patch
|
blob
|
history
src/jalview/gui/AlignmentPanel.java
patch
|
blob
|
history
src/jalview/jbgui/GAlignFrame.java
patch
|
blob
|
history
src/jalview/util/ImageMaker.java
patch
|
blob
|
history
diff --git
a/resources/lang/Messages.properties
b/resources/lang/Messages.properties
index
d2d8e88
..
44125a6
100644
(file)
--- a/
resources/lang/Messages.properties
+++ b/
resources/lang/Messages.properties
@@
-689,6
+689,7
@@
label.show_non_positional_features = Show Non-Positional Features
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.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.vamsas_store = VAMSAS store
label.translate_cDNA = Translate as cDNA
label.reverse = Reverse
diff --git
a/resources/lang/Messages_es.properties
b/resources/lang/Messages_es.properties
index
e9e18ce
..
80c15ab
100644
(file)
--- a/
resources/lang/Messages_es.properties
+++ b/
resources/lang/Messages_es.properties
@@
-639,6
+639,7
@@
label.show_non_positional_features = Mostrar las caracter
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.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
label.vamsas_store = Almacén VAMSAS
label.translate_cDNA = Traducir cDNA
label.extract_scores = Extraer puntuaciones
diff --git
a/src/jalview/bin/Jalview.java
b/src/jalview/bin/Jalview.java
index
ca2a584
..
4bf811a
100755
(executable)
--- a/
src/jalview/bin/Jalview.java
+++ b/
src/jalview/bin/Jalview.java
@@
-593,7
+593,7
@@
public class Jalview
if (outputFormat.equalsIgnoreCase("png"))
{
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;
imageName = (new File(file)).getName();
System.out.println("Creating PNG image: " + file);
continue;
@@
-648,7
+648,7
@@
public class Jalview
File outputFile = new File(file);
System.out.println(
"Creating EPS file: " + outputFile.getAbsolutePath());
File outputFile = new File(file);
System.out.println(
"Creating EPS file: " + outputFile.getAbsolutePath());
- af.createEPS(outputFile);
+ af.createEPS(outputFile, false);
continue;
}
continue;
}
diff --git
a/src/jalview/gui/AlignFrame.java
b/src/jalview/gui/AlignFrame.java
index
fcb6572
..
235a5c8
100644
(file)
--- a/
src/jalview/gui/AlignFrame.java
+++ b/
src/jalview/gui/AlignFrame.java
@@
-1358,33
+1358,35
@@
public class AlignFrame extends GAlignFrame implements DropTargetListener,
}
/**
}
/**
- * 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
*/
@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
*/
@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)
{
}
@Override
public void createSVG(File f)
{
- alignPanel.makeSVG(f);
+ alignPanel.makeSVG(f, false);
}
@Override
}
@Override
diff --git
a/src/jalview/gui/AlignmentPanel.java
b/src/jalview/gui/AlignmentPanel.java
index
3fad3de
..
73d8148
100644
(file)
--- a/
src/jalview/gui/AlignmentPanel.java
+++ b/
src/jalview/gui/AlignmentPanel.java
@@
-36,6
+36,7
@@
import jalview.math.AlignmentDimension;
import jalview.schemes.ResidueProperties;
import jalview.structure.StructureSelectionManager;
import jalview.util.Comparison;
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;
import jalview.util.MessageManager;
import jalview.viewmodel.ViewportListenerI;
import jalview.viewmodel.ViewportRanges;
@@
-1149,7
+1150,17
@@
public class AlignmentPanel extends GAlignmentPanel implements
return idwidth.intValue() + 4;
}
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();
{
int borderBottomOffset = 5;
long pSessionId = System.currentTimeMillis();
@@
-1166,13
+1177,17
@@
public class AlignmentPanel extends GAlignmentPanel implements
}
try
{
}
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);
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();
}
.getAlignPanel();
dim2 = comp.getAlignmentDimension();
}
@@
-1180,14
+1195,13
@@
public class AlignmentPanel extends GAlignmentPanel implements
+ borderBottomOffset;
final int graphicsWidth = Math.max(dim1.width, dim2.width);
+ borderBottomOffset;
final int graphicsWidth = Math.max(dim1.width, dim2.width);
- jalview.util.ImageMaker im;
final String imageAction, imageTitle;
final String imageAction, imageTitle;
- if (type == jalview.util.ImageMaker.TYPE.PNG)
+ if (type == ImageMaker.TYPE.PNG)
{
imageAction = "Create PNG image from alignment";
imageTitle = null;
}
{
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();
{
imageAction = "Create EPS file from alignment";
imageTitle = alignFrame.getTitle();
@@
-1198,7
+1212,7
@@
public class AlignmentPanel extends GAlignmentPanel implements
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();
graphicsWidth, graphicsHeight, file,
imageTitle, alignFrame, pSessionId, headless);
Graphics graphics = im.getGraphics();
@@
-1218,15
+1232,13
@@
public class AlignmentPanel extends GAlignmentPanel implements
printUnwrapped(dim1.width, dim1.height, 0, graphics, graphics);
}
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);
{
/*
* 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,
if (av.getCodingComplement().getWrapAlignment())
{
comp.printWrappedAlignment(dim2.width,
@@
-1260,8
+1272,9
@@
public class AlignmentPanel extends GAlignmentPanel implements
* <li>sequence ids</li>
* <li>scale above, left or right if shown</li>
* <li>sequences</li>
* <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
* <ul>
*
* @return
@@
-1302,24
+1315,39
@@
public class AlignmentPanel extends GAlignmentPanel implements
}
/**
}
/**
- * 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)
}
public void makePNGImageMap(File imgMapFile, String imageName)
diff --git
a/src/jalview/jbgui/GAlignFrame.java
b/src/jalview/jbgui/GAlignFrame.java
index
075b490
..
8e21cbe
100755
(executable)
--- a/
src/jalview/jbgui/GAlignFrame.java
+++ b/
src/jalview/jbgui/GAlignFrame.java
@@
-42,6
+42,7
@@
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
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;
import java.util.HashMap;
import java.util.Map;
@@
-207,6
+208,8
@@
public class GAlignFrame extends JInternalFrame
private SplitContainerI splitFrame;
private SplitContainerI splitFrame;
+ protected JMenu exportSplitFrameMenu;
+
public GAlignFrame()
{
try
public GAlignFrame()
{
try
@@
-1035,12
+1038,22
@@
public class GAlignFrame extends JInternalFrame
@Override
public void actionPerformed(ActionEvent e)
{
@Override
public void actionPerformed(ActionEvent e)
{
- createPNG(null);
+ createPNG(null, false);
}
});
createPNG.setActionCommand(
MessageManager.getString("label.save_png_image"));
}
});
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()
{
JMenuItem font = new JMenuItem(MessageManager.getString("action.font"));
font.addActionListener(new ActionListener()
{
@@
-1061,13
+1074,22
@@
public class GAlignFrame extends JInternalFrame
seqLimit_actionPerformed(e);
}
});
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)
{
{
@Override
public void actionPerformed(ActionEvent e)
{
- createEPS(null);
+ createEPS(null, true);
}
});
}
});
@@
-1714,6
+1736,9
@@
public class GAlignFrame extends JInternalFrame
JMenu exportImageMenu = new JMenu(
MessageManager.getString("label.export_image"));
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);
JMenu fileMenu = new JMenu(MessageManager.getString("action.file"));
alignFrameMenuBar.add(fileMenu);
alignFrameMenuBar.add(editMenu);
@@
-1737,6
+1762,7
@@
public class GAlignFrame extends JInternalFrame
fileMenu.add(printMenuItem);
fileMenu.addSeparator();
fileMenu.add(exportImageMenu);
fileMenu.add(printMenuItem);
fileMenu.addSeparator();
fileMenu.add(exportImageMenu);
+ fileMenu.add(exportSplitFrameMenu);
fileMenu.add(exportFeatures);
fileMenu.add(exportAnnotations);
fileMenu.add(loadTreeMenuItem);
fileMenu.add(exportFeatures);
fileMenu.add(exportAnnotations);
fileMenu.add(loadTreeMenuItem);
@@
-1843,10
+1869,12
@@
public class GAlignFrame extends JInternalFrame
MessageManager.getString("label.no_services"));
webService.add(webServiceNoServices);
exportImageMenu.add(htmlMenuItem);
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);
exportImageMenu.add(createPNG);
exportImageMenu.add(createBioJS);
exportImageMenu.add(createSVG);
+ exportSplitFrameMenu.add(createSplitFrameEPS);
+ exportSplitFrameMenu.add(createSplitFramePNG);
addSequenceMenu.add(addFromFile);
addSequenceMenu.add(addFromText);
addSequenceMenu.add(addFromURL);
addSequenceMenu.add(addFromFile);
addSequenceMenu.add(addFromText);
addSequenceMenu.add(addFromURL);
@@
-2374,7
+2402,7
@@
public class GAlignFrame extends JInternalFrame
{
}
{
}
- public void createPNG(java.io.File f)
+ public void createPNG(File f, boolean forSplitFrame)
{
}
{
}
@@
-2391,11
+2419,11
@@
public class GAlignFrame extends JInternalFrame
}
}
- 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)
{
}
{
}
@@
-2662,8
+2690,9
@@
public class GAlignFrame extends JInternalFrame
}
/**
}
/**
- * 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
*/
*
* @param sf
*/
@@
-2674,6
+2703,7
@@
public class GAlignFrame extends JInternalFrame
{
this.showComplementMenuItem.setVisible(true);
this.showComplementMenuItem.setState(true);
{
this.showComplementMenuItem.setVisible(true);
this.showComplementMenuItem.setState(true);
+ this.exportSplitFrameMenu.setVisible(true);
}
}
}
}
diff --git
a/src/jalview/util/ImageMaker.java
b/src/jalview/util/ImageMaker.java
index
7232042
..
099bcee
100755
(executable)
--- a/
src/jalview/util/ImageMaker.java
+++ b/
src/jalview/util/ImageMaker.java
@@
-76,6
+76,9
@@
public class ImageMaker
private boolean headless;
private boolean headless;
+ /**
+ * Image format, currently either EPS, PNG or SVG
+ */
public enum TYPE
{
EPS("EPS", MessageManager.getString("label.eps_file"), EPS_EXTENSION,
public enum TYPE
{
EPS("EPS", MessageManager.getString("label.eps_file"), EPS_EXTENSION,
@@
-117,6
+120,21
@@
public class ImageMaker
}
}
+ /**
+ * 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)
public ImageMaker(Component parent, TYPE type, String title, int width,
int height, File file, String fileTitle,
IProgressIndicator pIndicator, long pSessionId, boolean headless)