Guest User

Untitled

a guest
Mar 1st, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. (import '(javax.swing JFrame JPanel JScrollPane JTable SwingUtilities)
  2. '(javax.swing.table AbstractTableModel DefaultTableCellRenderer)
  3. '(java.awt Dimension GridLayout Font Color)
  4. '(java.awt.event MouseAdapter)
  5. '(java.sql DriverManager))
  6.  
  7. (def table (JTable.))
  8.  
  9. (SwingUtilities/invokeLater
  10. (fn []
  11. (doto (JFrame. "demo")
  12. (setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
  13. (setContentPane
  14. (doto (JPanel. (GridLayout. 1 0))
  15. (setOpaque true)
  16. (add (JScrollPane.
  17. (doto table
  18. (setPreferredScrollableViewportSize
  19. (Dimension. 500 70))
  20. (setFillsViewportHeight true))))))
  21. (pack)
  22. (setVisible true))))
  23.  
  24. (def conn
  25. (DriverManager/getConnection "jdbc:postgresql:ivytech" "postgres" "system"))
  26.  
  27. ;(DriverManager/getConnection "jdbc:postgresql:my-db-name" "my-user-name" "my-password"))
  28.  
  29. (defn query-vec [sql]
  30. (with-open stmt (.createStatement conn)
  31. (vec (resultset-seq (.executeQuery stmt sql)))))
  32.  
  33. (def rows (query-vec "SELECT * FROM LogB"))
  34.  
  35. (defn model [rows col-names value-at]
  36. (proxy [AbstractTableModel] []
  37. (getRowCount [] (count rows))
  38. (getColumnCount [] (count col-names))
  39. (getColumnName [c] (nth col-names c))
  40. (getValueAt [r c] (value-at r c))
  41. (isCellEditable [r c] false)))
  42.  
  43. (.setModel table (model rows
  44. ["foo" "bar" "baz"]
  45. (fn [r c] (str r ", " c))))
  46.  
  47. (.setModel table (model rows
  48. ["record"]
  49. (fn [r c] (prn-str (nth rows r)))))
  50.  
  51. (.setModel table (model rows
  52. (vec (map str (keys (first rows))))
  53. (fn [r c] ((nth rows r) (nth (keys (first rows)) c)))))
  54.  
  55. (.setModel table (model rows
  56. ["Time" "Source" "Message"]
  57. (fn [r c] (let [row (nth rows r)]
  58. ((nth [#(:createtime row)
  59. #(str (:path row) ":" (:line row))
  60. #(:buffer row)] c))))))
  61.  
  62. (.setDefaultRenderer table Object
  63. (proxy [DefaultTableCellRenderer] []
  64. (getTableCellRendererComponent [tbl obj isSelected hasFocus r c]
  65. (let [{:keys [level]} (nth rows r)]
  66. (doto this
  67. (setForeground (cond (<= level 0) Color/white
  68. (<= level 10) Color/blue
  69. (<= level 20) Color/red
  70. (<= level 30) Color/magenta
  71. :else Color/black))
  72. (setText (str obj)))))))
  73.  
  74. (.addMouseListener table
  75. (proxy [MouseAdapter] []
  76. (mouseClicked [e]
  77. (when (== (.getClickCount e) 1)
  78. (let [p (.getPoint e)
  79. r (.rowAtPoint table p)
  80. c (.columnAtPoint table p)]
  81. (prn "click row " r)
  82. (flush))))))
Add Comment
Please, Sign In to add comment