import java.awt.event.*;\r
import java.awt.print.*;\r
\r
+import com.sun.image.codec.jpeg.*;\r
+import java.io.*;\r
+import java.awt.image.*;\r
+\r
+\r
public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener, Printable\r
{\r
\r
\r
addComponentListener(new ComponentAdapter()\r
{\r
- public void componentResized(ComponentEvent evt)\r
+ public void componentResized(ComponentEvent evt)\r
{\r
RefreshPanels();\r
}\r
});\r
\r
+\r
hscroll.setFocusable(false);\r
vscroll.setFocusable(false);\r
setFocusable(true);\r
{\r
public void keyPressed(KeyEvent evt)\r
{\r
- if(evt.getKeyCode()==27)\r
+ switch(evt.getKeyCode())\r
{\r
- av.setRubberbandGroup(null);\r
- RefreshPanels();\r
+ case 27: // escape key\r
+ av.setRubberbandGroup(null);\r
+ av.getSelection().clear();\r
+ RefreshPanels();\r
+ break;\r
+ case KeyEvent.VK_X:\r
+ alignFrame.cut_actionPerformed(null);\r
+ break;\r
+ case KeyEvent.VK_C:\r
+ alignFrame.copy_actionPerformed(null);\r
+ break;\r
+ case KeyEvent.VK_V:\r
+ alignFrame.paste(true);\r
+ break;\r
+ case KeyEvent.VK_A:\r
+ alignFrame.selectAllSequenceMenuItem_actionPerformed(null);\r
+ break;\r
+ case KeyEvent.VK_DOWN:\r
+ alignFrame.moveSelectedSequences(false);\r
+ break;\r
+ case KeyEvent.VK_UP:\r
+ alignFrame.moveSelectedSequences(true);\r
+ break;\r
+ case KeyEvent.VK_F:\r
+ alignFrame.findMenuItem_actionPerformed(null);\r
+ break;\r
}\r
}\r
});\r
-\r
-\r
}\r
\r
+\r
public void highlightSearchResults(int [] results)\r
{\r
seqPanel.seqCanvas.highlightSearchResults( results );\r
{\r
requestFocus();\r
invalidate();\r
- seqPanel.seqCanvas.paintFlag = true;\r
- idPanel.idCanvas.paintFlag = true;\r
idPanelHolder.setPreferredSize( idPanel.idCanvas.getPreferredSize() );\r
-\r
+ idSpaceFillerPanel1.setPreferredSize(new Dimension(500, av.charHeight/2 +12));\r
+ scalePanelHolder.setPreferredSize(new Dimension(500, av.charHeight/2 +12));\r
if(av.getWrapAlignment())\r
{\r
int max = av.alignment.getWidth()/ (seqPanel.seqCanvas.getWidth()/av.charWidth)+1;\r
if (av.getWrapAlignment())\r
{\r
av.setStartRes( vscroll.getValue() * av.getChunkWidth());\r
- // System.out.println(vscroll.getValue()+" "+ av.getChunkWidth());\r
- // int resSpan = av.alignment.getWidth()/ (seqPanel.seqCanvas.getWidth()/av.charWidth)+1;\r
- // int h = (av.alignment.getHeight() + 2)*av.charHeight;\r
- // vextent = seqPanel.seqCanvas.getHeight()/h;\r
- // vscroll.setValues(0,vextent,0,max);\r
-\r
-\r
- // av.setStartSeq( );\r
}\r
else\r
{\r
if(overviewPanel!=null)\r
overviewPanel.setBoxPosition();\r
\r
- seqPanel.seqCanvas.paintFlag=true;\r
repaint();\r
}\r
\r
-\r
-\r
public int print(Graphics pg, PageFormat pf, int pi) throws PrinterException\r
{\r
- if(av.getWrapAlignment())\r
- {\r
- return PrintWrappedAlignment(pg, pf, pi);\r
- }\r
-\r
pg.translate((int)pf.getImageableX(), (int)pf.getImageableY());\r
\r
- int pwidth = (int)pf.getImageableWidth();\r
- int pheight = (int)pf.getImageableHeight();\r
+ int pwidth = (int) pf.getImageableWidth();\r
+ int pheight = (int) pf.getImageableHeight();\r
+\r
+ if (av.getWrapAlignment())\r
+ return printWrappedAlignment(pg, pwidth,pheight, pi);\r
+ else\r
+ return printUnwrapped(pg,pwidth, pheight,pi);\r
+ }\r
+\r
+ public int printUnwrapped(Graphics pg, int pwidth, int pheight, int pi) throws PrinterException\r
+ {\r
+\r
int idWidth = (int)idPanel.idCanvas.getLabelWidth().getWidth();\r
\r
\r
////////////////\r
//draw Scale\r
pg.translate(idWidth,0);\r
- scalePanel.scaleCanvas.drawScale(pg, startRes, endRes, pwidth-idWidth);\r
+ scalePanel.drawScale(pg, startRes, endRes, pwidth-idWidth);\r
\r
pg.translate(-idWidth, 30);\r
////////////////\r
return Printable.PAGE_EXISTS;\r
}\r
\r
- class VPanel extends javax.swing.JPanel\r
- {\r
- Image image;\r
- public VPanel(Image i)\r
- {\r
- image = i;\r
- repaint();\r
- }\r
- public void paintComponent(Graphics g)\r
- {\r
- if(image!=null)\r
- g.drawImage(image,0,0,this);\r
- }\r
-\r
- }\r
\r
- public int PrintWrappedAlignment(Graphics pg, PageFormat pf, int pi)\r
+ public int printWrappedAlignment(Graphics pg, int pwidth, int pheight, int pi) throws PrinterException\r
{\r
- pg.translate((int)pf.getImageableX(), (int)pf.getImageableY());\r
\r
- int pwidth = (int)pf.getImageableWidth();\r
- int pheight = (int)pf.getImageableHeight();\r
int idWidth = (int)idPanel.idCanvas.getLabelWidth().getWidth();\r
\r
if( seqPanel.seqCanvas.getWidth() < pwidth-idWidth)\r
pwidth = seqPanel.seqCanvas.getWidth() + idWidth;\r
\r
- Image image = createImage(pwidth, pheight);\r
- pg = image.getGraphics();\r
\r
pg.setColor(Color.white);\r
pg.fillRect(0,0,pwidth, pheight);\r
int chunkWidth = (pwidth-idWidth)/av.charWidth;\r
\r
int noChunksOnPage = pheight / chunkHeight;\r
- int totalChunks = endy / chunkHeight;\r
+ int totalChunks = da.getWidth() / chunkWidth;\r
\r
if ( pi*noChunksOnPage > totalChunks )\r
return Printable.NO_SUCH_PAGE;\r
seqPanel.seqCanvas.drawWrappedPanel(pg, pwidth-idWidth, pheight, pi*noChunksOnPage*chunkWidth);\r
\r
\r
- javax.swing.JFrame frame = new javax.swing.JFrame();\r
- frame.setSize(image.getWidth(null), image.getHeight(null));\r
- frame.setVisible(true);\r
- frame.getContentPane().setLayout(new BorderLayout());\r
- VPanel pan = new VPanel(image);\r
- frame.getContentPane().add(pan, BorderLayout.CENTER);\r
- frame.validate();\r
- return Printable.NO_SUCH_PAGE;//.PAGE_EXISTS;\r
+ return Printable.PAGE_EXISTS;\r
+\r
+ }\r
+\r
+ public void makeJPG(int width, int height)\r
+ {\r
+ try\r
+ {\r
+\r
+ BufferedImage bi = new BufferedImage(width, height,\r
+ BufferedImage.TYPE_INT_RGB);\r
+ Graphics pg = bi.getGraphics();\r
+\r
+ try\r
+ {\r
+ if (av.getWrapAlignment())\r
+ printWrappedAlignment(pg, width, height, 0);\r
+ else\r
+ printUnwrapped(pg, width, height, 0);\r
+ }\r
+ catch (Exception ex)\r
+ {}\r
+\r
+ javax.swing.JFileChooser chooser = new javax.swing.JFileChooser(jalview.bin.Cache.getProperty(\r
+ "LAST_DIRECTORY"));\r
+ chooser.setDialogTitle("Create JPG image from alignment");\r
+ chooser.setToolTipText("Save");\r
+\r
+ int value = chooser.showSaveDialog(this);\r
+ if (value == javax.swing.JFileChooser.APPROVE_OPTION)\r
+ {\r
+\r
+ FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
+ JPEGImageEncoder jie = JPEGCodec.createJPEGEncoder(out);\r
+ JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(bi);\r
+ param.setQuality(1.0f, true);\r
\r
+ jie.encode(bi, param);\r
+ out.close();\r
+ }\r
+\r
+ }\r
+ catch (IOException ex)\r
+ {\r
+ System.out.println("ex Writing image ");\r
+ }\r
}\r
+\r
}\r
\r
\r