             [seesaw.bind :as b]
             [clojure.java.browse]
             [clojure.java.shell]
+            [seesaw.meta]
             [clojure.java.javadoc])
   (:use [clj-ns-browser.utils]
         [seesaw.core]

  [root]
  (let [atm-map {:ns-require-btn-atom (atom true)
                 :browse-btn-atom (atom true)
                 :edit-btn-atom (atom true)}]
    (swap! instance-atom-map (fn [a] (assoc @instance-atom-map root atm-map))))
  (let [{:keys [browse-btn doc-cbx doc-header-lbl doc-ta doc-tf
                edit-btn ns-cbx ns-entries-lbl ns-filter-tf
                ns-header-lbl ns-lb ns-require-btn root-panel
                vars-cbx vars-entries-lbl vars-filter-tf
                vars-header-lbl vars-lb]}
          (group-by-id root)
        {:keys [ns-require-btn-atom browse-btn-atom edit-btn-atom]}
          (get @instance-atom-map root)]
    ;; ns
    (config! ns-lb :model @all-ns-loaded-atom)
    (config! vars-lb :model [])

  "Returns a new browser root frame with an embedded browser form.
  Add new frame to atom-list browser-root-frms"
  []
  (invoke-soon
    (let [root (frame :title "Clojure Namespace Browser")
          b-form (identify (clj_ns_browser.BrowserForm.))]
      (config! root :content b-form)
      (init-before-bind root)
      (bind-all root)
      (init-after-bind root)
      (swap! browser-root-frms (fn [a] (conj @browser-root-frms root)))
      (refresh-clj-ns-browser root)
      root)))


(defn get-clj-ns-browser
