The frame contains a scroll pane with instances of the transmitter's default TransmitterEditor
s. left row header contains TransmitterRowHeader
objects, mainly labels for the transmitter's names, but also means of selecting or deselecting transmitters. The scroll pane's column header (an element which never gets scrolled) is a TimelineAxis
, a ruler for displaying the timeline indices and allowing to position and select the timeline.
Global keyboard commands (Ctrl+Cursor-Keys) are registered to zoom into the selected tracks (vertically) or into the timeline (horizontally), amongst others.
A special inner class view port object is installed in the scroll bar to allow fast graphics display when the transport is running. In this case the timeline frame installs a realtime consumer and listens to the transport notification ticks. Because the timeline position hairline has to be painted over all tracks, this is done in the view port's paintChildren
method. This requires the view port to be set to BACKINGSTORE_SCROLL_MODE
so the children's views are recalled from a backing store image -- repainting the vector editors all the time is much too slow. Unfortunately this produces some graphics artefacts if the vertical scrollbar is smoothly dragged.
keyb.shortcuts:@author Hanns Holger Rutz @version 0.75, 19-Jun-08 @see de.sciss.meloncillo.transmitter.TransmitterRowHeader @see de.sciss.meloncillo.transmitter.TransmitterEditor @see de.sciss.meloncillo.timeline.TimelineAxis @see de.sciss.meloncillo.timeline.TimelineScroll @see javax.swing.JViewport#setScrollMode(int) @todo the VM 1.4.2_05 introduces a new bug which causesthe timeline display in RT playback to flicker and besides makes the whole graphics update really slow. We should think about creating our own backing store image. @todo when resizing the window while transport is playing there'sa null pointer exception in the paintDirty method since the backing store image seems to have been invalidated @todo deal with the viewport graphics artefacts. @todo Paste + Clear : use blending @todo pointer tool : ctrl+drag doesn't work.
|
|