         @model.incrementUnreadCount()
         @pushNotification(event)
 
-  newCommentKeyDown: (e) ->
-    submitKeyPressed = (
-      e.which == @keys.enter && !(e.ctrlKey || e.shiftKey || e.altKey)
-    )
+  wipStateChanged: ->
+    switch @model.get('state')
+      when 'open'      then @onWipOpen()
+      when 'allocated' then @onWipAllocated()
+      when 'reviewing' then @onWipReviewing()
+      when 'resolved'  then @onWipResolved()
+
+  onWipOpen: ->
+    @$('[name=close]').show()
+    @$('[name=reopen]').hide()
+    @$('[name=unallocate]').hide()
+    @$('[name=reject]').hide()
+
+  onWipAllocated: ->
+    @$('[name=close]').show()
+    @$('[name=reopen]').hide()
+    @$('[name=unallocate]').show()
+    @$('[name=reject]').hide()
+
+  onWipReviewing: ->
+    @$('[name=close]').show()
+    @$('[name=reopen]').hide()
+    @$('[name=unallocate]').hide()
+    @$('[name=reject]').show()
+
+  onWipResolved: ->
+    @$('[name=close]').hide()
+    @$('[name=reopen]').show()
+    @$('[name=unallocate]').hide()
+    @$('[name=reject]').hide()
+
+  newCommentKeyDown: (e)->
+    cmdEnter = (e.which == @keys.enter)
     body = $('#event_comment_body').val()
-    if submitKeyPressed && @validComment(body)
+    if cmdEnter && @validComment(body)
       e.preventDefault()
       @addComment(body)
+
+  newCommentKeyUp: (e)->
+    @validateComment $('#event_comment_body').val()
 
   resetCommentForm: ->
     @$('#event_comment_body').val('')

  events:
    'click   .js-new-event' : 'onNewCommentClicked'
    'keydown .js-new-event' : 'newCommentKeyDown'

  keys:
    'enter': 13

    $(document).ready @scrollToBottom

  onNewCommentClicked: (e)->
    body = $('#event_comment_body').val()
    switch $(e.target).attr('value')
      when 'Event::Comment'
        e.preventDefault()
        @addComment body
      when 'Event::Close'
        e.preventDefault()
        @addClose body
      when 'Event::Reopen'
        e.preventDefault()
        @addReopen body
      when 'Event::Unallocation'
        e.preventDefault()
        @addUnallocation body
      when 'Event::Rejection'
        e.preventDefault()
        @addRejection body

  addComment: (body)->
    @createEvent 'Event::Comment', body
    @showUpvotePrompt() unless @model.get('voted')
    @children.timestamp.remove()
    @model.set('own_comments', 1)

  addClose: (body)->
    @createEvent 'Event::Close', body
    @model.set('state', 'resolved')

  addReopen: (body)->
    @createEvent 'Event::Reopen', body
    @model.set('state', 'open')

  addUnallocation: (body)->
    @createEvent 'Event::Unallocation', body
    @model.set('state', 'open')

  addRejection: (body)->
    @createEvent 'Event::Rejection', body
    @model.set('state', 'allocated')

  createEvent: (type, body)->
    app.wipEvents.create _(@eventDefaults).extend(type: type, body: body)
