Mercurial > hg > indyvon
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 wrap: on
line source
;; (ns indyvon.component ;; (:use indyvon.core) ;; (:import (java.awt Graphics Graphics2D Dimension AWTEvent)) ;; (:gen-class ;; :name indyvon.IdvComponent ;; :extends java.awt.Component ;; :constructors {[indyvon.core.Layer] [], ;; [indyvon.core.Layer indyvon.core.EventDispatcher] []} ;; :exposes-methods {enableEvents enableEventsSuper} ;; :state state ;; :init init ;; :post-init post-init)) ;; (defrecord State [layer event]) ;; (defn- -init ;; ([layer] ;; [[] (State. layer (make-event-dispatcher))]) ;; ([layer dispatcher] ;; [[] (State. layer dispatcher)])) ;; (defn -enableEvents [this mask] ;; (.enableEventsSuper this mask)) ;; (defn- -post-init [this & args] ;; (.enableEvents ;; this ;; ^long (reduce bit-or ;; [AWTEvent/MOUSE_EVENT_MASK ;; AWTEvent/MOUSE_MOTION_EVENT_MASK ;; AWTEvent/MOUSE_WHEEL_EVENT_MASK ;; AWTEvent/KEY_EVENT_MASK]))) ;; (defn- make-update-fn [component] ;; (fn [] (.repaint component))) ;; (defn -paint [this g] ;; (let [layer (-> this .state :layer) ;; size (.getSize this) ;; width (.width size) ;; height (.height size)] ;; (binding [*graphics* g ;; *update-fn* (make-update-fn this)] ;; (render-layer! layer 0 0 width height false)))) ;; (defn -update [this g] ;; (-paint this g)) ;; (defn -processEvent [this event] ;; (dispatch (-> this .state :dispatcher) event)) ;; (defn -getPreferredSize [this] ;; (let [s (-> this .state :layer size)] ;; (Dimension. (s 0) (s 1))))