Uploaded image for project: 'IGB'
  1. IGB
  2. IGBF-2126

Implement horizontal scrolling in IGB main window

    Details

    • Story Points:
      3
    • Sprint:
      Spring 6 : 30 Mar to Apr 10, Spring 7 : 13 Apr to 24 Apr

      Description

      Situation: In the IGB main window, if the view is stretched vertically users can navigate vertically using the mouse wheel or, for example, two finger trackpad up and down. However, they cannot move horizontally using two finger trackpad or a horizontal mouse scroll.

      Task: Enable horizontal navigation.

        Attachments

          Activity

          Hide
          ann.loraine Ann Loraine added a comment -

          Dr. Freese has suggested this new feature that will make IGB easier to use.

          Could you work on this next?

          Before getting started, please meet with Dr. Freese (on-line of course!) so that he can explain the feature. He will walk you through it and explain how it will help the IGB user experience.

          cc: Nowlan Freese

          Show
          ann.loraine Ann Loraine added a comment - Dr. Freese has suggested this new feature that will make IGB easier to use. Could you work on this next? Before getting started, please meet with Dr. Freese (on-line of course!) so that he can explain the feature. He will walk you through it and explain how it will help the IGB user experience. cc: Nowlan Freese
          Hide
          noor91zahara Noor Zahara (Inactive) added a comment -

          [~aloraine]

          Any idea where the code for scrolling functionality is ?

          Show
          noor91zahara Noor Zahara (Inactive) added a comment - [~aloraine] Any idea where the code for scrolling functionality is ?
          Hide
          ann.loraine Ann Loraine added a comment -

          I recommend looking in SeqMapView to start.

          Show
          ann.loraine Ann Loraine added a comment - I recommend looking in SeqMapView to start.
          Hide
          noor91zahara Noor Zahara (Inactive) added a comment - - edited

          Code - https://bitbucket.org/nzahara/genoviz-sdk-local/branch/IGBF-2126#diff

          Testing Steps -

          1. Run igb in offline mode using mvn clean install -o so that it picks up the local genoviz sdk jar and not from nexus.
          2. Click on any of the species on IGB main window
          3. Zoom in the Horizontal Zoomer so that the horizontal scroller is visible
          4. Try to scroll horizontally using mousepad / touchpad.
          5. The horizontal scroller should scroll.

          Show
          noor91zahara Noor Zahara (Inactive) added a comment - - edited Code - https://bitbucket.org/nzahara/genoviz-sdk-local/branch/IGBF-2126#diff Testing Steps - 1. Run igb in offline mode using mvn clean install -o so that it picks up the local genoviz sdk jar and not from nexus. 2. Click on any of the species on IGB main window 3. Zoom in the Horizontal Zoomer so that the horizontal scroller is visible 4. Try to scroll horizontally using mousepad / touchpad. 5. The horizontal scroller should scroll.
          Hide
          ann.loraine Ann Loraine added a comment -

          Nowlan Freese - can you test the proposed change?

          Noor Zahara - can you build an IGB "exe" jar file using the proposed genoviz library? Building an installer may not be practical, but an igb_exe.jar file – with the proposed new genoviz sdk version packaged with it – would allow Dr. Freese to try out the changed code.

          Also, because this is a change to the genoviz library, we will need to test the effects on ProtAnnot and SlicedView. This looks a fairly safe change but we need to double-check just to be sure.

          Good news is that if you run an IGB with this new genoviz library included in its jar file, ProtAnnot will pick up the library from he platform. So you should not have to re-build ProtAnnot.

          Show
          ann.loraine Ann Loraine added a comment - Nowlan Freese - can you test the proposed change? Noor Zahara - can you build an IGB "exe" jar file using the proposed genoviz library? Building an installer may not be practical, but an igb_exe.jar file – with the proposed new genoviz sdk version packaged with it – would allow Dr. Freese to try out the changed code. Also, because this is a change to the genoviz library, we will need to test the effects on ProtAnnot and SlicedView. This looks a fairly safe change but we need to double-check just to be sure. Good news is that if you run an IGB with this new genoviz library included in its jar file, ProtAnnot will pick up the library from he platform. So you should not have to re-build ProtAnnot.
          Hide
          ann.loraine Ann Loraine added a comment -

          Also, a question for you guys:

          • What sort of finger motion do I need to do on a mousepad / touchpad to try to scroll horizontally?
          Show
          ann.loraine Ann Loraine added a comment - Also, a question for you guys: What sort of finger motion do I need to do on a mousepad / touchpad to try to scroll horizontally?
          Hide
          noor91zahara Noor Zahara (Inactive) added a comment - - edited

          Use 2 finger left- right movement to scroll horizontally.

          I have shared the igb_exe jar file with Dr.Freese on google drive since the file was too big to upload it here.

          Show
          noor91zahara Noor Zahara (Inactive) added a comment - - edited Use 2 finger left- right movement to scroll horizontally. I have shared the igb_exe jar file with Dr.Freese on google drive since the file was too big to upload it here.
          Hide
          nfreese Nowlan Freese added a comment - - edited

          Testing on mac:

          Two finger swiping now works for both vertical and horizontal scrolling (using Mac trackpad).

          I'm getting an exception that looks to be related to a twenty three and me glyph. I don't think this would be related to the changes to Genoviz. It's causing the gene annotations to fail to appear.

          javax.imageio.IIOException: Can't read input file!
          at javax.imageio.ImageIO.read(ImageIO.java:1301)
          at org.lorainelab.igb.genotyping.TwentyThreeAndMeVariationGlyph.draw(TwentyThreeAndMeVariationGlyph.java:144)
          at com.affymetrix.genoviz.bioviews.Glyph.drawTraversal(Glyph.java:135)
          at org.lorainelab.igb.genotyping.TwentyThreeAndMeVariationGlyph.drawTraversal(TwentyThreeAndMeVariationGlyph.java:78)
          at com.affymetrix.igb.glyph.DefaultTierGlyph.superDrawChildren(DefaultTierGlyph.java:296)
          at com.affymetrix.igb.glyph.DefaultTierGlyph.drawChildren(DefaultTierGlyph.java:264)
          at com.affymetrix.igb.view.factories.AbstractTierGlyph.drawTraversal(AbstractTierGlyph.java:311)
          at com.affymetrix.genoviz.bioviews.Glyph.drawChildren(Glyph.java:184)
          at com.affymetrix.genoviz.bioviews.Glyph.drawTraversal(Glyph.java:138)
          at com.affymetrix.genoviz.glyph.RootGlyph.drawTraversal(RootGlyph.java:71)
          at com.affymetrix.genoviz.bioviews.View.normalDraw(View.java:455)
          at com.affymetrix.genoviz.bioviews.View.draw(View.java:371)
          at com.affymetrix.genoviz.bioviews.View.componentPainted(View.java:914)
          at com.affymetrix.genoviz.awt.NeoCanvas.postPaintEvent(NeoCanvas.java:69)
          at com.affymetrix.genoviz.awt.NeoCanvas.paintComponent(NeoCanvas.java:44)
          at javax.swing.JComponent.paint(JComponent.java:1056)
          at javax.swing.JComponent.paintChildren(JComponent.java:889)
          at javax.swing.JComponent.paint(JComponent.java:1065)
          at javax.swing.JComponent.paintChildren(JComponent.java:889)
          at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
          at javax.swing.JComponent.paint(JComponent.java:1065)
          at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
          at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
          at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
          at java.awt.Container.paint(Container.java:1978)
          at com.affymetrix.genoviz.widget.NeoMap.paint(NeoMap.java:1277)
          at javax.swing.JComponent.paintChildren(JComponent.java:903)
          at javax.swing.JComponent.paint(JComponent.java:1065)
          at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
          at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
          at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
          at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
          at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
          at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
          at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
          at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
          at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
          at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
          at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
          at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
          at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
          at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
          at java.awt.EventQueue.access$500(EventQueue.java:97)
          at java.awt.EventQueue$3.run(EventQueue.java:709)
          at java.awt.EventQueue$3.run(EventQueue.java:703)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
          at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
          at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
          at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

          Show
          nfreese Nowlan Freese added a comment - - edited Testing on mac: Two finger swiping now works for both vertical and horizontal scrolling (using Mac trackpad). I'm getting an exception that looks to be related to a twenty three and me glyph. I don't think this would be related to the changes to Genoviz. It's causing the gene annotations to fail to appear. javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(ImageIO.java:1301) at org.lorainelab.igb.genotyping.TwentyThreeAndMeVariationGlyph.draw(TwentyThreeAndMeVariationGlyph.java:144) at com.affymetrix.genoviz.bioviews.Glyph.drawTraversal(Glyph.java:135) at org.lorainelab.igb.genotyping.TwentyThreeAndMeVariationGlyph.drawTraversal(TwentyThreeAndMeVariationGlyph.java:78) at com.affymetrix.igb.glyph.DefaultTierGlyph.superDrawChildren(DefaultTierGlyph.java:296) at com.affymetrix.igb.glyph.DefaultTierGlyph.drawChildren(DefaultTierGlyph.java:264) at com.affymetrix.igb.view.factories.AbstractTierGlyph.drawTraversal(AbstractTierGlyph.java:311) at com.affymetrix.genoviz.bioviews.Glyph.drawChildren(Glyph.java:184) at com.affymetrix.genoviz.bioviews.Glyph.drawTraversal(Glyph.java:138) at com.affymetrix.genoviz.glyph.RootGlyph.drawTraversal(RootGlyph.java:71) at com.affymetrix.genoviz.bioviews.View.normalDraw(View.java:455) at com.affymetrix.genoviz.bioviews.View.draw(View.java:371) at com.affymetrix.genoviz.bioviews.View.componentPainted(View.java:914) at com.affymetrix.genoviz.awt.NeoCanvas.postPaintEvent(NeoCanvas.java:69) at com.affymetrix.genoviz.awt.NeoCanvas.paintComponent(NeoCanvas.java:44) at javax.swing.JComponent.paint(JComponent.java:1056) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047) at javax.swing.JComponent.paint(JComponent.java:1065) at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39) at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79) at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116) at java.awt.Container.paint(Container.java:1978) at com.affymetrix.genoviz.widget.NeoMap.paint(NeoMap.java:1277) at javax.swing.JComponent.paintChildren(JComponent.java:903) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) at javax.swing.RepaintManager.paint(RepaintManager.java:1272) at javax.swing.JComponent._paintImmediately(JComponent.java:5158) at javax.swing.JComponent.paintImmediately(JComponent.java:4969) at javax.swing.RepaintManager$4.run(RepaintManager.java:831) at javax.swing.RepaintManager$4.run(RepaintManager.java:814) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
          Hide
          nfreese Nowlan Freese added a comment - - edited

          I'm getting the same exception with the twenty three and me glyph on the newest master branch.

          Show
          nfreese Nowlan Freese added a comment - - edited I'm getting the same exception with the twenty three and me glyph on the newest master branch.
          Hide
          nfreese Nowlan Freese added a comment -

          [~aloraine] Since the functionality for this issue is working (horizontal scrolling) my recommendation would be to move this to ready for pull request. Although there are a large number of exceptions being created in the console, they do not appear to be related to Noor's changes.

          Show
          nfreese Nowlan Freese added a comment - [~aloraine] Since the functionality for this issue is working (horizontal scrolling) my recommendation would be to move this to ready for pull request. Although there are a large number of exceptions being created in the console, they do not appear to be related to Noor's changes.
          Hide
          ann.loraine Ann Loraine added a comment -

          Sorry about that!!

          I will fix it right away.

          Show
          ann.loraine Ann Loraine added a comment - Sorry about that!! I will fix it right away.
          Hide
          ann.loraine Ann Loraine added a comment -

          We need to do a bit more testing on a clean branch as this affects the library.

          Show
          ann.loraine Ann Loraine added a comment - We need to do a bit more testing on a clean branch as this affects the library.
          Hide
          nfreese Nowlan Freese added a comment - - edited

          I was not able to test the effects on ProtAnnot or SlicedView due to the exceptions.

          Show
          nfreese Nowlan Freese added a comment - - edited I was not able to test the effects on ProtAnnot or SlicedView due to the exceptions.
          Hide
          ann.loraine Ann Loraine added a comment - - edited

          Thank you for letting me know about the problem.
          The master branch is now fixed with this latest commit:

          https://bitbucket.org/lorainelab/integrated-genome-browser/commits/730f48f6d7da8c491014318aac5c6120e498acce

          cc: Nowlan Freese and Noor Zahara

          Show
          ann.loraine Ann Loraine added a comment - - edited Thank you for letting me know about the problem. The master branch is now fixed with this latest commit: https://bitbucket.org/lorainelab/integrated-genome-browser/commits/730f48f6d7da8c491014318aac5c6120e498acce cc: Nowlan Freese and Noor Zahara
          Hide
          nfreese Nowlan Freese added a comment - - edited

          Exception has been fixed (thank you Dr. Loraine).

          Protannot and sliced view are working correctly and can now also be scrolled horizontally using a trackpad.

          The horizontal scrolling works really well overall. It scales appropriately at the different zoom levels and feels very smooth.

          Recommend pull request.

          Show
          nfreese Nowlan Freese added a comment - - edited Exception has been fixed (thank you Dr. Loraine). Protannot and sliced view are working correctly and can now also be scrolled horizontally using a trackpad. The horizontal scrolling works really well overall. It scales appropriately at the different zoom levels and feels very smooth. Recommend pull request.
          Show
          noor91zahara Noor Zahara (Inactive) added a comment - PR Submitted - https://bitbucket.org/lorainelab/genoviz-sdk/pull-requests/20/igbf-2126-implement-horizontal-scrolling/diff
          Hide
          ann.loraine Ann Loraine added a comment -

          Merged to master branch.

          Show
          ann.loraine Ann Loraine added a comment - Merged to master branch.
          Hide
          ann.loraine Ann Loraine added a comment -

          I moved too quickly.

          Please also:

          • Submit second PR to the Genoviz SDK repository master branch to increment version to 1.1.9 (currently it is 1.1.8)
          • Submit third PR to integrated-genome-browser master branch to change the Genoviz SDK version in the parent POM (see top of file where version variables are defined)

          cc: Noor Zahara and Nowlan Freese

          Show
          ann.loraine Ann Loraine added a comment - I moved too quickly. Please also: Submit second PR to the Genoviz SDK repository master branch to increment version to 1.1.9 (currently it is 1.1.8) Submit third PR to integrated-genome-browser master branch to change the Genoviz SDK version in the parent POM (see top of file where version variables are defined) cc: Noor Zahara and Nowlan Freese
          Show
          noor91zahara Noor Zahara (Inactive) added a comment - PR Submitted 1. https://bitbucket.org/lorainelab/genoviz-sdk/pull-requests/21/igbf-2126-increment-the-version-from-118/diff 2. https://bitbucket.org/lorainelab/integrated-genome-browser/pull-requests/787/igbf-2126-increment-the-verison-of-genoviz/diff
          Hide
          ann.loraine Ann Loraine added a comment -

          Version 1.1.9 of Genoviz SDK now deployed to httsp://nexus.bioviz.org mvn-releases repository.

          Show
          ann.loraine Ann Loraine added a comment - Version 1.1.9 of Genoviz SDK now deployed to httsp://nexus.bioviz.org mvn-releases repository.
          Hide
          ann.loraine Ann Loraine added a comment - - edited

          Integrated Genome Browser pull request merged and master branch installer pipeline completed.

          Show
          ann.loraine Ann Loraine added a comment - - edited Integrated Genome Browser pull request merged and master branch installer pipeline completed.
          Hide
          ann.loraine Ann Loraine added a comment -

          Released master branch installers to Early Release IGB to bioviz.org.

          Show
          ann.loraine Ann Loraine added a comment - Released master branch installers to Early Release IGB to bioviz.org.
          Hide
          nfreese Nowlan Freese added a comment -

          Testing master branch installer from early release IGB.

          Horizontal scrolling working in main window, no exceptions.
          ProtAnnot and Sliced view also working without issues.

          Closing issue.

          Show
          nfreese Nowlan Freese added a comment - Testing master branch installer from early release IGB. Horizontal scrolling working in main window, no exceptions. ProtAnnot and Sliced view also working without issues. Closing issue.

            People

            • Assignee:
              noor91zahara Noor Zahara (Inactive)
              Reporter:
              nfreese Nowlan Freese
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: