サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
yoichiro.cocolog-nifty.com
【追記(2004.09.03)】 Eclipse3.0からは「エディタを開く Part2」のやり方を参考にしてください。 通常エディタは,Package Explorer上などでユーザがダブルクリックなどの操作を行うことで開かれる。しかし時には,プラグインが自動的にエディタを開いてどうのこうの・・・,という動作をしたいこともあるだろう。ここでは,プログラム上で何らかのファイルをエディタで開くための方法を紹介する。 最初に,エディタで開きたいファイルをIFileオブジェクトの形で取得する。例えば「コンテキストメニューへのアクションの追加」のやり方でobjectClass属性にIFileを指定し,アクションクラス内で選択されたIFileオブジェクトを取り出す,などが代表例。これについてはさまざまな方法が考えられるので,取得方法は割愛する。 エディタで開きたいIFileオブジェクトが取得できたら
新規ビルダーの定義を行った際,ビルダーのクラスの中でbuildメソッドが登場した。そのメソッドのシグネチャは, protected IProject[] build( int kind, Map args, IProgressMonitor monitor) throws CoreException; となるが,第1引数のint kindって一体何なのだろうか。 突然だが,Javaプログラムの開発をJDTを用いて行っている場合,プログラミング作業に不可欠なコンパイル作業を明示的に行う必要がない。JDTで提供されるJavaビルダーが自動的にコンパイル作業を行ってくれている。 この際,Javaプロジェクト内のすべてのソースコードに対してコンパイルを行っているかというと,ほとんどの場合そうではない。ソースコードというリソースについて,変更が生じたリソースのみをコンパイルするようにJavaビルダー
もう3ヶ月近く前になるが,2004年5月24日に「エディタを開く」という記事を書いた。あるファイルをプラグインのプログラム内からエディタを使って開くための方法を紹介したのだが,当時はEclipseのバージョン2.1.3を対象にしていた。6月に入ってEclipseのバージョン3.0が公開されたわけだが,実はEclipse3.0になってからいくつかのAPIが廃止あるいは非互換になっている。どんなAPIが対象化というと,Eclipseのヘルプの中の, 「Platform Plug-in Developer Guide」→「3.0 Plug-in Migration Guide」→「Incompatibilities」 を見れば非互換になったものを把握することができる。これを見てみると,「エディタを開く」で紹介したIWorkbenchPage#openEditor(IFile)メソッドが,見事に廃
ほとんどのソフトウェアが必ずといっていいほど行っている処理として,ファイルの作成があげられる。一番手軽な情報の永続化の方法である。今回は,プラグイン内で,あるプロジェクトまたはフォルダにファイルを作成するための方法を紹介する。 Eclipseでは,ファイルなどのリソースは「ハンドル」と呼ばれる識別子で表される。ハンドルはリソースの実体に関する情報を持つものだが,実体がなくても(あたかも実体があるかのように)作成することができる。ファイルの作成は,作成したいファイルのハンドルを作成し,そのハンドルに対して作成を指示する,という手順になる。 まずはソースコードを紹介しよう。 IContainer container = ...; // IProjectまたはIFolderオブジェクト IFile file = container.getFile(new Path("hoge.txt")); S
現在のEclipseの最新リリースバージョンは2.1.3であり,僕もそのバージョンを使っている。今までの記事はすべて2.1.3を対象にしたものである。しかし,もしかしたら「TableViewerのホントの利用方法」で取り上げた例について,古いバージョンのEclipseを使用していた場合に「動かないじゃん!」ってなった人がいるかもしれない。実は,「TableViewerのホントの利用方法」でのコーディング例の中で,非常に危険な部分が存在している。ContentProvider内でTableViewerにドメインモデルを反映している部分(employeeAddedメソッド内のTableViewerに対するaddメソッド呼び出し)で,例外が発生してしまう可能性があるのだ。 では,実際にわざと危険な状況を作ってみる。「TableViewerのホントの利用方法」の中で取り上げたDivisionCon
予告していたIP Messenger for Eclipseだが,アップデートサイトに配置し,公開を開始した。 update-site: http://www.eisbahn.jp/update-site/ 今回の公開は,とりあえず「ちゃんと作ってますよ」というメッセージをこめて,バージョン0.0.0で公開することとした。つまり,使い勝手はもちろん,ニックネームの設定もできず,機能も不足していることを完全に自覚した「お試しバージョン」として捉えて欲しい。 なので,Eclipse3.1+JDK1.5.0_04(Windows, Linux)の組み合わせでしか動作確認をしていない。JDK1.4.2シリーズでもうまくいくとは思うけど,もしうまく動作しなかったらコメントを寄せて欲しい。 IP Messengerビューとして作成してあるので,[Windows]-[Show View]メニューで「Ot
Eclipseにおいて,発生したエラーの状況がIStatusオブジェクトによって表現され,CoreException例外にIStatusオブジェクトが保持されて伝達される(「CoreExceptionとIStatus」参照)。そして,IStatusオブジェクトの内容をエラーダイアログに簡単に表示することができた(「エラーダイアログの表示」参照)。 しかし,エラーダイアログが表示できない(表示することがふさわしくない)状況も当然存在する。そんなときに頼るのがロギング。ちゃんと起きたことは残しときましょう,という機構。エラーダイアログは閉じてしまえばそれまでだが,同時にログに記録しておけば,ログをクリアしない限りいつでも見ることができるようになる。 IStatusオブジェクトがエラーダイアログに統合され簡単に表示できたように,IStatusオブジェクトの内容をログに記録することも簡単にできるよ
Eclipseでは,ウィザードやプロパティ編集のためのダイアログが標準でいくつか準備されている。しかし,ダイアログを自作したいときも出てくるだろう。今回はカスタムダイアログの作成方法について紹介する。 ダイアログの作成は,SWTのDailogクラスを拡張する方法と,JFaceのDialogクラスを拡張する方法の2種類がある。JFaceの方がもちろんダイアログを作りやすくしてくれているので,JFraceのDialogクラスを用いる。自作ダイアログは,Dialogクラスを継承して作成する。 public class MyDialog extends Dialog { public MyDialog(Shell parent) { super(parent); } protected Point getInitialSize() { return new Point(400, 300); } p
ユーザインタフェースを操作する処理を一定時間ごとに繰り返し行いたい場合,スレッドを使うのが一般的である。しかし,普通に自前で生成したスレッドからはSWTのUIコンポーネントを操作することができないために,DisplayクラスのsyncExec()やasyncExec()を使用する必要がある。ある間隔を持って処理を繰り返し行う場合は,Thread.sleep(500)というようにしてスレッドの実行を停止させることが思いつく方法だが,SWTではOSのタイマーイベントを使用する方法が提供されている。 OSが持つタイマーイベントを利用するには,DisplayクラスのtimerExecメソッドを使用する。 Runnable runnable = new Runnable() { public void run() { // 繰り返し行いたい処理 Display display = ...; if (
プログラムの内部動作というのは,なかなか表向きからはわからない。原因不明のバグも1,2件はめずらしくない。開発途中であれば,開発者が内部の動作状況をトレースするためのコードを埋め込んで検証したりすることは容易だが,一旦リリースしてしまった後となると検証を行うことは非常に難しくなる。リリース時にデバッグ用コードをプログラムから削除してしまうことが多いからだ。 J2SEの1.4から追加されたアサーション機構は,VMの起動時にそれを有効にするかどうかを切り替えられる。それと同じように,プラグインを試験するためのRun-time Workbenchでは,トレース機能などのデバッグ用コードを有効にするかどうかを切り替えるための機構が備わっている。 Eclipseを構成するプラグインをいろいろ覗いていくと,.optionsという名前のファイルを持っているのがわかる。この.optionsファイルには,各
分野別に記事の題名のリストを作ってみました。ブログのようでブログでないこのブログ(?)を参考に,Eclipseプラグイン開発に興味を持ってもらえると嬉しい限りです。 【公開プラグイン】 翻訳ビュープラグイン (2004.11.03) 翻訳ビュープラグインをバージョンアップしました (2005.03.20) IPMessengerプラグイン作ってます!(2005.09.05) IPMessengerプラグイン公開開始しました(2005.09.18) 早速バグ発見(IPMessengerプラグイン:コア)(2005.09.19) sourceforge.jpはじめました(ipmsg4e)(2005.10.01) 【リッチクライアント】 最初のリッチクライアント(1) - プラグイン・マニフェストの作成 (2004.07.01) 最初のリッチクライアント(2) - クラスの作成 (2004.07
翻訳プラグインの超マイナーバージョンアップのお知らせを久々にエントリしたこのブログ。気がつけば,10万件アクセスを突破した。着実にEclipseプラグイン開発が広がりを見せている証拠だと思う。非常に嬉しい限りだ。 さて,最近の自分といえば,Eclipseプラグインから離れていた・・・わけではなく,新プラグインの開発を虎視眈々ともくろんでいた。そしてついさっき,基本的な機能が動き出したので,ここで紹介しようと思う。 今僕は,IPMessengerのEclipseプラグイン版を開発している。その画面イメージは以下のような感じだ。 左側にメンバーの一覧とメッセージの入力エリア,右側に送受信履歴とメッセージの表示エリアを配置している。[送信]ボタンを配置すると場所をとってしまうので,入力エリアで「Ctrl+Space」キーを押すことで送信できるようにしている。送信したメッセージが開封されたときは,
このページを最初にブックマークしてみませんか?
『yoichiro.cocolog-nifty.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く