(module trace-gui mzscheme
(require (lib "contract.ss")
(lib "class.ss")
(lib "mred.ss" "mred")
"interfaces.ss"
"message-mixins.ss"
"trace-display.ss"
"../model/view.ss"
)
(provide/contract
[trace-gui% (class/c panel%)])
(define trace-gui%
(class vertical-panel%
(super-new)
(init-field view)
(define control-panel
(new vertical-panel%
[parent this]
[stretchable-height #f]))
(define display-panel
(new trace-display%
[parent this]
[view view]))
(define actions
(new (updatable-message-mixin message%)
[parent control-panel]
[stretchable-width #t]
[update-label
(lambda () (format "Actions: ~s" (view-count-actions view)))]))
(define objects
(new (updatable-message-mixin message%)
[parent control-panel]
[stretchable-width #t]
[update-label
(lambda () (format "Objects: ~s" (view-count-objects view)))]))
(define (do-update . args)
(view-update view)
(send display-panel on-update)
(send actions on-update)
(send objects on-update))
(define update (new button%
[parent control-panel]
[label "Update"]
[callback do-update]))
))
)