X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FScalePanelTest.java;h=7d39ea92624987cc7f961cd91884c10c5da39cd0;hb=refs%2Fheads%2Fbug%2FJAL-3218scalePanelPopups;hp=0ec1c1fe7ee985f25151e2d9b1e1157ef0206b36;hpb=48608cc9210c919f07ffbd25567051384b7903be;p=jalview.git diff --git a/test/jalview/gui/ScalePanelTest.java b/test/jalview/gui/ScalePanelTest.java index 0ec1c1f..7d39ea9 100644 --- a/test/jalview/gui/ScalePanelTest.java +++ b/test/jalview/gui/ScalePanelTest.java @@ -12,10 +12,14 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.FileLoader; +import jalview.util.MessageManager; import jalview.viewmodel.ViewportRanges; import java.awt.event.MouseEvent; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; + import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -95,6 +99,132 @@ public class ScalePanelTest assertEquals(sg.getEndRes(), 30); } + @Test(groups = "Functional") + public void testBuildPopupMenu() + { + final String hide = MessageManager.getString("label.hide_columns"); + final String reveal = MessageManager.getString("label.reveal"); + final String revealAll = MessageManager.getString("action.reveal_all"); + + String seq1 = ">Seq1\nANTOFAGASTA"; + AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(seq1, + DataSourceType.PASTE); + ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel(); + AlignViewport viewport = alignFrame.getViewport(); + int cw = viewport.getCharWidth(); + + /* + * hide columns 3-4 (counting from 0) + */ + viewport.hideColumns(3, 4); + alignFrame.alignPanel.updateLayout(); + + /* + * verify popup menu left/right of hidden column marker + * NB need to call mouseMoved first as this sets field 'reveal' + */ + int xPos = 1 * cw + 2; // 2 columns left of hidden marker + MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, + false); + scalePanel.mouseMoved(mouse); + JPopupMenu popup = scalePanel.buildPopupMenu(1); + assertEquals(popup.getSubElements().length, 0); + + /* + * popup just left of hidden marker has 'Reveal' + */ + xPos = 2 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(2); + assertEquals(popup.getSubElements().length, 1); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + + /* + * popup just right of hidden marker has 'Reveal' + */ + xPos = 3 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(5); // allowing for 2 hidden columns + assertEquals(popup.getSubElements().length, 1); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + + /* + * popup further right is empty + */ + xPos = 4 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(6); // allowing for 2 hidden columns + assertEquals(popup.getSubElements().length, 0); + + /* + * 'drag' to select columns around the hidden column marker + */ + xPos = 1 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mousePressed(mouse); + scalePanel.mouseDragged(mouse); + xPos = 5 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseReleased(mouse); + + /* + * popup 2 columns left of marker: 'Hide' only + */ + xPos = 1 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(1); + assertEquals(popup.getSubElements().length, 1); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), hide); + + /* + * popup just left of marker: 'Reveal' and 'Hide' + */ + xPos = 2 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(1); + assertEquals(popup.getSubElements().length, 2); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), hide); + + /* + * popup just right of marker: 'Reveal' and 'Hide' + */ + xPos = 3 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(5); + assertEquals(popup.getSubElements().length, 2); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), hide); + + /* + * hiding a second region adds option 'Reveal all' to 'Reveal' + */ + viewport.hideColumns(6, 7); + alignFrame.alignPanel.updateLayout(); + xPos = 3 * cw + 2; + mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false); + scalePanel.mouseMoved(mouse); + popup = scalePanel.buildPopupMenu(5); + assertEquals(popup.getSubElements().length, 3); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), + revealAll); + assertEquals(((JMenuItem) popup.getSubElements()[2]).getText(), hide); + + alignFrame.deselectAllSequenceMenuItem_actionPerformed(null); + popup = scalePanel.buildPopupMenu(5); + assertEquals(popup.getSubElements().length, 2); + assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal); + assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), + revealAll); + } + @BeforeClass(alwaysRun = true) public static void setUpBeforeClass() throws Exception {