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))))