     conexp.contrib.gui.util
     conexp.util
     conexp.util.hookable
+    conexp.util.typecheck
     conexp.util.multimethods
     [clojure.contrib.string :only (join split-lines split)]
     [clojure.set :only (union)]))

      (if (managed-by-conexp-gui-editors-util? obj) (:control obj) obj))))


(inherit-multimethod get-size ::widget
  "Returns the size of the given widget.

   Parameters:
     obj         _widget")

(defmethod-swing get-size ::widget
  [obj]
  (bean (.getSize (get-widget obj))))

(inherit-multimethod set-size ::widget
  "Sets the size of the given widget.

   Parameters:
     obj         _widget
     width       _width
     height      _height")

(defmethod-swing-threads* set-size ::widget
  [obj width height]
  (.setSize (get-widget obj) (Dimension. width height)))

(inherit-multimethod set-width ::widget
  "Sets the width of the given widget.

   Parameters:
     obj         _widget
     width       _width")

(defmethod set-width ::widget
  [obj width]
  (let [ height (:height (get-size obj)) ]
    (set-size obj width height)))

(inherit-multimethod set-height ::widget
  "Sets the height of the given widget.

   Parameters:
     obj         _widget
     height      _height")

(defmethod set-height ::widget
  [obj height]
  (let [ width (:width (get-size obj)) ]
    (set-size obj width height)))

             table-col (.getColumn col-model column) ]
        (.getModelIndex table-col)))))

(defn-typecheck-swing get-index-column ::table-control
 "Returns the column in the view that corresponds to the specified
  table model index.

  Parameters:
    otable    _table-control object
    index     _table model index"
  [otable index]
  (let [ table (get-control otable)
         col-model (.getColumnModel table)
