2008年2月27日水曜日

JSR-295 デモ: ティッカーデモ (4)

JSR-295 Demo: Ticker Demoの日本語での説明です
その他の記事については以下を参照下さい

JSR-295 デモ: ティッカーデモ (1)
JSR-295 デモ: ティッカーデモ (2)
JSR-295 デモ: ティッカーデモ (3)


8. ティッカーデモの実行
プレビュー、またはフォームを実行すると、どのようにコンポーネントがバインドされたかが表示されます


プレビューはフォームツールバーからプレビューデザインアクションで起動します


フォームの実行はプロジェクトのコンテキストメニューから「実行」をクリック、またはShift F6 を押します


実行したデモのイメージはこのようになります

またフォームツールバーのソースをクリックし、どのように beans binding が実装されているかを確認できます



addBinding メソッドへカーソルを置き、ハイライトする事でバインディングがいかにシンプルに作成されているか、また initComponents() の最後の bindingContext.bind() をハイライトする事でバインディングがどこで実現されているかを確認する事ができます
例えば、テキストサイズとスライダをバインドするといった、「 ticker 」の他のプロパティとコントロールをバインドする事もできます

JSR-295 デモ: ティッカーデモ (3)

JSR-295 Demo: Ticker Demoの日本語での説明です
その他の記事については以下を参照下さい

JSR-295 デモ: ティッカーデモ (1)
JSR-295 デモ: ティッカーデモ (2)
JSR-295 デモ: ティッカーデモ (4)


5. JTextField へバインド


JTextField を選択し、プロパティウィンドウをバインドカテゴリへ切り替えます


text バインディングプロパティのとなりの 「...」 ボタンを押し、バインディングカスタマイザを起動します


「ソースをバインド」のリストから 「 ticker1 」を選択 、「式をバインド」のリストから「 label 」を選択し、「了解」ボタンをクリックします

6. JSlider へバインド


JSlider を選択し、コンテキストメニューから「バインド > value 」 アクションでバインドウィンドウを起動します


「ソースをバインド」のリスト「ticker1」 を選択、「式をバインド」のリストから 「speed」 を選択し、「了解」ボタンをクリックします

7. JCheckBox へバインド


JCheckBox を選択し、プロパティウィンドウをバインドカテゴリへ切り替えます


selected バインディングプロパティのとなりにある 「...」 ボタンを押し、バインディングカスタマイザを起動します


「ソースをバインド」のリスト「ticker1」 を選択、「式をバインド」のリストから 「quaredLeds」 を選択し、「了解」ボタンをクリックします

JSR-295 デモ: ティッカーデモ (4)

2008年2月26日火曜日

JSR-295 デモ: ティッカーデモ (2)

JSR-295 Demo: Ticker Demoの日本語での説明です
その他の記事については以下を参照下さい

JSR-295 デモ: ティッカーデモ (1)
JSR-295 デモ: ティッカーデモ (3)
JSR-295 デモ: ティッカーデモ (4)


4. ティッカーをコントロールする GUI コンポーネントの配置


「パレット」の中から「ラベル」を選択し、Ticker bean の下に置きます


その text を"Label:" に変更します


「パレット」の中から「テキストフィールド」を選択し、"Label:" ラベルのとなりへ配置、ラベルとベースラインをそろえ、サイズを調整します


更に「ラベル」を追加し、最初のラベルの下に置きます


その text を"Speed" に変更します


「パレット」の中から「スライダー」を選択し、"Speed" ラベルのとなりへ配置します


「パレット」の中から「チェックボックス」を選択、他のコンポーネントの下へ配置します


その text を "Squared LEDs" に変更します

JSR-295 デモ: ティッカーデモ (3)

JSR-295 デモ: ティッカーデモ (1)

Geertjan 氏の Blog の記事でも取り上げられています、JSR-295 Demo: Ticker Demoの日本語での説明です
(元記事に大して多くの補足や意訳を入れましたので翻訳とせずに説明としました)
氏は、小さいがとてもパワフルなデモであると紹介しています
ちょっと長い記事になりますので、複数の投稿に分けてあります
その他の記事については以下を参照下さい

JSR-295 デモ: ティッカーデモ (2)
JSR-295 デモ: ティッカーデモ (3)
JSR-295 デモ: ティッカーデモ (4)


□ 動作環境
NetBeans 6.0 M10 以降
Ticker bean (そしてその BeanInfo) はコンパイル済プロジェクト (または Palette にインストールされた状態) で利用可能となります
NetBeans Wiki よりプロジェクトファイルをダウンロードし、開きます


開いたプロジェクトを選択、右クリックを押して表示されたコンテキストメニューより「構築」を選択し、ビルドを行います
※ここでビルドを行わなかった場合、後の処理でエラーが発生しますので、必ずビルドを行うようして下さい


□ ステップ
1. 新規 JFrame の作成

メニューより「ファイル > 新規ファイル ...」をクリックすると「新規ファイル」ウィンドウが表示されます


新規ファイルウィンドウにて「 Swing GUI フォーム... > JFrame フォーム」と選択し、「次へ」ボタンをクリックします
「新規 JFrame フォーム」ウィンドウに切り替わります


クラス名に "TickerFrame"、パッケージを "ticker" として「完了」ボタンをクリックします
(その他はデフォルトのままで構いません)


デザイナーウィンドウが開き、新規 JFrame が表示されます

2. Ticker bean の配置


デザイナーの左上部へ Ticker bean をドラッグアンドドロップします

3. Ticker bean のリサイズ


'YOU FORGOT' ラベルが表示されるよう Ticker bean の右端をリサイズします

※ フォームツールバーにて左-右矢印を押す事で Ticker bean をリサイズ可能です

JSR-295 デモ: ティッカーデモ (2)

2008年2月20日水曜日

NetBeans IDE 6.0 の10の便利なエディタショートカット

プラネット NetBeans に登録頂きましたので、記念投稿です
(片貝さん、登録ありがとうございます)

今回の内容は Geertjan Wielenga 氏の"10 Handy Editor Shortcuts in NetBeans IDE 6.0"という記事を紹介したいと思います
(Geertjan Wielenga氏より画像の使用を含め、公開の許可は頂きました。Thank you, Geertjan.)
なお、訳してはみましたが、結構誤訳も多いと思いますので、ご指摘頂ければ幸いです
(特に関係代名詞あたりがグズグズかと…)


以下は、それらを知ったらそれ無しではプログラマはやっていけないほどのクールな多くの NetBeans IDE 6.0 キーボードショートカットのいくつかです
それらのすべてが 6.0 での新しいものではなく、いくつかは以前からあるものですが、よく見落とされがちなので取り上げるに値します

1. 移動/コピー アップ/ダウン

Ctrl-Shift-Up を現在の選択位置の真上に行コピーを行います
Ctrl の代わりに Alt を押すとコピーの代わりに移動します
Up の代わりに Down を押すと、以下のようにコード行は現在の選択位置の下にコピーされます:



2. 内側、または外側の構文要素の取得

Alt-Shift-ピリオドを押す度に選択範囲は継続的により広い構文要素へ広がります
例えば、以下のある構文を選択し、Alt-Shift-ピリオドを押すとブロック構文に囲まれた完全な内容が選択されて表示されます
選択範囲は現在の構文から囲んでいるブロック構文、メソッド、そしてそこから囲んでいるクラス、そしてより広範囲へと広がります
継続的に選択範囲を縮小するにはAlt-Shift-ピリオドの代わりにAlt-Shift-カンマを押して下さい



3. 雛形コードの生成

コンストラクタ、getter、setterなどの一般に必要とされるコードを生成したいとき、単にAlt-Insertを押すと小さなポップアップが表示され、リストからアイテムを選択することができます:



4. インプレイスリネーム

コード中に2回以上使われている変数、メソッド、またはその他の項目を変更したい場合、Ctrl-Rを押すと以下に示すようにすべての項目のインスタンスが同時に青色に変わるのがわかるでしょう
選択された項目を変更すると、エスケープキーが押されるまでその他のすべてのインスタンスが同時に変更され、押された時点でインプレイスリネームモードは終了します



5. コメント行の追加/削除

1行以上を選択し、Ctrl-/ を押すと選択行が以下に示すようにコメントアウトされます再度同じキーを押すとコメント行はもうコメントではなくなります
これはもちろん以前のリリースでも可能でしたが、以前にあったのは1つがコメント、1つがコメント解除という2つの異なるショートカットでした
現在、それらは1つのショートカットに統一され、コメント、コメント解除を手早く切り替えることができるようになり、これによりこの操作をより早く、より効率的にします



6. メンバーや階層の検査

現在のクラスのメンバーとその階層の両方を表示し、またフィルタリングすることができます
Alt-F12 を押すと現在のファイルの上位のものが表示されます
これとは別に Ctrl-F12 を押すと、ここにあるように現在のファイルのメンバーが表示されます:


7. ドキュメント間の切り替え

複数のドキュメントを同時に開いている場合、Ctrl -Tab を押すと小さなポップアップが現れます
ポップアップはスクロールすることができ、そしてそのポップアップにはすべての開かれているドキュメントが表示されており、開きたいドキュメントを選択することができます:



8. 最後の編集箇所へのジャンプ

あるドキュメントを編集した状況にある一方で、現在全く異なるドキュメント内にいることに気付くということはよくあることです
どのようにして最後に編集したコードの場所に戻りますか?
それ以上の編集をするために戻りたい場所であるかと思われます
Ctrl-Q が押されると常に最後に編集されたドキュメントを見付け、最後に編集した箇所の行にカーソルを置きます
代わりに以下に示す、ソースエディタの右上角にあるボタンをクリックすることでも可能です:



9. ブックマーク

Ctrl-Shift-M を押したとき、現在の行が"ブックマーク"されます
これが意味するのは後にそれへ素早く(Ctrl-Shift-ピリオド / Ctrl-Shift-カンマで)サイクルバック/フォワードできるという事です
Ctrl-Shift-M がその行で押され、ブックマークが削除されるまで、以下に示すようにブックマーク行には小さなアイコンが左サイドバーに付きます:



10. 出口点のハイライト戻り値の型にカーソルを置くとすぐにすべての出口点がハイライトされるのがわかります:

2008年2月15日金曜日

Advanced OptionのGLF Nodeについて

Generic Languages Framework(GLF)のTutorialページにあるAdvanced Optionsに関する記述ですが、最新安定版の6.0.1にはまだ実装されていません
そこで6.1M1を見てみるとありました


※6.0.1(--locale C)のAdvanced Optionsキャプチャ


※6.1M1のAdvanced Optionsキャプチャ

TokenViewやAST Viewなども6.1M1の「Window > Other」メニューの中にありました

2008年2月13日水曜日

ANTLRの文法ファイル(.g)をNetBeans Scriptingファイル(.nbs)に変換する

今回はANTLRの文法ファイルをNetBeans Scriptingファイルへ変換するこの記事を元に書いています
※本家でもNBSをNetBeans Schliemannとしたり、NetBeans Scriptingとしたりと混在していますが、ここでは後者を採用して説明します
なお、以降の手順で変換は正しく行われるかと思いますが、生成されたファイルがそのまま使えることを保証するものではありません
個人的には参考として見る程度のものと思っています
(変換元の文法ファイルの質によるかもしれませんが)

それではまず、ANTLRを入手します
ANTLRは最新(08年02月現在)の3.x系ではなく、2.x系を使います
ココからダウンロードして下さい
今回は"antlr-2.7.7.tar.gz"を使用して解説します
ダウンロードしたファイルを適当な場所に展開して下さい
(以降、展開したディレクトリを説明上"srcdir"とします)
$ tar xvfz antlr-2.7.7.tar.gz


次にNBSファイルへと変換するプログラムをダウンロードします
上記記事内の「Can you share the code of your NBS generator with us?」の項にあるリンクより"NBSCodeGenerator.java"ファイルをダウンロードして下さい
ダウンロードしたファイルは展開したディレクトリ内のantlrディレクトリへ移動します
$ mv NBSCodeGenerator.java ${srcdir}/antlr

次は記事中にある通り、antlr.Tool.javaを修正します
$ vi ${srcdir}/antlr/Tool.java

修正箇所は以下の通りです
(太字が追加(or 修正)箇所になります)

1. NBS生成のためのフラグを追加
/** Generate HTML vs code? */
boolean genHTML = false;
/** Generate NBS vs code? */
boolean genNBS = false;

2. 新たに"-nbs"引数を認める処理を追加
else if (args[i].equals("-nbs")) {
    genNBS = true;
    genDiagnostics = false;
    setArgOK(i);
}

3. "genNBS"がセットされた際に言語形式の"NBS"を返す処理を追加
if (genHTML) {
    return "HTML";
}
if (genNBS) {
    return "NBS";
    }

4. おまけにusageも追加します
(これは変換処理に関わる修正ではありませんので、追加は自由です)
System.err.println(" -html generate a html file from your grammar.");
System.err.println(" -nbs generate a nbs file from your grammar.");

antlr.Tool.javaの修正は以上ですが、先に追加した"NBSCodeGenerator.java"がmake実行時にコンパイルされるようmakeファイルを修正する必要があります
$ vi ${srcdir}/antlr/Makefile.in

修正箇所は下記の通りです
@abs_top_srcdir@/antlr/HTMLCodeGenerator.java ¥
@abs_top_srcdir@/antlr/NBSCodeGenerator.java ¥


以上で準備ができましたので、makeします
$ ${srcdir}/configure
$ make
$ make test # オプション
$ su root # オプション
$ make install

makeが正常に終了し、インストールが完了したら、早速変換を行ってみます
なお、インストールディレクトリは/usr/local以下として説明します

まずはCLASSPATHを通します
$ CLASSPATH="/usr/local/antlr/lib/antlr.jar":$CLASSPATH

"-nbs"オプションをつけて文法ファイルからNBSファイルへ変換させます
$ java antlr.Tool -nbs java.g
ANTLR Parser Generator Version 2.7.7 (20080213) 1989-2005
Generating JavaRecognizer.nbs
Generating JavaLexer.nbs

先述の通り、生成されたNBSファイルがそのままNetBeansモジュール開発の言語サポートで使っても文法エラーが頻発する場合が多いので、これを元にするか、参考にして新規でNBSファイルを作るのが現実的だと思います

2008年2月11日月曜日

Mercurialを使う

NetBeansのソース管理が完全にMercurialへ移行したということで、Mercurialを使って最新のソースを取得してみます
MercurialはPythonで作られていますので、まずPythonがインストールされているかを確認します

$ python -V
Python 2.5.1

Mercurialは2.3以上のPythonが必要とされているとのことですが、条件はクリアされているようです
次にMercurialをインストールします

$ sudo port install mercurial
$ hg --version
Mercurial Distributed SCM (version 0.9.5)

Copyright (C) 2005-2007 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

これでこのままコマンドラインにて最新ソースを取得できるのですが、せっかくですのでNetBeansのプラグインを利用してみようかと思います

メニューの「ツール」から「プラグイン」とクリックし、表示されたプラグインウィンドウの「使用可能なプラグイン」項目から「Mercurial」をチェックしてインストールします

インストール後、「バージョン管理」に「Mercurial」という項目が追加されています
このときMercurialのバージョンが0.9.5以降だと以下のようなメッセージが表示されます

とりあえずは気にせずに「はい」を選択します
(Wikiでは0.95の使用を推奨しているのですが…)

「Mercurial」のメニュー中から「Clone Other...」を選択します(初期状態ではこのメニュー以外は非アクティブかと思いますが)
選択するとリポジトリを設定するウィンドウが表示されます

"Repository URL"の項目に"http://hg.netbeans.org/main/"と登録します
次にローカルディレクトリを設定します

Mac特有の問題のようですが、ここでこのまま実行すると「abort: unknown encoding: X-MAC-JAPANESE, please check your locale settings」というエラーが発生し、うまくコピーされず終了します
いろいろ調べて、環境変数に"HGENCODING"などを設定するも改善されず…
取り敢えずは"~/.hgrc"に下記のように追加することで上記エラーがでなくなりました
$ vi ~/.hgrc

[ui]
username = hoge

[defaults]
add = --encoding=utf-8
clone = --encoding=utf-8
commit = --encoding=utf-8
init = --encoding=utf-8
pull = --encoding=utf-8
push = --encoding=utf-8
remove = --encoding=utf-8
revert = --encoding=utf-8
update = --encoding=utf-8

[extensions]

cloneに必要なものはclone項のみですが、その他も今後を考えて一応書いています
(別なもっとスマートな方法があればそちらに切り替えます)

ローカルコピーに時間がかかりますが、終了すると指定のディレクトリにソースが展開されています
以降ビルドなどはココを参照下さい

【08/09/14 追記】
Macportsからインストールした場合、Mercurialサポートのマージが正しく動かないようです
公式パッケージの利用、または環境変数を設定することで対応可能です
詳細はコチラを参照ください

2008年2月8日金曜日

NetBeans IDE 6.0.1 リリース

致命的バグの発見やサーバーのダウンなどで遅れていましたが、何とかリリースできたようです
例の如くスプラッシュのキャプチャです

翻訳作業、本当にお疲れさまでした
なお、Mac OSXをお使いの方でニーモニックが気になる方は別途日本語パックを適用下さい
適用方法はココココを参照下さい