Archive for the ‘SWT’ Category

  1. Hello, Win32 API(BeanShell) World!

    Posted on 1月 12th, 2013 by cx20

    Win32 API(BeanShell)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は BeanShell にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    import org.eclipse.swt.internal.win32.OS;
    import org.eclipse.swt.internal.win32.TCHAR;
     
    TCHAR lpText = new TCHAR(0, "Hello, Win32 API World!", true);
    TCHAR lpCaption = new TCHAR(0, "Hello, World", true);
    OS.MessageBox(0, lpText, lpCaption, OS.MB_OK );

    実行方法

    C:¥> SET CLASSPATH=bsh-2.0b4.jar;org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;%CLASSPATH%
    C:¥> java bsh.Interpreter Hello.bsh

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  2. Hello, Win32 API(Clojure) World!

    Posted on 1月 11th, 2013 by cx20

    Win32 API(Clojure)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Clojure にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    (import 
      (org.eclipse.swt.internal.win32 OS)
      (org.eclipse.swt.internal.win32 TCHAR))
     
    (def lpText
      (TCHAR. 0 "Hello, Win32 API World!" true))
     
    (def lpCaption 
      (TCHAR. 0 "Hello, World" true))
     
    (. OS (MessageBox 0 lpText lpCaption OS/MB_OK))

    実行方法

    C:¥> SET CLASSPATH=org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;%CLASSPATH%
    C:¥> clj Hello.clj

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  3. Hello, Win32 API(Jython) World!

    Posted on 1月 10th, 2013 by cx20

    Win32 API(Jython)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Jython にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    from org.eclipse.swt.internal.win32 import OS
    from org.eclipse.swt.internal.win32 import TCHAR
     
    lpText = TCHAR(0, "Hello, Win32 API World!", True)
    lpCaption = TCHAR(0, "Hello, World", True)
    OS.MessageBox(0, lpText, lpCaption, OS.MB_OK )

    実行方法

    C:¥> SET CLASSPATH=org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;%CLASSPATH%
    C:¥> jython Hello.py

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  4. Hello, Win32 API(JRuby) World!

    Posted on 1月 9th, 2013 by cx20

    Win32 API(JRuby)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は JRuby にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    require 'java'
    require 'org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar'
     
    import 'org.eclipse.swt.internal.win32.OS'
    import 'org.eclipse.swt.internal.win32.TCHAR'
     
    @lpText = TCHAR.new(0, "Hello, Win32 API World!", true)
    @lpCaption = TCHAR.new(0, "Hello, World", true)
    OS::MessageBox(0, @lpText, @lpCaption, OS::MB_OK )

    実行方法

    C:¥> jruby Hello.rb

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  5. Hello, Win32 API(Scala) World!

    Posted on 1月 8th, 2013 by cx20

    Win32 API(Scala)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Scala にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    import org.eclipse.swt.internal.win32.OS
    import org.eclipse.swt.internal.win32.TCHAR
     
    object Hello {
        def main (args: Array[String]) {
            var lpText = new TCHAR(0, "Hello, Win32 API World!", true)
            var lpCaption = new TCHAR(0, "Hello, World", true)
            OS.MessageBox(0, lpText, lpCaption, OS.MB_OK )
        }
    }

    実行方法

    C:¥> scala -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello.scala

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  6. Hello, Win32 API(Groovy) World!

    Posted on 1月 7th, 2013 by cx20

    Win32 API(Groovy)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Groovy にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    import org.eclipse.swt.internal.win32.OS
    import org.eclipse.swt.internal.win32.TCHAR
     
    class Hello {
        static void main (args) {
            def lpText = new TCHAR(0, "Hello, Win32 API World!", true)
            def lpCaption = new TCHAR(0, "Hello, World", true)
            OS.MessageBox(0, lpText, lpCaption, OS.MB_OK )
        }
    }

    コンパイル&実行方法

    C:¥> groovy -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello.groovy

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------
  7. Hello, SWT(Jasmin) World!

    Posted on 1月 2nd, 2013 by cx20

    SWT(Java)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。
    以下は Jasmin による SWT の使用例となっている。

    ソースコード

    ; Produced by NeoJasminVisitor (tinapoc)
    ; http://tinapoc.sourceforge.net
    ; The original JasminVisitor is part of the BCEL
    ; http://jakarta.apache.org/bcel/
    ; Sun Dec 02 01:23:19 JST 2012
     
    .bytecode 50.0
    .source Hello.java
    .class public Hello
    .super java/lang/Object
     
    .method public <init>()V
        .limit stack 1
        .limit locals 1
        .var 0 is this LHello; from Label0 to Label1
     
        Label0:
    .line 5
           0: aload_0
           1: invokespecial java/lang/Object/<init>()V
     
        Label1:
           4: return
     
    .end method
     
    .method public static main([Ljava/lang/String;)V
        .limit stack 4
        .limit locals 5
        .var 0 is arg0 [Ljava/lang/String; from Label3 to Label4
     
        Label3:
    .line 7
           0: new org/eclipse/swt/widgets/Display
           3: dup
           4: invokespecial org/eclipse/swt/widgets/Display/<init>()V
           7: astore_1
     
        .line 8
           8: new org/eclipse/swt/widgets/Shell
          11: dup
          12: aload_1
          13: invokespecial org/eclipse/swt/widgets/Shell/<init>(Lorg/eclipse/swt/widgets/Display;)V
          16: astore_2
     
        .line 9
          17: aload_2
          18: ldc "Hello, World"
          20: invokevirtual org/eclipse/swt/widgets/Shell/setText(Ljava/lang/String;)V
     
        .line 12
          23: new org/eclipse/swt/layout/FillLayout
          26: dup
          27: sipush 512
          30: invokespecial org/eclipse/swt/layout/FillLayout/<init>(I)V
          33: astore_3
     
        .line 13
          34: aload_2
          35: aload_3
          36: invokevirtual org/eclipse/swt/widgets/Shell/setLayout(Lorg/eclipse/swt/widgets/Layout;)V
     
        .line 15
          39: new org/eclipse/swt/widgets/Label
          42: dup
          43: aload_2
          44: sipush 2048
          47: invokespecial org/eclipse/swt/widgets/Label/<init>(Lorg/eclipse/swt/widgets/Composite;I)V
          50: astore 4
     
        .line 16
          52: aload 4
          54: ldc "Hello, SWT World!"
          56: invokevirtual org/eclipse/swt/widgets/Label/setText(Ljava/lang/String;)V
     
        .line 18
          59: aload_2
          60: sipush 640
          63: sipush 480
          66: invokevirtual org/eclipse/swt/widgets/Shell/setSize(II)V
     
        .line 19
          69: aload_2
          70: invokevirtual org/eclipse/swt/widgets/Shell/open()V
     
        Label1:
    .line 21
          73: aload_2
          74: invokevirtual org/eclipse/swt/widgets/Shell/isDisposed()Z
          77: ifne Label0
     
        .line 22
          80: aload_1
          81: invokevirtual org/eclipse/swt/widgets/Display/readAndDispatch()Z
          84: ifne Label1
     
        .line 23
          87: aload_1
          88: invokevirtual org/eclipse/swt/widgets/Display/sleep()Z
          91: pop
          92: goto Label1
     
        Label0:
    .line 27
          95: aload_1
          96: invokevirtual org/eclipse/swt/widgets/Display/dispose()V
     
        Label4:
    .line 28
          99: return
     
    .end method

    コンパイル&実行方法

    C:¥> java -jar jasmin.jar Hello.j
    C:¥> javaw -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  8. Hello, SWT(Fantom) World!

    Posted on 12月 27th, 2012 by cx20

    SWT(Fantom)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。
    以下は Fantom による SWT の使用例となっている。

    ソースコード

    using [java] org.eclipse.swt
    using [java] org.eclipse.swt.widgets::Display
    using [java] org.eclipse.swt.widgets::Shell
    using [java] org.eclipse.swt.widgets::Label
    using [java] org.eclipse.swt.layout::FillLayout
    using concurrent
     
    class Hello
    {
        Void main()
        {
            display := Display()
            shell := Shell(display)
            shell.setText("Hello, World")
     
            layout := FillLayout(SWT.VERTICAL)
            shell.setLayout(layout)
     
            label := Label(shell,SWT.BORDER)
            label.setText("Hello, SWT World!")
     
            shell.setSize( 640, 480 )
            shell.open()
     
            while (!shell.isDisposed())
            {
                if (!display.readAndDispatch())
                {
                    display.sleep()
                }
            }
     
            display.dispose()
        }
    }

    実行方法

    C:¥> fan hello.fan

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  9. Hello, SWT(Rhino) World!

    Posted on 12月 21st, 2012 by cx20

    SWT(Rhino)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。
    以下は Rhino による SWT の使用例となっている。

    ソースコード

    importPackage(org.eclipse.swt);
    importPackage(org.eclipse.swt.widgets);
    importPackage(org.eclipse.swt.layout);
     
    var display = new Display();
    var shell = new Shell(display);
    shell.setText("Hello, World");
     
    var layout = new FillLayout(SWT.VERTICAL);
    shell.setLayout(layout);
     
    var label = new Label(shell,SWT.BORDER);
    label.setText("Hello, SWT World!");
     
    shell.setSize( 640, 480 );
    shell.open();
     
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
     
    display.dispose();

    実行方法

    C:¥> jrunscript -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. hello.js

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  10. Hello, SWT(Tcl/Java) World!

    Posted on 12月 15th, 2012 by cx20

    SWT(Tcl/Java)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。
    以下は Tcl/Java による SWT の使用例となっている。

    ソースコード

    package require java
     
    java::import org.eclipse.swt.SWT
    java::import org.eclipse.swt.widgets.Display
    java::import org.eclipse.swt.widgets.Shell
    java::import org.eclipse.swt.widgets.Label
    java::import org.eclipse.swt.layout.FillLayout
     
    set display [java::new Display]
    set shell [java::new Shell $display]
    $shell setText "Hello, World"
     
    set layout [java::new FillLayout [java::field SWT VERTICAL]]
    $shell setLayout $layout
     
    set label [java::new Label $shell [java::field SWT BORDER]]
    $label setText "Hello, SWT World!"
     
    $shell setSize 640 480
    $shell open
     
    while { ![$shell isDisposed] } {
        if { ![$display readAndDispatch] } {
            $display sleep
        }
    }
     
    $display dispose

    実行方法

    C:¥> SET CLASSPATH=bsh-2.0b4.jar;org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;%CLASSPATH%
    C:¥> jaclsh hello.bsh

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+