 
 
   bind_events : (plotview) ->
-    if true
-      return
+    @plotview = plotview
+    @plotview.mousedownCallbacks.push((e, x, y) =>
+      console.log('mousedown callback')
+      @dragging = false)
+      
+    @plotview.moveCallbacks.push((e, x, y) =>
+      if e.shiftKey
+        if not @dragging
+
+          @_start_drag(e, x, y)
+        else
+          @_drag(e.foo, e.foo, e, x, y)
+          e.preventDefault()
+          e.stopPropagation())
+
+  mouse_coords : (e, x, y) ->
+    [x_, y_] = [@plot_model.rxpos(x), @plot_model.rypos(y)]
+    return [x_, y_]
+
+  bind_events : (plotview) ->
     @plotview = plotview
     @plotview.mousedownCallbacks.push((e, x, y) =>
       @_stop_selecting)

      yrange = null
    return [xrange, yrange]

  _selecting : () ->
    [x, y] = @mouse_coords()
    @mset({'current_x' : x, 'current_y' : y})
    return null


      @shading.remove()
      @shading = null

  _start_selecting : (e, x_, y_) ->
    [x, y] = @mouse_coords(e, x_, y_)
    @mset({'start_x' : x, 'start_y' : y, 'current_x' : null, 'current_y' : null})
    for renderer in @mget('renderers')
      data_source = @model.resolve_ref(renderer).get_ref('data_source')
