adding timeline to Jscrollpane

77 views
Skip to first unread message

Ryan Jones

unread,
Apr 24, 2014, 12:54:24 PM4/24/14
to metsci-...@googlegroups.com
I am attempting to add a timeline to a JScroll pane window. I set the viewport view to the canvas but dragging it doesn't redraw the image. Is this possible?

-Ryan

Ulman, Geoff

unread,
Apr 24, 2014, 1:54:50 PM4/24/14
to <metsci-glimpse@googlegroups.com>
Try using a SwingLightweightGlimpseCanvas as your GlimpseCanvas component instead of NewtSwingGlimpseCanvas.

It's a lightweight component which is maximally compatible with Swing. It's not as efficient because it draws the scene to an offscreen frame buffer then copies it onto the Swing Component. That extra framebuffer makes it less efficient than the native/heavyweight canvas, but depending on your application you may not even notice.

On Apr 24, 2014, at 9:54 AM, "Ryan Jones" <ryanj...@gmail.com<mailto:ryanj...@gmail.com>> wrote:

I am attempting to add a timeline to a JScroll pane window. I set the viewport view to the canvas but dragging it doesn't redraw the image. Is this possible?

-Ryan

--
You received this message because you are subscribed to the Google Groups "Glimpse" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metsci-glimps...@googlegroups.com<mailto:metsci-glimps...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

Ryan Jones

unread,
Apr 24, 2014, 2:18:02 PM4/24/14
to metsci-...@googlegroups.com
I am still having issues trying to get scrolling working but that did fix another really weird problem I was having. I have a timeline view and each event can be clicked on to open up another window with the results in it. If I click on another result in the timeline without first selecting the window the timeline is in it locks up my application. With the SwingLightweightGlimpseCanvas this problem doesnt occur.

-Ryan

Geoffrey Ulman

unread,
Apr 24, 2014, 2:44:46 PM4/24/14
to metsci-...@googlegroups.com

I posted an example of SwingLightweightGlimpseCanvas working with a JScrollPane: https://gist.github.com/ulmangt/11264961

This isn't a use case which was explicitly planned for, so while it works, the significant downside to this approach is that the time axis doesn't stay visible wherever you scroll. I'll have to think about what it would take to support that.

Ryan Jones

unread,
Apr 24, 2014, 3:04:20 PM4/24/14
to metsci-...@googlegroups.com
Thank You. It was a stupid mistake. I wasn't setting the preferred size.

-Ryan

Ryan Jones

unread,
Apr 27, 2014, 9:02:48 PM4/27/14
to metsci-...@googlegroups.com
Using SwingLightweightGlimpseCanvas in a dock of any of the docking frameworks I have tried causes seems to cause all the text to disappear when the dockable is moved. I have tried this with your docking framework as well.

This is the error I get

Apr 28, 2014 12:59:19 AM com.metsci.glimpse.util.logging.LoggerUtils log
INFO: Disposing SwingGlimpseCanvas...
Apr 28, 2014 12:59:20 AM com.metsci.glimpse.util.logging.LoggerUtils log
WARNING: GL ERROR: com.metsci.glimpse.painter.info.SimpleTextPainter (1281): invalid value
java.lang.Thread.getStackTrace(Thread.java:1588)
com.metsci.glimpse.gl.util.GLErrorUtils.logGLError(GLErrorUtils.java:50)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.glHandleError(GlimpsePainterImpl.java:169)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:114)
com.metsci.glimpse.plot.timeline.group.GroupLabelPainter.paintTo(GroupLabelPainter.java:140)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:113)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.canvas.SwingLightweightGlimpseCanvas$1.display(SwingLightweightGlimpseCanvas.java:204)
jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
javax.media.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1213)
javax.media.opengl.awt.GLJPanel$8.run(GLJPanel.java:1269)
jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
javax.media.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:1777)
javax.media.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:545)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JViewport.paint(JViewport.java:731)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
javax.swing.RepaintManager.paint(RepaintManager.java:1249)
javax.swing.JComponent._paintImmediately(JComponent.java:5167)
javax.swing.JComponent.paintImmediately(JComponent.java:4978)
javax.swing.RepaintManager$3.run(RepaintManager.java:808)
javax.swing.RepaintManager$3.run(RepaintManager.java:796)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:694)
java.awt.EventQueue$3.run(EventQueue.java:692)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Apr 28, 2014 12:59:20 AM com.metsci.glimpse.util.logging.LoggerUtils log
WARNING: GL ERROR: com.metsci.glimpse.painter.info.SimpleTextPainter (1281): invalid value
java.lang.Thread.getStackTrace(Thread.java:1588)
com.metsci.glimpse.gl.util.GLErrorUtils.logGLError(GLErrorUtils.java:50)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.glHandleError(GlimpsePainterImpl.java:169)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:114)
com.metsci.glimpse.plot.timeline.group.GroupLabelPainter.paintTo(GroupLabelPainter.java:140)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:113)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.canvas.SwingLightweightGlimpseCanvas$1.display(SwingLightweightGlimpseCanvas.java:204)
jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
javax.media.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1213)
javax.media.opengl.awt.GLJPanel$8.run(GLJPanel.java:1269)
jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
javax.media.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:1777)
javax.media.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:545)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JViewport.paint(JViewport.java:731)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
javax.swing.RepaintManager.paint(RepaintManager.java:1249)
javax.swing.JComponent._paintImmediately(JComponent.java:5167)
javax.swing.JComponent.paintImmediately(JComponent.java:4978)
javax.swing.RepaintManager$3.run(RepaintManager.java:808)
javax.swing.RepaintManager$3.run(RepaintManager.java:796)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:694)
java.awt.EventQueue$3.run(EventQueue.java:692)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Apr 28, 2014 12:59:20 AM com.metsci.glimpse.util.logging.LoggerUtils log
WARNING: GL ERROR: com.metsci.glimpse.painter.info.SimpleTextPainter (1281): invalid value
java.lang.Thread.getStackTrace(Thread.java:1588)
com.metsci.glimpse.gl.util.GLErrorUtils.logGLError(GLErrorUtils.java:50)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.glHandleError(GlimpsePainterImpl.java:169)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:114)
com.metsci.glimpse.plot.timeline.group.GroupLabelPainter.paintTo(GroupLabelPainter.java:140)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:113)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.canvas.SwingLightweightGlimpseCanvas$1.display(SwingLightweightGlimpseCanvas.java:204)
jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
javax.media.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1213)
javax.media.opengl.awt.GLJPanel$8.run(GLJPanel.java:1269)
jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
javax.media.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:1777)
javax.media.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:545)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JViewport.paint(JViewport.java:731)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
javax.swing.RepaintManager.paint(RepaintManager.java:1249)
javax.swing.JComponent._paintImmediately(JComponent.java:5167)
javax.swing.JComponent.paintImmediately(JComponent.java:4978)
javax.swing.RepaintManager$3.run(RepaintManager.java:808)
javax.swing.RepaintManager$3.run(RepaintManager.java:796)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:694)
java.awt.EventQueue$3.run(EventQueue.java:692)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Apr 28, 2014 12:59:20 AM com.metsci.glimpse.util.logging.LoggerUtils log
WARNING: GL ERROR: com.metsci.glimpse.painter.info.SimpleTextPainter (1281): invalid value
java.lang.Thread.getStackTrace(Thread.java:1588)
com.metsci.glimpse.gl.util.GLErrorUtils.logGLError(GLErrorUtils.java:50)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.glHandleError(GlimpsePainterImpl.java:169)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:114)
com.metsci.glimpse.plot.timeline.group.GroupLabelPainter.paintTo(GroupLabelPainter.java:140)
com.metsci.glimpse.painter.base.GlimpsePainterImpl.paintTo(GlimpsePainterImpl.java:113)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.layout.GlimpseLayoutDelegate.paintTo(GlimpseLayoutDelegate.java:176)
com.metsci.glimpse.layout.GlimpseLayout.paintTo(GlimpseLayout.java:447)
com.metsci.glimpse.canvas.SwingLightweightGlimpseCanvas$1.display(SwingLightweightGlimpseCanvas.java:204)
jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
javax.media.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1213)
javax.media.opengl.awt.GLJPanel$8.run(GLJPanel.java:1269)
jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
javax.media.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:1777)
javax.media.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:545)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JViewport.paint(JViewport.java:731)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
bibliothek.gui.dock.util.BackgroundPanel.paintChildren(BackgroundPanel.java:147)
javax.swing.JComponent.paint(JComponent.java:1063)
bibliothek.gui.dock.util.BackgroundPanel.paint(BackgroundPanel.java:104)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
javax.swing.RepaintManager.paint(RepaintManager.java:1249)
javax.swing.JComponent._paintImmediately(JComponent.java:5167)
javax.swing.JComponent.paintImmediately(JComponent.java:4978)
javax.swing.RepaintManager$3.run(RepaintManager.java:808)
javax.swing.RepaintManager$3.run(RepaintManager.java:796)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:694)
java.awt.EventQueue$3.run(EventQueue.java:692)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

-Ryan

On Thursday, April 24, 2014 11:44:46 AM UTC-7, Geoffrey Ulman wrote:

Geoffrey Ulman

unread,
Apr 29, 2014, 11:24:33 AM4/29/14
to metsci-...@googlegroups.com

Ok, I can reproduce the issue. In looking at it I realized we didn't have an example of using GlimpseCanvases inside the Glimpse docking framework. I put together a simple example that I'll fold into the next release: https://gist.github.com/ulmangt/11403521

That example uses NewtSwingGlimpseCanvas, which works fine. When I switch to SwingLightweightGlimpseCanvas, I do get errors similar to those you described.

I'm looking into it...

Geoffrey Ulman

unread,
Apr 29, 2014, 12:20:39 PM4/29/14
to metsci-...@googlegroups.com

As a short term fix to get things working, make a local copy of the SwingLightweightGlimpseCanvas class, find the SwingLightweightGlimpseCanvas,createGLEventListener( ) and remove all the code from the GLEventListener.dispose( ) method.




Basically, GlimpseCanvas currently call dispose() on all their attached GlimpseLayouts/GlimpsePainters when they get a GLEventListener.dispose( ) event.

This is broken behavior. It causes the docking framework bug which you are observing (because GLEventListener.dispose( ) is called when moving the GlimpseCanvas to a different docking location, which disposes of all the OpenGL resources it needs to render).

Its also not the correct thing to do if the GlimpseLayouts/GlimpsePainters is being used by multiple GlimpseCanvases. Currently, if one of the Canvases is disposed, the GlimpseLayouts/GlimpsePainters shared between them will be disposed, causing them all not to work.
Reply all
Reply to author
Forward
0 new messages