Advertisement
Guest User

Untitled

a guest
Jul 27th, 2011
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defn show-graph
  2.   "Show graph g in a JFrame with reversed edges if reversed is logically true."
  3.   [g & [reversed]]
  4.   (if (> (+ (vcount g) (ecount g)) 400)
  5.     (do (println "Graph too big for visualizing!") nil)
  6.     (let [img (-> (doto ^Tg2Dot (Tg2Dot.)
  7.                     (.setGraph g)
  8.                     (.setReversedEdges (if reversed true false)))
  9.                   (.convertToGraphVizImageIcon
  10.                    (-> (GraphVizProgram.)
  11.                        (.outputFormat GraphVizOutputFormat/PNG))))
  12.           label (JLabel. img)
  13.           frame (JFrame. (str "Graph: " (id g)))]
  14.       (doto frame
  15.         (-> (.getContentPane)
  16.             (.add (JScrollPane. label)))
  17.         (.addKeyListener
  18.          (proxy [KeyListener] []
  19.            (keyPressed [e]
  20.              (javax.swing.JOptionPane/showMessageDialog frame "I am displayed")
  21.              (let [sf (case (.getKeyCode e)
  22.                         KeyEvent/VK_PLUS  1.1
  23.                         KeyEvent/VK_MINUS 0.9
  24.                         0.5)
  25.                    i (.getImage img)
  26.                    si (.getScaledInstance (* sf (.getWidth i)) (* sf (.getHeight i)) 1)]
  27.                (javax.swing.JOptionPane/showMessageDialog frame "I'm not displayed! Why???")
  28.                (.setIcon label (ImageIcon. si))
  29.                (.repaint frame)))
  30.            (keyReleased [e])
  31.            (keyTyped [e])))
  32.         (.show)
  33.         (.pack)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement