view src/indyvon/component.clj @ 4:0771180bf7c2

Abandoned approach at event dispatching.
author Mikhail Kryshen <mikhail@kryshen.net>
date Thu, 10 Jun 2010 02:54:35 +0400
parents 43e3358ca4d9
children 9af27ccccfac
line source
1 ;; (ns indyvon.component
2 ;; (:use indyvon.core)
3 ;; (:import (java.awt Graphics Graphics2D Dimension AWTEvent))
4 ;; (:gen-class
5 ;; :name indyvon.IdvComponent
6 ;; :extends java.awt.Component
7 ;; :constructors {[indyvon.core.Layer] [],
8 ;; [indyvon.core.Layer indyvon.core.EventDispatcher] []}
9 ;; :exposes-methods {enableEvents enableEventsSuper}
10 ;; :state state
11 ;; :init init
12 ;; :post-init post-init))
14 ;; (defrecord State [layer event])
16 ;; (defn- -init
17 ;; ([layer]
18 ;; [[] (State. layer (make-event-dispatcher))])
19 ;; ([layer dispatcher]
20 ;; [[] (State. layer dispatcher)]))
22 ;; (defn -enableEvents [this mask]
23 ;; (.enableEventsSuper this mask))
25 ;; (defn- -post-init [this & args]
26 ;; (.enableEvents
27 ;; this
28 ;; ^long (reduce bit-or
29 ;; [AWTEvent/MOUSE_EVENT_MASK
30 ;; AWTEvent/MOUSE_MOTION_EVENT_MASK
31 ;; AWTEvent/MOUSE_WHEEL_EVENT_MASK
32 ;; AWTEvent/KEY_EVENT_MASK])))
34 ;; (defn- make-update-fn [component]
35 ;; (fn [] (.repaint component)))
37 ;; (defn -paint [this g]
38 ;; (let [layer (-> this .state :layer)
39 ;; size (.getSize this)
40 ;; width (.width size)
41 ;; height (.height size)]
42 ;; (binding [*graphics* g
43 ;; *update-fn* (make-update-fn this)]
44 ;; (render-layer! layer 0 0 width height false))))
46 ;; (defn -update [this g]
47 ;; (-paint this g))
49 ;; (defn -processEvent [this event]
50 ;; (dispatch (-> this .state :dispatcher) event))
52 ;; (defn -getPreferredSize [this]
53 ;; (let [s (-> this .state :layer size)]
54 ;; (Dimension. (s 0) (s 1))))