SWT でついったークライアント書いてみようとしてみた

SWT は Standard Widget Toolkit の略で何が Standard なのか分からないけど*1ウィジェット・ツールキットの 1 つだよ。
Eclipse に使われてるウィジェット・ツールキットとして有名だね。
っていうか、他のソフトにも使われ…てるんだよね?*2

えーとね、SWT は X っぽいなーって思った。
いやまあ、Display クラスがあるからだと思うけど。
これがまた分り易いかと思えば WindowsForms とか GTK+ とかとはちょっと違うので分かり難い。
まあとりあえず窓を表示するところからやってみよう。
元のソースはここ[github.com] にあるよ。

Display display = new Display();

まずは Display オブジェクトを作成するよ。
Display オブジェクトは Shell オブジェクトを作成するのに必要なんだけど、Shell クラスって何だと思う?

そう、Shell はウィンドウだ。
次は Shell オブジェクトを作るよ。

Shell shell = new Shell( display );

やあ(´・ω・`)
この Shell オブジェクトはサービスだから落ち着いて生成して欲しい。
うん。これだけなんだ。
もっと大掛かりなものかと思ったかね?
このソースはサンプルだからウィジェット少ないけど、多いとめんどいんだぜ?
よーし、次は Shell オブジェクトの設定を行うよ:

shell.setText( "Window Sample1" );  // ウィンドウのタイトルを "Window Sample1" にしとく。
shell.setSize( 300, 200 );          // ウィンドウのサイズを 300x200 にするんだと思います。

みりゃわかると思うけど、コメントつけておいたよ。
まあ、なくてもいいんだけどね。
次はウィンドウを開くよ。

shell.open();

さっさとイベントループに行こう:

while ( !shell.isDisposed() ) {
    if ( !display.readAndDispatch() ) {
        display.sleep();
    }
}
display.dispose();

まあ、あれだよ。
これもみりゃわかる。
ウィンドウ閉じる時に dispose メソッド呼ばないといけないんだけど、ウィンドウは閉じるときに dispose() されるだろうし、
残るは display だけって感じなのかな。

つーことで、エントリタイトルの SWT にしか触ってないけどまあいいや。

*1:Simple Widget Toolkit の方がしっくりくると思う

*2:使われているらしい…