     @links.attr "y1", (d) -> d.source.y
     @links.attr "x2", (d) -> d.target.x
     @links.attr "y2", (d) -> d.target.y
+
+  # pan/zoom when node isn't being dragged
+  redraw : =>
+    if not @mousedown_node
+      @svg.attr "transform", "translate(" + d3.event.translate + ")" + "scale(" + d3.event.scale + ")"
 
   # clear the selection
   clearSelection : () ->

    @TOOLBAR.find('.graphedit-toolbar-new-edge').attr('disabled', 'disabled')
    @drawSelection()

  displayData : (data) =>
    if data
      @DATAVIEW.html("<pre>" + JSON.stringify(data.properties, null, 2) + "</pre>")

    #enable deletion via delete/backspace key
    d3.select(window).on 'keydown', () ->
      if d3.event.keyCode in [46, 8]
        me.removeSelection()

    @restart()
    @displayData()
