Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn show-graph
- "Show graph g in a JFrame with reversed edges if reversed is logically true."
- [g & [reversed]]
- (if (> (+ (vcount g) (ecount g)) 400)
- (do (println "Graph too big for visualizing!") nil)
- (let [img (-> (doto ^Tg2Dot (Tg2Dot.)
- (.setGraph g)
- (.setReversedEdges (if reversed true false)))
- (.convertToGraphVizImageIcon
- (-> (GraphVizProgram.)
- (.outputFormat GraphVizOutputFormat/PNG))))
- label (JLabel. img)
- frame (JFrame. (str "Graph: " (id g)))]
- (doto frame
- (-> (.getContentPane)
- (.add (JScrollPane. label)))
- (.addKeyListener
- (proxy [KeyListener] []
- (keyPressed [e]
- (javax.swing.JOptionPane/showMessageDialog frame "I am displayed")
- (let [sf (case (.getKeyCode e)
- KeyEvent/VK_PLUS 1.1
- KeyEvent/VK_MINUS 0.9
- 0.5)
- i (.getImage img)
- si (.getScaledInstance (* sf (.getWidth i)) (* sf (.getHeight i)) 1)]
- (javax.swing.JOptionPane/showMessageDialog frame "I'm not displayed! Why???")
- (.setIcon label (ImageIcon. si))
- (.repaint frame)))
- (keyReleased [e])
- (keyTyped [e])))
- (.show)
- (.pack)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement