            [java.util Vector]
            [java.awt Toolkit Dimension Point]
            [java.awt.event KeyEvent ActionEvent ActionListener MouseEvent
-                        MouseListener InputEvent]
+                        InputEvent]
            [java.awt.datatransfer DataFlavor StringSelection]
-           [javax.swing.event TreeSelectionListener TableModelListener]
+           [javax.swing.event TreeSelectionListener TableModelListener 
+             MouseInputListener ]
            [javax.swing.table DefaultTableModel])
   (:use clojure.contrib.swing-utils
         [clojure.contrib.string :only (join split-lines split)])

      (mouseExited [event]
        (with-swing-threads* (exited (translate-event event))))
      (mouseClicked [event]
        (with-swing-threads* (clicked (translate-event event)))))))


;;; managed/unmanaged interop

                           :modifiers (translate-modifier (.getModifiersEx event))
                           :position [(.getX event) (.getY event)]
                           :buttons-down (translate-pressed-btns (.getModifiersEx event))})]
    (proxy [MouseInputListener] []
      (mousePressed [event]
        (with-swing-threads* (pressed (translate-event event))))
      (mouseReleased [event]
