Added link to documentation.
This commit is contained in:
parent
6f18608e11
commit
303caf455f
5 changed files with 22 additions and 31 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,3 +6,4 @@ pom.xml
|
||||||
.lein-deps-sum
|
.lein-deps-sum
|
||||||
*~
|
*~
|
||||||
*class
|
*class
|
||||||
|
/docs/
|
|
@ -1,4 +1,4 @@
|
||||||
clojurefx
|
clojurefx
|
||||||
=========
|
=========
|
||||||
|
|
||||||
A Clojure JavaFX wrapper.
|
A Clojure JavaFX wrapper. [Documentation can be found here](http://zilti.github.io/clojurefx).
|
|
@ -1,7 +1,9 @@
|
||||||
(defproject clojurefx "0.1.0-SNAPSHOT"
|
(defproject clojurefx "0.1.0-SNAPSHOT"
|
||||||
:description "FIXME: write description"
|
:description "Helper functions and probably a wrapper to simplify usage of JavaFX in Clojure.<br/>
|
||||||
:url "http://example.com/FIXME"
|
You'll need to have jfxrt.jar in your local maven repository. See [this coderwall protip](https://coderwall.com/p/4yjy1a) for how to make this happen."
|
||||||
|
:url "https://www.github.com/zilti/clojurefx"
|
||||||
:license {:name "Eclipse Public License"
|
:license {:name "Eclipse Public License"
|
||||||
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
||||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
:dependencies [[org.clojure/clojure "1.5.1"]
|
||||||
[com.oracle/javafx-runtime "2.2.0"]])
|
[com.oracle/javafx-runtime "2.2.0"]]
|
||||||
|
:plugins [[lein-marginalia "0.7.1"]])
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
(ns clojurefx.core
|
(ns clojurefx.core
|
||||||
(:require [clojure.string :as str]))
|
(:require [clojure.string :as str]))
|
||||||
|
|
||||||
|
(defonce force-toolkit-init (javafx.embed.swing.JFXPanel.))
|
||||||
|
|
||||||
(defn run-later*
|
(defn run-later*
|
||||||
|
"Simple wrapper for Platform/runLater. You should use run-later."
|
||||||
[f]
|
[f]
|
||||||
(javafx.application.Platform/runLater f))
|
(javafx.application.Platform/runLater f))
|
||||||
|
|
||||||
|
@ -10,6 +13,7 @@
|
||||||
`(run-later* (fn [] ~@body)))
|
`(run-later* (fn [] ~@body)))
|
||||||
|
|
||||||
(defn run-now*
|
(defn run-now*
|
||||||
|
"A modification of run-later waiting for the running method to return. You should use run-now."
|
||||||
[f]
|
[f]
|
||||||
(let [result (promise)]
|
(let [result (promise)]
|
||||||
(run-later
|
(run-later
|
||||||
|
@ -28,30 +32,6 @@
|
||||||
(defmacro event-handler [arg & body]
|
(defmacro event-handler [arg & body]
|
||||||
`(event-handler* (fn ~arg ~@body)))
|
`(event-handler* (fn ~arg ~@body)))
|
||||||
|
|
||||||
(def build-reference
|
|
||||||
'{accordion "javafx.scene.control"
|
|
||||||
|
|
||||||
affine "javafx.scene.transform"
|
|
||||||
|
|
||||||
anchor "javafx.scene.layout"
|
|
||||||
border-pane "javafx.scene.layout"
|
|
||||||
|
|
||||||
arc "javafx.scene.shape"
|
|
||||||
arc-to "javafx.scene.shape"
|
|
||||||
|
|
||||||
blend "javafx.scene.effect"
|
|
||||||
bloom "javafx.scene.effect"
|
|
||||||
box-blur "javafx.scene.effect"
|
|
||||||
|
|
||||||
area-chart "javafx.scene.chart"
|
|
||||||
bar-chart "javafx.scene.chart"
|
|
||||||
bubble-chart "javafx.scene.chart"
|
|
||||||
axis "javafx.scene.chart"
|
|
||||||
|
|
||||||
audio-clip "javafx.scene.media"
|
|
||||||
|
|
||||||
bounding-box "javafx.geometry"})
|
|
||||||
|
|
||||||
(defn- camel [in]
|
(defn- camel [in]
|
||||||
(let [in (name in)
|
(let [in (name in)
|
||||||
in (str/split in #"-")
|
in (str/split in #"-")
|
||||||
|
@ -60,7 +40,10 @@
|
||||||
in (conj (into [] in) "Builder")]
|
in (conj (into [] in) "Builder")]
|
||||||
(apply str in)))
|
(apply str in)))
|
||||||
|
|
||||||
(defn- get-qualified [builder]
|
(defn- get-qualified "
|
||||||
|
An exhaustive list of [everything implementing the builder pattern](http://docs.oracle.com/javafx/2/api/javafx/util/Builder.html). In the future it will be possible to add entries yourself.<br/>
|
||||||
|
Don't use this yourself; See the macros \"build\" and \"deffx\" below.
|
||||||
|
" [builder]
|
||||||
(let [pkgs {"javafx.scene.control" '[accordion button cell check-box check-box-tree-item check-menu-item choice-box
|
(let [pkgs {"javafx.scene.control" '[accordion button cell check-box check-box-tree-item check-menu-item choice-box
|
||||||
color-picker combo-box context-menu custom-menu-item hyperlink
|
color-picker combo-box context-menu custom-menu-item hyperlink
|
||||||
indexed-cell index-range label list-cell list-view menu-bar menu menu-button menu-item
|
indexed-cell index-range label list-cell list-view menu-bar menu menu-button menu-item
|
||||||
|
@ -106,11 +89,15 @@
|
||||||
(if (not (empty? (filter #(= % builder) (get pkgs k))))
|
(if (not (empty? (filter #(= % builder) (get pkgs k))))
|
||||||
(symbol (str k "." (camel (name builder))))))))))
|
(symbol (str k "." (camel (name builder))))))))))
|
||||||
|
|
||||||
(defmacro build [what & args]
|
(defmacro build
|
||||||
|
"This helper macro makes it easier to use the [JavaFX builder classes](http://docs.oracle.com/javafx/2/api/javafx/util/Builder.html). Example: (build button (text \"Close me.\") (cancelButton true))."
|
||||||
|
[what & args]
|
||||||
`(.. ~(get-qualified what) create
|
`(.. ~(get-qualified what) create
|
||||||
~@args
|
~@args
|
||||||
build))
|
build))
|
||||||
|
|
||||||
(defmacro deffx [name what & args]
|
(defmacro deffx
|
||||||
|
"Uses build and assigns the result to a symbol."
|
||||||
|
[name what & args]
|
||||||
`(def ~name
|
`(def ~name
|
||||||
(build ~what ~@args)))
|
(build ~what ~@args)))
|
||||||
|
|
1
target/stale/extract-native.dependencies
Normal file
1
target/stale/extract-native.dependencies
Normal file
|
@ -0,0 +1 @@
|
||||||
|
([:dependencies ([marginalia "0.7.1"] [org.clojure/clojure "1.5.1"] [com.oracle/javafx-runtime "2.2.0"] [org.clojure/tools.nrepl "0.2.3"] [clojure-complete/clojure-complete "0.2.3"])])
|
Loading…
Reference in a new issue