# HG changeset patch
# User Mikhail Kryshen <mikhail@kryshen.net>
# Date 1280278050 -14400
# Node ID a948ac563f6fb3385e8ecc4332f1379a7ea3f95f
# Parent  180d7690d09a2fad9552c4a3843574239c13c2b7
Graph: draw the vertex being dragged above others.

diff -r 180d7690d09a -r a948ac563f6f src/kryshen/indyvon/graph.clj
--- a/src/kryshen/indyvon/graph.clj	Wed Jul 28 04:46:34 2010 +0400
+++ b/src/kryshen/indyvon/graph.clj	Wed Jul 28 04:47:30 2010 +0400
@@ -33,15 +33,14 @@
   (doseq [v (.vertices (.getGraph layout))]
     (draw-anchored! v :center :center (+ x (.getX v)) (+ y (.getY v)))))
 
-(defn- draw-movable-vertices!
-  [^GraphLayout layout x y dragged fix-x fix-y]
-  (doseq [v (.vertices (.getGraph layout))]
-    (let [x (+ x (.getX v))
-          y (+ y (.getY v))
-          anchor (anchor v :center :center)
-          size (layer-size v)
-          x (- x (:x anchor))
-          y (- y (:y anchor))]
+(defn- draw-movable-vertex!
+  [^Vertex2D v ^GraphLayout layout x y dragged fix-x fix-y]
+  (let [x (+ x (.getX v))
+        y (+ y (.getY v))
+        anchor (anchor v :center :center)
+        size (layer-size v)
+        x (- x (:x anchor))
+        y (- y (:y anchor))]
     (with-bounds x y (:width size) (:height size)
       (with-handlers v
         (draw! v)
@@ -65,8 +64,18 @@
                  (.invalidateLayout layout)
                  (*update*)
                  (ref-set fix-x x)
-                 (ref-set fix-y y)))))))))))
-
+                 (ref-set fix-y y))))))))))
+  
+(defn- draw-movable-vertices!
+  [^GraphLayout layout x y dragged-ref fix-x fix-y]
+  (let [dragged @dragged-ref]
+    (doseq [v (.vertices (.getGraph layout))
+            :when (not= v dragged)]
+      (draw-movable-vertex! v layout x y dragged-ref fix-x fix-y))
+    ;; Draw the vertex being dragged above others.
+    (when dragged
+      (draw-movable-vertex! dragged layout x y dragged-ref fix-x fix-y))))
+    
 (defn- draw-edges! [^GraphLayout layout x y]
   ;; TODO: extend Layer on Edge2D and draw like vertices.
   (.translate *graphics* x y)