X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=fae6dfc9fcd149b2d14ac019c5abb6eb31591050;hb=7e129811d6ff01074428462284dffc2a6c2395a4;hp=d1b9350782948a6fd8675e8772b6e58a3c62c6e3;hpb=3402d066dbd7667cd805e6d78ac5eca66e237c72;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index d1b9350..fae6dfc 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(); } @@ -167,16 +183,9 @@ public class AlignmentPanel extends GAlignmentPanel */ public Dimension calculateIdWidth() { - Graphics g = this.getGraphics(); - - if (g == null) - { - javax.swing.JFrame f = new javax.swing.JFrame(); - f.addNotify(); - g = f.getGraphics(); - } + Container c = new Container(); - FontMetrics fm = g.getFontMetrics(av.font); + FontMetrics fm = c.getFontMetrics(av.font); AlignmentI al = av.getAlignment(); int i = 0; @@ -209,7 +218,7 @@ public class AlignmentPanel extends GAlignmentPanel if (al.getAlignmentAnnotation() != null) { - fm = g.getFontMetrics(alabels.getFont()); + fm = c.getFontMetrics(alabels.getFont()); while (i < al.getAlignmentAnnotation().length) { @@ -290,43 +299,28 @@ 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); - - repaint(); - } - - /** - * DOCUMENT ME! - */ - public void setColourScheme() - { - ColourSchemeI cs = av.getGlobalColourScheme(); - - if (av.getConservationSelected()) - { - Alignment al = (Alignment) av.getAlignment(); - Conservation c = new Conservation("All", - ResidueProperties.propHash, 3, al.getSequences(), 0, - al.getWidth()); - - c.calculate(); - c.verdict(false, av.ConsPercGaps); + if(wrap) + { + annotationScroller.setVisible(false); + annotationSpaceFillerHolder.setVisible(false); + } + else if(av.showAnnotation) + { + annotationScroller.setVisible(true); + annotationSpaceFillerHolder.setVisible(true); + } - ConservationColourScheme ccs = new ConservationColourScheme(c, cs); - - av.setGlobalColourScheme(ccs); - } + idSpaceFillerPanel1.setVisible(!wrap); repaint(); } + // return value is true if the scroll is valid public boolean scrollUp(boolean up) { @@ -439,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! @@ -455,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel */ public void adjustmentValueChanged(AdjustmentEvent evt) { + int oldX = av.getStartRes(); int oldY = av.getStartSeq(); @@ -489,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); } } }