gui/trace-control.ss
(module trace-control mzscheme

  (require (lib "contract.ss")
           (lib "class.ss")
           (lib "mred.ss" "mred")
           "interfaces.ss"
           "message-mixins.ss"
           "filter-frame.ss"
           "../model/view.ss"
           )

  (provide/contract
   [trace-control% (class/c panel% updatee<%>)])

  (define trace-control%
    (class* vertical-panel% (updatee<%>)
      (super-new [stretchable-height #f])

      ;; Public properties of the class
      (init-field trace-display)
      (public on-update)
      (private get-view)

      ;; Internal fields and initialization

      (define filter-frame
        (new filter-frame%
             [buffer (view-buffer (get-view))]
             [trace-display trace-display]))

      (define update-button
        (new button%
             [parent this]
             [label "Update"]
             [callback
              (lambda (b e) (send trace-display do-update))]))

      (define filter-button
        (new button%
             [parent this]
             [label "Filter"]
             [callback
              (lambda (b e)
                (send filter-frame on-update)
                (send filter-frame show #t))]))

;;       (define actions
;;         (new (updatable-message-mixin message%)
;;              [parent this]
;;              [stretchable-width #t]
;;              [update-label
;;               (lambda ()
;;                 (format "Actions: ~s" (view-count-actions (get-view))))]))

;;       (define objects
;;         (new (updatable-message-mixin message%)
;;              [parent this]
;;              [stretchable-width #t]
;;              [update-label
;;               (lambda ()
;;                 (format "Objects: ~s" (view-count-objects (get-view))))]))

      (define (get-view)
        (send trace-display get-view))

      (define (on-update)
;;         (send actions on-update)
;;         (send objects on-update)
        (void))

      ))

  )