annotationScroller.setViewportView(annotationPanel);\r
annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER);\r
\r
- Dimension d = calculateIdWidth();\r
- d.setSize( d.width+4, d.height);\r
- idPanel.idCanvas.setPreferredSize( d );\r
- hscrollFillerPanel.setPreferredSize( d );\r
+ fontChanged();\r
\r
scalePanelHolder.add(scalePanel, BorderLayout.CENTER);\r
seqPanelHolder.add(seqPanel, BorderLayout.CENTER);\r
\r
-\r
- if(seqPanel.seqCanvas.getWidth()==0)\r
- javax.swing.SwingUtilities.invokeLater(new Runnable()\r
- {\r
- public void run()\r
- {\r
- setScrollValues(0,0);\r
- Dimension d = calculateIdWidth();\r
- d.setSize( d.width+4, d.height);\r
- idPanel.idCanvas.setPreferredSize( d );\r
- RefreshPanels();\r
- }\r
- });\r
-\r
+ setScrollValues(0, 0);\r
\r
hscroll.addAdjustmentListener(this);\r
vscroll.addAdjustmentListener(this);\r
\r
- addComponentListener(new ComponentAdapter()\r
- {\r
- public void componentResized(ComponentEvent evt)\r
- {\r
- RefreshPanels();\r
- }\r
- });\r
-\r
setFocusable(true);\r
addKeyListener(new KeyAdapter()\r
{\r
{\r
case 27: // escape key\r
av.setSelectionGroup(null);\r
- RefreshPanels();\r
+ repaint();\r
break;\r
case KeyEvent.VK_X:\r
if(evt.isControlDown())\r
});\r
}\r
\r
+ public void fontChanged()\r
+ {\r
+ // set idCanvas bufferedImage to null\r
+ // to prevent drawing old image\r
+ idPanel.idCanvas.gg = null;\r
+ annotationPanel.adjustPanelHeight();\r
+ Dimension d = calculateIdWidth();\r
+ d.setSize(d.width + 4, d.height);\r
+ idPanel.idCanvas.setPreferredSize(d);\r
+ hscrollFillerPanel.setPreferredSize(d);\r
+ repaint();\r
+ }\r
+\r
+\r
Dimension calculateIdWidth()\r
{\r
Graphics g = this.getGraphics();\r
i++;\r
}\r
\r
+ // Also check annotation label widths\r
+ i=0;\r
+ if(al.getAlignmentAnnotation()!=null)\r
+ {\r
+ fm = g.getFontMetrics(alabels.getFont());\r
+ while (i < al.getAlignmentAnnotation().length)\r
+ {\r
+ String label = al.getAlignmentAnnotation()[i].label;\r
+ if (fm.stringWidth(label) > idWidth)\r
+ idWidth = fm.stringWidth(label);\r
+ i++;\r
+ }\r
+ }\r
+\r
return new Dimension(idWidth, 12);\r
}\r
\r
{\r
annotationSpaceFillerHolder.setVisible(b);\r
annotationScroller.setVisible(b);\r
- javax.swing.SwingUtilities.invokeLater(new Runnable()\r
- {\r
- public void run()\r
- {\r
- RefreshPanels();\r
- }\r
- });\r
-\r
}\r
\r
\r
annotationSpaceFillerHolder.setVisible(!wrap);\r
idSpaceFillerPanel1.setVisible(!wrap);\r
\r
- RefreshPanels();\r
+ repaint();\r
\r
}\r
\r
al.getWidth() );\r
\r
c.calculate();\r
- c.verdict(false, 100);\r
+ c.verdict(false, av.ConsPercGaps);\r
ConservationColourScheme ccs = new ConservationColourScheme(c, cs);\r
\r
av.setGlobalColourScheme( ccs );\r
\r
}\r
\r
- RefreshPanels();\r
- }\r
-\r
-\r
- public void RefreshPanels()\r
- {\r
- requestFocus();\r
- invalidate();\r
-\r
- Dimension d = idPanel.idCanvas.getPreferredSize();\r
- idPanelHolder.setPreferredSize(d);\r
- hscrollFillerPanel.setPreferredSize(new Dimension(d.width, 12));\r
-\r
- if (av.getWrapAlignment())\r
- {\r
- int max = av.alignment.getWidth() /\r
- (seqPanel.seqCanvas.getWidth() / av.charWidth) + 1;\r
- vscroll.setValues(0, 1, 0, max);\r
- }\r
- else\r
- {\r
- if (overviewPanel != null)\r
- overviewPanel.updateOverviewImage();\r
- setScrollValues(av.getStartRes(), av.getStartSeq());\r
- }\r
-\r
- validate();\r
repaint();\r
}\r
\r
+\r
int hextent = 0;\r
int vextent = 0;\r
\r
\r
public void setScrollValues(int x, int y)\r
{\r
+ av.setEndRes(x + seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1);\r
+\r
hextent = seqPanel.seqCanvas.getWidth()/av.charWidth;\r
vextent = seqPanel.seqCanvas.getHeight()/av.charHeight;\r
\r
hscroll.setValues(x,hextent,0,av.getAlignment().getWidth());\r
vscroll.setValues(y,vextent,0,av.getAlignment().getHeight() );\r
\r
+\r
+\r
}\r
\r
\r
int offy = vscroll.getValue();\r
if (av.getWrapAlignment())\r
{\r
- av.setStartRes( vscroll.getValue() * av.getChunkWidth());\r
+ int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+ av.setStartRes( vscroll.getValue() * rowSize );\r
+ av.setEndRes( (vscroll.getValue()+1) * rowSize );\r
}\r
else\r
{\r
}\r
}\r
\r
-\r
if(overviewPanel!=null)\r
overviewPanel.setBoxPosition();\r
\r
repaint();\r
else\r
{\r
+ idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX,\r
av.getStartSeq() - oldY);\r
- idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
+\r
scalePanel.repaint();\r
if (av.getShowAnnotation())\r
annotationPanel.fastPaint(av.getStartRes() - oldX);\r
\r
}\r
\r
+\r
+ public void paintComponent(Graphics g)\r
+ {\r
+ invalidate();\r
+ Dimension d = idPanel.idCanvas.getPreferredSize();\r
+ idPanelHolder.setPreferredSize(d);\r
+ hscrollFillerPanel.setPreferredSize(new Dimension(d.width, 12));\r
+ validate();\r
+\r
+ if (av.getWrapAlignment())\r
+ {\r
+ int max = av.alignment.getWidth() / seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+ vscroll.setMaximum(max);\r
+ vscroll.setUnitIncrement(1);\r
+ vscroll.setVisibleAmount(1);\r
+ }\r
+ else\r
+ {\r
+ if (overviewPanel != null)\r
+ overviewPanel.updateOverviewImage();\r
+ setScrollValues(av.getStartRes(), av.getStartSeq());\r
+ }\r
+\r
+\r
+\r
+ }\r
+\r
public int print(Graphics pg, PageFormat pf, int pi) throws PrinterException\r
{\r
pg.translate((int)pf.getImageableX(), (int)pf.getImageableY());\r
\r
////////////////\r
// Draw the ids\r
- pg.setClip(0,0,pwidth, noChunksOnPage*chunkHeight);\r
+// pg.setClip(0,0,pwidth, noChunksOnPage*chunkHeight);\r
\r
- int row = pi*noChunksOnPage;\r
pg.setColor(Color.black);\r
- for(int ypos=2*av.charHeight;\r
- ypos <= pheight && row*chunkWidth<da.getWidth();\r
- ypos += chunkHeight, row++ )\r
+\r
+ int rowSize = av.getEndRes() - av.getStartRes();\r
+ for(int ypos=2*av.charHeight, row=av.getEndRes()-rowSize;\r
+ ypos <= pheight && row<av.alignment.getWidth();\r
+ ypos += av.chunkHeight, row+=rowSize )\r
{\r
for (int i = 0; i < endy; i++)\r
{\r
}\r
\r
\r
-System.out.println(width +" "+height);\r
\r
try\r
{\r
FileOutputStream out = new FileOutputStream(chooser.getSelectedFile());\r
\r
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);\r
- Graphics png = bi.getGraphics();\r
+ Graphics2D png = (Graphics2D)bi.getGraphics();\r
\r
+ png.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);\r
\r
if (av.getWrapAlignment())\r
printWrappedAlignment(png, width, height, 0);\r