 
     getInitialState: ->
         show: false
+
+    setBusy: (isBusy) ->
+        @setState({isBusy})
+
+    busyMessage: ->
+        (if _.isString(@state.isBusy) then @state.isBusy else '') + '…'
 
     onOkButton: (ev) -> @state.onOk?(this, ev)
     onCancelButton: (ev) -> @state.onCancel?(this, ev)

                </BS.Modal.Header>

                <BS.Modal.Body style={maxHeight: @context.viewport.height - 250}>
                    <Body {...@props} modal={@} />
                </BS.Modal.Body>


            button.eventKey ||= (button.key or button.title).toLowerCase()
            <BS.Button key={button.title}
                bsStyle={button.style || 'default'} className={name}
                disabled={!!@state.isBusy}
                onClick={_.partial(@onButton, _, button)}
            >{button.title}</BS.Button>

        cls = _.classnames('lanes-modal', @state.className, @context.uistate?.layout_size)
        Body = @state.body
