     @getMultiModeBtn().setVisible(!multi)
     @getNormalModeBtn().setVisible(multi)
 
+  handleItemClick: (me, node) ->
+    # Reverse the check flag if in multi-mode:
+    if @isMulti
+      node.set("checked", !node.get("checked"))
+      @createViewChangeEvent()
+
+  handleCheckChange: ->
+    @createViewChangeEvent() if @isMulti
+
+  handleSelectionChange: ->
+    @createViewChangeEvent() unless @isMulti
+
   createViewChangeEvent: ->
     chosenKeys = []
     if @isMulti

    @store = @tree.getStore()

    @tree.on
      selectionchange: @createViewChangeEvent
      itemexpand: @onItemExpand
      checkchange: @createViewChangeEvent
      scope: @

    @getNormalModeBtn().on

    else
      # the chosen key is the selected key (no, really)
      chosenKeys = @getSelectedNode().get("fullname")

    Muleview.event "viewChange", chosenKeys , Muleview.currentRetention

  receiveViewChangeEvent: (keys) ->
