From 7315e1ad1d04b8496d7ea27824090c1ed519150a Mon Sep 17 00:00:00 2001 From: oakes Date: Sat, 10 May 2014 12:54:02 -0400 Subject: [PATCH] Move ui listener macros to ui.clj --- src/play_clj/core.clj | 2 +- src/play_clj/core_listeners.clj | 41 ---------------------------- src/play_clj/ui.clj | 47 +++++++++++++++++++++++++++++++-- 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index ee05778..ac51ec3 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -29,7 +29,7 @@ OrthogonalTiledMapRenderer] [com.badlogic.gdx.math Vector2 Vector3] [com.badlogic.gdx.scenes.scene2d Actor Stage] - [com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener Align + [com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener ChangeListener ClickListener DragListener FocusListener] [com.badlogic.gdx.utils ScreenUtils Timer$Task] [play_clj.entities BundleEntity ShapeEntity])) diff --git a/src/play_clj/core_listeners.clj b/src/play_clj/core_listeners.clj index 8690cff..9f21f89 100644 --- a/src/play_clj/core_listeners.clj +++ b/src/play_clj/core_listeners.clj @@ -119,29 +119,12 @@ in the `screen`." (zoom [e id d] (execute-fn! on-ui-zoom :event e :initial-distance id :distance d)))) -(defmacro actor-gesture-listener! - "Calls a single method on the [ActorGestureListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.html) -in the `screen`." - [screen k & options] - `(let [listeners# (u/get-obj ~screen :ui-listeners) - ^ActorGestureListener object# - (u/get-obj listeners# :actor-gesture-listener)] - (u/call! object# ~k ~@options))) - (defn ^:private change-listener [{:keys [on-ui-changed]} execute-fn!] (proxy [ChangeListener] [] (changed [e a] (execute-fn! on-ui-changed :event e :actor a)))) -(defmacro change-listener! - "Calls a single method on the [ChangeListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ChangeListener.html) -in the `screen`." - [screen k & options] - `(let [listeners# (u/get-obj ~screen :ui-listeners) - ^ChangeListener object# (u/get-obj listeners# :change-listener)] - (u/call! object# ~k ~@options))) - (defn ^:private click-listener [{:keys [on-ui-clicked on-ui-enter on-ui-exit on-ui-touch-down on-ui-touch-dragged on-ui-touch-up]} @@ -166,14 +149,6 @@ in the `screen`." (execute-fn! on-ui-touch-up :event e :input-x x :input-y y :pointer p :button b)))) -(defmacro click-listener! - "Calls a single method on the [ClickListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ClickListener.html) -in the `screen`." - [screen k & options] - `(let [listeners# (u/get-obj ~screen :ui-listeners) - ^ClickListener object# (u/get-obj listeners# :click-listener)] - (u/call! object# ~k ~@options))) - (defn ^:private drag-listener [{:keys [on-ui-drag on-ui-drag-start on-ui-drag-stop on-ui-touch-down on-ui-touch-dragged on-ui-touch-up]} @@ -196,14 +171,6 @@ in the `screen`." (dragStop [e x y p] (execute-fn! on-ui-drag-stop :event e :input-x x :input-y y :pointer p)))) -(defmacro drag-listener! - "Calls a single method on the [DragListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html) -in the `screen`." - [screen k & options] - `(let [listeners# (u/get-obj ~screen :ui-listeners) - ^DragListener object# (u/get-obj listeners# :drag-listener)] - (u/call! object# ~k ~@options))) - (defn ^:private focus-listener [{:keys [on-ui-keyboard-focus-changed on-ui-scroll-focus-changed]} execute-fn!] @@ -213,14 +180,6 @@ in the `screen`." (scrollFocusChanged [e a f] (execute-fn! on-ui-scroll-focus-changed :event e :actor a :focused? f)))) -(defmacro focus-listener! - "Calls a single method on the [FocusListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/FocusListener.html) -in the `screen`." - [screen k & options] - `(let [listeners# (u/get-obj ~screen :ui-listeners) - ^FocusListener object# (u/get-obj listeners# :focus-listener)] - (u/call! object# ~k ~@options))) - (defn ^:private ui-listeners [options execute-fn!] {:actor-gesture-listener (actor-gesture-listener options execute-fn!) diff --git a/src/play_clj/ui.clj b/src/play_clj/ui.clj index d91bb24..3037f95 100644 --- a/src/play_clj/ui.clj +++ b/src/play_clj/ui.clj @@ -10,8 +10,10 @@ Dialog HorizontalGroup Image ImageButton ImageTextButton Label ScrollPane SelectBox Skin Slider Stack Table TextButton TextField Tree Tree$Node VerticalGroup WidgetGroup Window] - [com.badlogic.gdx.scenes.scene2d.utils NinePatchDrawable - SpriteDrawable TextureRegionDrawable TiledDrawable] + [com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener + ChangeListener ClickListener DragListener FocusListener + NinePatchDrawable SpriteDrawable TextureRegionDrawable + TiledDrawable] [com.esotericsoftware.tablelayout Cell] [play_clj.entities ActorEntity])) @@ -57,6 +59,47 @@ based on the file at `path`. [k] `~(u/gdx-field :scenes :scene2d :utils :Align (u/key->camel k))) +(defmacro actor-gesture-listener! + "Calls a single method on the [ActorGestureListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.html) +in the `screen`." + [screen k & options] + `(let [listeners# (u/get-obj ~screen :ui-listeners) + ^ActorGestureListener object# + (u/get-obj listeners# :actor-gesture-listener)] + (u/call! object# ~k ~@options))) + +(defmacro change-listener! + "Calls a single method on the [ChangeListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ChangeListener.html) +in the `screen`." + [screen k & options] + `(let [listeners# (u/get-obj ~screen :ui-listeners) + ^ChangeListener object# (u/get-obj listeners# :change-listener)] + (u/call! object# ~k ~@options))) + +(defmacro click-listener! + "Calls a single method on the [ClickListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ClickListener.html) +in the `screen`." + [screen k & options] + `(let [listeners# (u/get-obj ~screen :ui-listeners) + ^ClickListener object# (u/get-obj listeners# :click-listener)] + (u/call! object# ~k ~@options))) + +(defmacro drag-listener! + "Calls a single method on the [DragListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html) +in the `screen`." + [screen k & options] + `(let [listeners# (u/get-obj ~screen :ui-listeners) + ^DragListener object# (u/get-obj listeners# :drag-listener)] + (u/call! object# ~k ~@options))) + +(defmacro focus-listener! + "Calls a single method on the [FocusListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/FocusListener.html) +in the `screen`." + [screen k & options] + `(let [listeners# (u/get-obj ~screen :ui-listeners) + ^FocusListener object# (u/get-obj listeners# :focus-listener)] + (u/call! object# ~k ~@options))) + (defn cell! "Calls a single method on a [Cell](https://github.com/libgdx/libgdx/blob/master/gdx/src/com/esotericsoftware/tablelayout/Cell.java)." [^Cell cell & args]