XSWT使ってみた

ドキュメントだけ読んで分かったふりをするのも良くないので、ちょっとだけ XSWT を使ってみました。

XSWT は Eclipse プラグインとして提供されているので、アップデートサイト(http://xswt.sourceforge.net/updates )からダウンロードして Eclipse に組み込みます。

適当なプロジェクトを作って、新規ファイルの中から「XSWT file」を選択して xswt ファイルを作成。この段階で、こんな感じのテンプレートが表示されています。

<?xml version="1.0" encoding="UTF-8"?>
<xswt xmlns:x="http://sweet_swt.sf.net/xswt">
    <import xmlns="http://sweet_swt.sf.net/xswt">
        <package name="java.lang"/>
        <package name="org.eclipse.swt.widgets"/>
        <package name="org.eclipse.swt.layout"/>
    </import>
    <x:children>
        <composite>
            <layoutData x:class="gridData" grabExcessHorizontalSpace="true" grabExcessVerticalSpace="true" horizontalAlignment="GridData.FILL" verticalAlignment="GridData.FILL"/>
            <layout x:class="gridLayout" marginHeight="0" marginWidth="0"/>
            <x:children>
                <!-- Put your layout here -->
            </x:children>
        </composite>
    </x:children>
</xswt>

インポート文まであったりして、SWTの画面コードをそのままXMLにしたという印象。レイアウトの表現もかなり生です。

チュートリアルに従って、ボタンとラベルを作ってみます。

       <label text="Push this button:"/>
       <button text="Punch me!"/>

この辺は、S2JFace と同じですね。でも、エディタの補完は効かないようです・・・。S2JFaceEclipseWTP 付属の XML エディタを使えば、補完が効きます。

ちゃんとビューがついていて、xswt ファイルの内容がリアルタイムで実画面に表示されるのは◎です。S2JFaceGUI エディタでもこれはサポートしたいところ。

で、実際にプログラムから利用するにはどうするかというと、こんな感じで xswt ファイルをパースさせるようです。

XSWT.create(getClass().getResourceAsStream("HelloWorld.xswt")).parse(shell);

フレームワークというか、SWTの画面をXMLで記述するためのライブラリのようです。

S2JFace は XSWT の提供する機能を(おそらく)完全に含んでおり、さらに生産性を上げるためのデータバインディング等の機能を提供できることが、やはり大きな違いでしょう。

完全にかぶってなくて良かった・・・