X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=f6e6114c4a7f7762584684d49ff1621603026188;hb=5fa8d710ac4197020961cb28556081ed294359dc;hp=12c1cbd383bbbe7fbdfbbd32e94ed9857826a58a;hpb=95a46891288f4fc63d690cab4f56879678f54fb6;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 12c1cbd..f6e6114 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -18,8 +18,6 @@ */ package jalview.gui; -import jalview.analysis.*; - import jalview.datamodel.*; import jalview.jbgui.*; @@ -151,12 +149,30 @@ public class AlignmentPanel extends GAlignmentPanel av.charHeight + fm.getDescent())); idPanel.idCanvas.gg = null; + seqPanel.seqCanvas.img = null; annotationPanel.adjustPanelHeight(); Dimension d = calculateIdWidth(); 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(); } @@ -283,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(); } @@ -408,14 +433,6 @@ public class AlignmentPanel extends GAlignmentPanel vscroll.setValues(y, vextent, 0, av.getAlignment().getHeight()); } - public void this_mouseWheelMoved(MouseWheelEvent e) - { - if(e.getWheelRotation()>0) - scrollUp(false); - else - scrollUp(true); - } - /** * DOCUMENT ME! @@ -424,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel */ public void adjustmentValueChanged(AdjustmentEvent evt) { + int oldX = av.getStartRes(); int oldY = av.getStartSeq(); @@ -458,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); } } } @@ -746,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. @@ -791,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 @@ -806,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(); @@ -953,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) {