From: kiramt Date: Tue, 21 Feb 2017 10:55:07 +0000 (+0000) Subject: Merge branch 'bug/JAL-2421overviewboxflicker' into X-Git-Tag: Release_2_10_2~3^2~92^2~68 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=29933a3d76e0a2517ac59307adb40a73204ceacf;hp=46b2ffc28aeef5800f35ce31a742a65095e01621;p=jalview.git Merge branch 'bug/JAL-2421overviewboxflicker' into features/JAL-2388OverviewWindow Conflicts: src/jalview/gui/AlignmentPanel.java --- diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 3e24b94..146df38 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -91,9 +91,9 @@ public class AlignmentPanel extends GAlignmentPanel implements // this value is set false when selection area being dragged boolean fastPaint = true; - int hextent = 0; + private int hextent = 0; - int vextent = 0; + private int vextent = 0; /* * Flag set while scrolling to follow complementary cDNA/protein scroll. When @@ -688,7 +688,6 @@ public class AlignmentPanel extends GAlignmentPanel implements */ public void setScrollValues(int x, int y) { - // System.err.println("Scroll " + this.av.viewName + " to " + x + "," + y); if (av == null || av.getAlignment() == null) { return; @@ -698,6 +697,7 @@ public class AlignmentPanel extends GAlignmentPanel implements if (av.hasHiddenColumns()) { + // reset the width to exclude hidden columns width = av.getColumnSelection().findColumnPosition(width); } @@ -734,6 +734,8 @@ public class AlignmentPanel extends GAlignmentPanel implements x = 0; } + + // update endRes after x has (possibly) been adjusted av.setEndRes((x + (getSeqPanel().seqCanvas.getWidth() / av .getCharWidth())) - 1); diff --git a/test/jalview/gui/AlignmentPanelTest.java b/test/jalview/gui/AlignmentPanelTest.java new file mode 100644 index 0000000..f3b6876 --- /dev/null +++ b/test/jalview/gui/AlignmentPanelTest.java @@ -0,0 +1,217 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.gui; + +import static org.testng.Assert.assertEquals; + +import jalview.bin.Cache; +import jalview.bin.Jalview; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; +import jalview.io.DataSourceType; +import jalview.io.FileLoader; + +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +public class AlignmentPanelTest +{ + SequenceI seq1 = new Sequence( + "Seq1", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq2 = new Sequence( + "Seq2", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq3 = new Sequence( + "Seq3", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq4 = new Sequence( + "Seq4", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq5 = new Sequence( + "Seq5", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq6 = new Sequence( + "Seq6", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq7 = new Sequence( + "Seq7", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq8 = new Sequence( + "Seq8", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq9 = new Sequence( + "Seq9", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq10 = new Sequence( + "Seq10", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq11 = new Sequence( + "Seq11", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq12 = new Sequence( + "Seq12", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq13 = new Sequence( + "Seq13", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq14 = new Sequence( + "Seq14", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq15 = new Sequence( + "Seq15", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq16 = new Sequence( + "Seq16", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq17 = new Sequence( + "Seq17", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq18 = new Sequence( + "Seq18", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq19 = new Sequence( + "Seq19", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq20 = new Sequence( + "Seq20", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq21 = new Sequence( + "Seq21", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq22 = new Sequence( + "Seq22", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + SequenceI seq23 = new Sequence( + "Seq23", + "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC"); + + AlignFrame af; + + @BeforeMethod(alwaysRun = true) + public void setUp() + { + Jalview.main(new String[] { "-nonews", "-props", + "test/jalview/testProps.jvprops" }); + + Cache.applicationProperties.setProperty("SHOW_IDENTITY", + Boolean.TRUE.toString()); + af = new FileLoader().LoadFileWaitTillLoaded("examples/uniref50.fa", + DataSourceType.FILE); + + /* + * wait for Consensus thread to complete + */ + synchronized (this) + { + while (af.getViewport().getConsensusSeq() == null) + { + try + { + wait(50); + } catch (InterruptedException e) + { + } + } + } + } + + + /** + * Test side effect that end residue is set correctly by setScrollValues, with + * or without hidden columns + */ + @Test(groups = "Functional") + public void TestSetScrollValues() + { + int oldres = af.getViewport().getEndRes(); + af.alignPanel.setScrollValues(-1, 5); + + // setting -ve x value does not change residue + assertEquals(af.getViewport().getEndRes(), oldres); + + af.alignPanel.setScrollValues(0, 5); + + // setting 0 as x value does not change residue + assertEquals(af.getViewport().getEndRes(), oldres); + + af.alignPanel.setScrollValues(5, 5); + // setting x value to 5 extends endRes by 5 residues + assertEquals(af.getViewport().getEndRes(), oldres + 5); + + // scroll to position after hidden columns sets endres to oldres (width) + + // position + int scrollpos = 60; + af.getViewport().hideColumns(30, 50); + af.alignPanel.setScrollValues(scrollpos, 5); + assertEquals(af.getViewport().getEndRes(), oldres + scrollpos); + + // scroll to position within hidden columns, still sets endres to oldres + + // position + // not sure if this is actually correct behaviour but this is what Jalview + // currently does + scrollpos = 40; + af.getViewport().showAllHiddenColumns(); + af.getViewport().hideColumns(30, 50); + af.alignPanel.setScrollValues(scrollpos, 5); + assertEquals(af.getViewport().getEndRes(), oldres + scrollpos); + + // scroll to position within distance of the end of the alignment + // endRes should be set to width of alignment - 1 + scrollpos = 130; + af.getViewport().showAllHiddenColumns(); + af.alignPanel.setScrollValues(scrollpos, 5); + assertEquals(af.getViewport().getEndRes(), af.getViewport() + .getAlignment().getWidth() - 1); + + // now hide some columns, and scroll to position within + // distance of the end of the alignment + // endRes should be set to width of alignment - 1 - the number of hidden + // columns + af.getViewport().hideColumns(30, 50); + af.alignPanel.setScrollValues(scrollpos, 5); + assertEquals(af.getViewport().getEndRes(), af.getViewport() + .getAlignment().getWidth() - 1 - 21); // 21 is the number of hidden + // columns + } +}