X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=190682941a129aca2ff76b5377fa7860c4c803a1;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=588411e9935fc5880bd6a697727f6e88fce3c4a6;hpb=4a7adcc9f6c0d05e12f8ea5460b0c9372020b98a;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 588411e..1906829 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -34,6 +34,7 @@ import jalview.math.AlignmentDimension; import jalview.schemes.ResidueProperties; import jalview.structure.StructureSelectionManager; import jalview.util.MessageManager; +import jalview.util.Platform; import java.awt.BorderLayout; import java.awt.Color; @@ -75,6 +76,7 @@ public class AlignmentPanel extends GAlignmentPanel implements private IdPanel idPanel; private boolean headless; + IdwidthAdjuster idwidthAdjuster; /** DOCUMENT ME!! */ @@ -154,6 +156,7 @@ public class AlignmentPanel extends GAlignmentPanel implements { return av; } + public void alignmentChanged() { av.alignmentChanged(this); @@ -176,8 +179,7 @@ public class AlignmentPanel extends GAlignmentPanel implements scalePanelHolder.setPreferredSize(new Dimension(10, av.getCharHeight() + fm.getDescent())); idSpaceFillerPanel1.setPreferredSize(new Dimension(10, av - .getCharHeight() - + fm.getDescent())); + .getCharHeight() + fm.getDescent())); getIdPanel().getIdCanvas().gg = null; getSeqPanel().seqCanvas.img = null; @@ -305,7 +307,7 @@ public class AlignmentPanel extends GAlignmentPanel implements */ public boolean scrollToPosition(SearchResults results) { - return scrollToPosition(results, true, false); + return scrollToPosition(results, 0, true, false); } /** @@ -316,9 +318,10 @@ public class AlignmentPanel extends GAlignmentPanel implements * @param redrawOverview * @return */ - public boolean scrollToPosition(SearchResults searchResults, boolean redrawOverview) + public boolean scrollToPosition(SearchResults searchResults, + boolean redrawOverview) { - return scrollToPosition(searchResults, redrawOverview, false); + return scrollToPosition(searchResults, 0, redrawOverview, false); } /** @@ -326,6 +329,9 @@ public class AlignmentPanel extends GAlignmentPanel implements * (if any) * * @param results + * @param verticalOffset + * if greater than zero, allows scrolling to a position below the + * first displayed sequence * @param redrawOverview * - when set, the overview will be recalculated (takes longer) * @param centre @@ -333,7 +339,7 @@ public class AlignmentPanel extends GAlignmentPanel implements * @return false if results were not found */ public boolean scrollToPosition(SearchResults results, - boolean redrawOverview, boolean centre) + int verticalOffset, boolean redrawOverview, boolean centre) { int startv, endv, starts, ends; // TODO: properly locate search results in view when large numbers of hidden @@ -357,8 +363,9 @@ public class AlignmentPanel extends GAlignmentPanel implements } int start = r[0]; int end = r[1]; - // System.err.println("Seq : "+seqIndex+" Scroll to "+start+","+end); // // DEBUG + // System.err.println(this.av.viewName + " Seq : " + seqIndex + // + " Scroll to " + start + "," + end); /* * To centre results, scroll to positions half the visible width @@ -368,7 +375,7 @@ public class AlignmentPanel extends GAlignmentPanel implements { int offset = (av.getEndRes() - av.getStartRes() + 1) / 2 - 1; start = Math.max(start - offset, 0); - end = Math.min(end + offset, seq.getEnd() - 1); + end = end + offset - 1; } if (start < 0) { @@ -391,6 +398,15 @@ public class AlignmentPanel extends GAlignmentPanel implements } } } + + /* + * allow for offset of target sequence (actually scroll to one above it) + */ + seqIndex = Math.max(0, seqIndex - verticalOffset); + + // System.out.println("start=" + start + ", end=" + end + ", startv=" + // + av.getStartRes() + ", endv=" + av.getEndRes() + ", starts=" + // + av.getStartSeq() + ", ends=" + av.getEndSeq()); if (!av.getWrapAlignment()) { if ((startv = av.getStartRes()) >= start) @@ -521,12 +537,13 @@ public class AlignmentPanel extends GAlignmentPanel implements /* * Estimate available height in the AlignFrame for alignment + - * annotations. Deduct an estimate of 75 for menu bar, scale panel, + * annotations. Deduct an estimate for title bar, menu bar, scale panel, * hscroll, status bar (as these are not laid out we can't inspect their - * actual heights). Insets gives borders including title bar. + * actual heights). Insets gives frame borders. */ + int stuff = Platform.isAMac() ? 80 : 100; Insets insets = alignFrame.getInsets(); - int availableHeight = alignFrame.getHeight() - 75 - insets.top + int availableHeight = alignFrame.getHeight() - stuff - insets.top - insets.bottom; /* @@ -656,14 +673,14 @@ public class AlignmentPanel extends GAlignmentPanel implements * Adjust row/column scrollers to show a visible position in the alignment. * * @param x - * visible column to scroll to DOCUMENT ME! + * visible column to scroll to * @param y * visible row to scroll to * */ public void setScrollValues(int x, int y) { - // System.err.println("Scroll to "+x+","+y); + // System.err.println("Scroll " + this.av.viewName + " to " + x + "," + y); if (av == null || av.getAlignment() == null) { return; @@ -731,7 +748,8 @@ public class AlignmentPanel extends GAlignmentPanel implements { int x = hscroll.getValue(); av.setStartRes(x); - av.setEndRes((x + (getSeqPanel().seqCanvas.getWidth() / av.getCharWidth())) - 1); + av.setEndRes((x + (getSeqPanel().seqCanvas.getWidth() / av + .getCharWidth())) - 1); } if (evt.getSource() == vscroll) @@ -828,13 +846,13 @@ public class AlignmentPanel extends GAlignmentPanel implements { final AnnotationSorter sorter = new AnnotationSorter(getAlignment(), av.isShowAutocalculatedAbove()); - sorter.sort(getAlignment() - .getAlignmentAnnotation(), + sorter.sort(getAlignment().getAlignmentAnnotation(), av.getSortAnnotationsBy()); repaint(); if (updateOverview) { + // TODO: determine if this paintAlignment changed structure colours av.getStructureSelectionManager().sequenceColoursChanged(this); if (overviewPanel != null) @@ -1046,9 +1064,7 @@ public class AlignmentPanel extends GAlignmentPanel implements - 4; } - pg.drawString( - seq.getDisplayId(av.getShowJVSuffix()), - xPos, + pg.drawString(seq.getDisplayId(av.getShowJVSuffix()), xPos, (((i - startSeq) * av.getCharHeight()) + av.getCharHeight()) - (av.getCharHeight() / 5)); } @@ -1057,7 +1073,8 @@ public class AlignmentPanel extends GAlignmentPanel implements // draw main sequence panel pg.translate(idWidth, 0); - getSeqPanel().seqCanvas.drawPanel(pg, startRes, endRes, startSeq, endSeq, 0); + getSeqPanel().seqCanvas.drawPanel(pg, startRes, endRes, startSeq, + endSeq, 0); if (av.isShowAnnotation() && (endSeq == av.getAlignment().getHeight())) { @@ -1159,12 +1176,14 @@ public class AlignmentPanel extends GAlignmentPanel implements } if (labels != null) { - pg.translate(-3, ypos - + (av.getAlignment().getHeight() * av.getCharHeight())); + pg.translate(-3, + ypos + (av.getAlignment().getHeight() * av.getCharHeight())); pg.setFont(av.getFont()); labels.drawComponent(pg, idWidth); - pg.translate(+3, -ypos + pg.translate( + +3, + -ypos - (av.getAlignment().getHeight() * av .getCharHeight())); } @@ -1174,8 +1193,8 @@ public class AlignmentPanel extends GAlignmentPanel implements pg.translate(idWidth, 0); - getSeqPanel().seqCanvas.drawWrappedPanel(pg, pwidth - idWidth, totalHeight, - 0); + getSeqPanel().seqCanvas.drawWrappedPanel(pg, pwidth - idWidth, + totalHeight, 0); if ((pi * pheight) < totalHeight) { @@ -1233,8 +1252,8 @@ public class AlignmentPanel extends GAlignmentPanel implements if (alignFrame != null && !headless) { alignFrame.setProgressBar(MessageManager.formatMessage( - "status.saving_file", new Object[] - { type.getLabel() }), progress); + "status.saving_file", new Object[] { type.getLabel() }), + progress); } try { @@ -1295,7 +1314,9 @@ public class AlignmentPanel extends GAlignmentPanel implements { if (alignFrame != null && !headless) { - alignFrame.setProgressBar(MessageManager.getString("status.export_complete"), progress); + alignFrame.setProgressBar( + MessageManager.getString("status.export_complete"), + progress); } } } @@ -1360,6 +1381,7 @@ public class AlignmentPanel extends GAlignmentPanel implements { makeAlignmentImage(jalview.util.ImageMaker.TYPE.SVG, svgFile); } + public void makePNGImageMap(File imgMapFile, String imageName) { // /////ONLY WORKS WITH NONE WRAPPED ALIGNMENTS @@ -1397,8 +1419,7 @@ public class AlignmentPanel extends GAlignmentPanel implements if (av.getAlignment().isNucleotide()) { triplet = ResidueProperties.nucleotideName.get(seq - .getCharAt(res) - + ""); + .getCharAt(res) + ""); } else { @@ -1420,8 +1441,7 @@ public class AlignmentPanel extends GAlignmentPanel implements text.append("