source: trunk/source/examples/jfli/examples/swtdemo.lisp @ 15189

Last change on this file since 15189 was 15189, checked in by gb, 9 years ago

Move jni.lisp from examples/jfli/ to library. We don't need the
kernel-imprort-jvm-init hack on Darwin anymore.

Tweak the jfli swtdemo to REQUIRE jni.

I imagine that more stuff will need to be modified/moved around
in order to make things work and make things more general.

File size: 1.8 KB
Line 
1;Just load this from LispWorks menu
2;note works on Windows, some issues on OS X due to windowing conflict w/IDE
3(require "JNI")
4(load "ccl:examples;jfli;jfli")
5(use-package :jfli)
6(create-jvm
7 "-Djava.class.path=/cygwin/home/gb/swt/swt.jar;/;/cygwin/usr/local/src/ccl-dev/examples/jfli/jfli.jar"
8 )
9(enable-java-proxies)
10
11
12
13(def-java-class "org.eclipse.swt.widgets.Display")
14(def-java-class "org.eclipse.swt.widgets.Button")
15(def-java-class "org.eclipse.swt.widgets.Shell")
16(def-java-class "org.eclipse.swt.widgets.Listener")
17(def-java-class "org.eclipse.swt.SWT")
18
19(use-package "org.eclipse.swt")
20(use-package "org.eclipse.swt.widgets")
21
22
23(defun swt-demo ()
24  (let* ((display (new display.))
25         (shell (new shell. display
26                     :gettext "Using SWT from Lisp"
27                     (.setsize 300 200)
28                     (.setlocation 100 100)))
29         (button (new (button. this) shell *SWT.CENTER*
30                      :gettext "Call Lisp"
31                      (.addlistener *swt.selection*
32                       (new-proxy (listener.
33                                   (handleevent (event)
34                                     (declare (ignore event))
35                                     (setf (button.gettext this)
36                                           (format nil "~A ~A"
37                                                   (lisp-implementation-type)
38                                                   (lisp-implementation-version)))
39                                     nil))))
40                      (.setsize 200 100)
41                      (.setlocation 40 40))))
42    (declare (ignore button))
43    (shell.open shell)
44    (do ()
45        ((shell.isdisposed shell))
46      (unless (display.readanddispatch display)
47        (display.sleep display)))
48    (display.dispose display)))
49
50(mp:process-run-function "swt-proc" '() #'swt-demo)
51
Note: See TracBrowser for help on using the repository browser.