X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=f6e6114c4a7f7762584684d49ff1621603026188;hb=e1124a62486322d2d28482529d2d6b850ce1719b;hp=3c80f3a38f50bd1e551d4d9594b9d631aedfd093;hpb=aa5581ff1585cfee8ccf009700f9c4dcb2e110b7;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 3c80f3a..f6e6114 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -156,6 +156,23 @@ public class AlignmentPanel extends GAlignmentPanel d.setSize(d.width + 4, d.height); idPanel.idCanvas.setPreferredSize(d); hscrollFillerPanel.setPreferredSize(d); + + if (av.getWrapAlignment()) + { + int max = av.alignment.getWidth() / + seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + vscroll.setMaximum(max); + vscroll.setUnitIncrement(1); + vscroll.setVisibleAmount(1); + } + else + { + setScrollValues(av.getStartRes(), av.getStartSeq()); + } + + if(overviewPanel!=null) + overviewPanel.setBoxPosition(); + repaint(); } @@ -282,14 +299,23 @@ public class AlignmentPanel extends GAlignmentPanel */ public void setWrapAlignment(boolean wrap) { + av.startSeq = 0; scalePanelHolder.setVisible(!wrap); hscroll.setVisible(!wrap); idwidthAdjuster.setVisible(!wrap); - av.setShowAnnotation(!wrap); - annotationScroller.setVisible(!wrap); - annotationSpaceFillerHolder.setVisible(!wrap); - idSpaceFillerPanel1.setVisible(!wrap); + if(wrap) + { + annotationScroller.setVisible(false); + annotationSpaceFillerHolder.setVisible(false); + } + else if(av.showAnnotation) + { + annotationScroller.setVisible(true); + annotationSpaceFillerHolder.setVisible(true); + } + + idSpaceFillerPanel1.setVisible(!wrap); repaint(); } @@ -415,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel */ public void adjustmentValueChanged(AdjustmentEvent evt) { + int oldX = av.getStartRes(); int oldY = av.getStartSeq(); @@ -449,21 +476,28 @@ public class AlignmentPanel extends GAlignmentPanel overviewPanel.setBoxPosition(); } - if (av.getWrapAlignment() || !fastPaint) + int xShift = av.getStartRes() - oldX; + int yShift = av.getStartSeq() - oldY; + + if ( (xShift != 0 && yShift != 0) || + (Math.abs(xShift) > av.getEndRes() - av.getStartRes() + || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq()) + || av.getWrapAlignment() + || !fastPaint) { - repaint(); + // Either no shift at all, or shift greater than visible amount + repaint(); } else { - idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY); - seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX, - av.getStartSeq() - oldY); + idPanel.idCanvas.fastPaint(yShift); + seqPanel.seqCanvas.fastPaint(xShift, yShift); scalePanel.repaint(); if (av.getShowAnnotation()) { - annotationPanel.fastPaint(av.getStartRes() - oldX); + annotationPanel.fastPaint(xShift); } } } @@ -737,6 +771,33 @@ public class AlignmentPanel extends GAlignmentPanel */ public void makeEPS(File epsFile) { + boolean accurateText = true; + + String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING", + "Prompt each time"); + + // If we need to prompt, and if the GUI is visible then + // Prompt for EPS rendering style + if (renderStyle.equalsIgnoreCase("Prompt each time") + && ! + (System.getProperty("java.awt.headless") != null + && System.getProperty("java.awt.headless").equals("true"))) + { + EPSOptions eps = new EPSOptions(); + renderStyle = eps.getValue(); + + if(eps.cancelled || renderStyle==null) + return; + + renderStyle = eps.getValue(); + } + + if (renderStyle.equalsIgnoreCase("text")) + { + accurateText = false; + } + + if(epsFile == null) { jalview.io.JalviewFileChooser chooser = new jalview.io. @@ -782,12 +843,14 @@ public class AlignmentPanel extends GAlignmentPanel try { - FileOutputStream out = new FileOutputStream(epsFile); - EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width, - height); + FileOutputStream out = new FileOutputStream(epsFile); + EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width, + height); - if (av.getWrapAlignment()) - { + pg.setAccurateTextMode(accurateText); + + if (av.getWrapAlignment()) + { printWrappedAlignment(pg, width, height, 0); } else @@ -797,7 +860,22 @@ public class AlignmentPanel extends GAlignmentPanel pg.flush(); pg.close(); - } + } + catch (OutOfMemoryError err) + { + System.out.println("########################\n" + + "OUT OF MEMORY " + epsFile + "\n" + + "########################"); + + JOptionPane.showInternalMessageDialog(Desktop.desktop, + "Out of memory creating EPS file!!" + + + "\nSee help files for increasing Java Virtual Machine memory." + , "Out of memory", + JOptionPane.WARNING_MESSAGE); + System.out.println("Create EPS: " + err); + System.gc(); + } catch (Exception ex) { ex.printStackTrace(); @@ -944,11 +1022,21 @@ public class AlignmentPanel extends GAlignmentPanel ImageIO.write(bi, "png", out); out.close(); } - catch(OutOfMemoryError err) + catch (OutOfMemoryError err) { System.out.println("########################\n" - +"OUT OF MEMORY "+pngFile+"\n" - +"########################"); + + "OUT OF MEMORY " + pngFile + "\n" + + "########################"); + + JOptionPane.showInternalMessageDialog(Desktop.desktop, + "Out of memory creating PNG!!" + + + "\nSee help files for increasing Java Virtual Machine memory." + , "Out of memory", + JOptionPane.WARNING_MESSAGE); + System.out.println("Create PNG: " + err); + System.gc(); + } catch (Exception ex) {