Eclipse

プラグインExportの自動化

自作プラグインの出力は、マニフェストエディタのexportのウィザードでできるけど、 Antからでも実行することができる。 でも、実行する際にちょっとハマったのでメモっとく。 Exportのウィザードの画面で、OptionsのSave as Ant scriptにチェックをつけると…

Eclipseの変わった起動オプション2

前回に引き続き、ぼーっとヘルプを見ていたら発見した。 -showlocation [ほげほげ] ウィンドウのタイトルバーに、ワークスペースのパスが表示されるようになる。 ほげほげを指定すると、その文字が表示されるようになる。 ただそれだけ。 複数Eclipseを起動…

IWorkspaceの取得方法

地味にわからなかった・・・ IWorkspace workspace = ResourcesPlugin.getWorkspace(); 前に使ったことあるのにorz

デバッグ時のCollectionの中身の確認

Eclipseでデバッグをする際、インスタンスの中身を確認したいときがある。 でも、Collection系のインスタンスをビューで確認するのは、すごーくつらい。 というのも、変数ビューはCollectionの実装クラスの内部構造をまともに表示してくれるので、 単純に保…

エディタで指定行を開く

前回の日記であんなこと書いたけど、ふつーにできるっぽい。 というわけで、Eclipse上のとあるファイルを指定した行で開く方法。 とりあえず試したのは、次の2種類。他にもあるのかも。 マーカーを使う 無理やり?ジャンプする マーカーを使う エディタを開…

プラグインからエディタを開く

プラグインからエディタを開く場合は、IDE#openEditorを使う。 IFileしか指定しない場合は、デフォルトのエディタで開かれるっぽい。 IMarkerを指定すると、エディタを開いて該当行を表示してくれる。 逆に、IMarkerを指定しなくても、該当行を指定したいん…

IPartListenerとIPartListener2

ViewやらEditorやらを開いたり閉じたりしたことを 知らせてくれるリスナーとして、IPartListenerというのが用意されている。 で、なぜかIPartListenerとIPartListener2という2種類がある。 機能的にはIPartListener2の方が多くなっており、 IPartListener2の…

自プラグイン内にあるフォルダの取得

あってるのかよくわかんないけど、自分のプラグインフォルダとか その中にあるフォルダの取得方法。 自プラグインフォルダの場合 URL url = getDefault().getBundle().getEntry("/"); try { URL dirUrl = FileLocator.toFileURL(url); File file = new File(…

プラグインからType Hierarchy

っぽいことができる。というか、まんまType Hierarchyなのかな。 使用するメソッドは、IJavaProject#newTypeHierarchy。 引数は IType:階層化する型 IRegion:階層化する対象 戻り値はITypeHierarchy(まんまじゃん)。 特定ソースフォルダ配下のテストケー…

Eclipse起動時にプラグインクラスも有効化する

プラグインクラスは、(設定によるけど)プラグインに含まれるクラスが ロードされた際に、一緒に有効化される。 普通にEclipseを起動しただけでは、プラグインは有効になっていない。 なので、Eclipse起動時から裏である処理をさせる、といったことをするに…

パースペクティブを初期状態に・・・。

例えば、Javaパースペクティブを使っていて、 アウトラインやらパッケージエクスプローラーといったViewを 閉じてしまったんだけど、元にもどしてーって時のために。 Eclipse右上のパースペクティブのアイコンを 右クリック>リセットとやれば、初期状態?に…

Eclipseを英語のまんま使う

英語に慣れるために、普段からEclipseをローカライズしないで使っていたけど、 色んなプラグインをインストールすると、あるプラグインだけ日本語で 表示されたりして、かなり気持ち悪い。 でも、こういったプラグインは、自身で日本語用プロパティファイル…

Javaのバージョンではまる

またしょーもないとこでハマったので、メモ。 EclipseのプラグインをJDK1.4でコンパイルしてエクスポートしても、 JDK1.4で起動したEclipseでUnsupported major.minor version 49.0と出て 動作しない。 すげー悩んだ結果。 プロジェクトのライブラリは1.4だ…

自分のプラグインフォルダにあるアイコンの取得

プラグインのアイコンなどは、plugin/iconsに入れておくことが多いみたいだけど、 ここにあるアイコンの取得方法。 ImageDescriptor id = AbstractUIPlugin.imageDescriptorFromPlugin( YkhrPlugin.PLUGIN_ID, "icons/hoge.gif"); で、このような便利メソッ…

Eclipse3系のアイコンを2系ベースに・・・

Eclipse2系は実行関連のアイコンがカッコイイ走る人だったのに Eclipse3になって再生ボタンみたいなチンケのに変わりやがって、 すげー気にくわねーよ!!! って人がいたかどかは知らないけど、偶然発見したツール。 Eclipse Icon Patcher Eclipse3系のアイ…

プラグインからのログ出力

プラグインからログ出力する際は、ILogというクラスを利用する。 ILogは、org.eclipse.core.runtime.Plugin#getLogで取得できる ILog log = YKHRPlugin.getDefault().getLog(); ログ出力は、ILog#log(IStatus)を使う。 # Statusのコンストラクタの第3引数の…

.metadata/.plugins/・・・の取得

Eclipseのワークスペースには、.metatdata/.pluginsフォルダがあって プラグイン毎に設定だとか一時ファイルの保存なんかに使われている。 ここのパスの取得方法。 IPath path = YkhrPlugin.getDefault().getStateLocation(); File file = path.toFile()こん…

SWTでTree+TableLayout

Eclipse3.2のProbrems Viewみたいな感じのやつ。 ベースはツリーなんだけど、表で表示される。 で、けっこういい雰囲気だったので自作プラグインで使ってみたら、 Eclipse3.2からしか使えなかったっぽい。 Eclipse3.1にプラグインを入れたら、怒られたよ・・…

IJavaElementからIResourceの取得

今までこーやってた。 IJavaElement element = ・・・; IResource resource = (IResource) element.getAdapter(IResource.class);getAdapterとかキャストとか、いちいちめんどくせーとか思ってた。 よくよく調べてみると、IJavaElementインタフェースに こん…

NLS

とあるプラグインのソースを見ていて、ある要素をCtrl+左クリックしたら、 なぜかプロパティファイルにジャンプしたので、ちょっとちびった。 普通はJavaファイルとかに飛ぶはずなのに、なぜプロパティファイルに 飛ぶんだろーと思って調べていくと、プロパ…

マーカーの削除の検知

IMarkerが、ユーザの操作とかIResource#deleteMarkersとかで 削除されたときを知る方法。 通知してもらえるようにするには、IResourceChangeListenerを しかければよい。 ResourcesPlugin.getWorkspace().addResourceChangeListener(new HogeListener());// …

続・Eclipseのコンパイラでコンパイル

前にやったときでは、Eclipseのpluginフォルダから取り出して それを解凍してうんたらかんたら・・・ってやってたんだけど、 いつのまにやら、コンパイラ単体でも配布されてた。 落とすところは、Eclipseのダウンロードページの"JDT Core Batch Compiler" と…

JDT系のアイコンって

internal系のクラスを使わないととれねーと思ってたら、 ふつーに取得できた・・・。 ISharedImages sharedImages = JavaUI.getSharedImages(); Image image = sharedImages.getImage(ISharedImages.XXX_YYY_ZZZZ);ISharedImagesは、org.eclipse.ui.ISharedI…

出力フォルダの取得

今までは、IJavaProjectからクラスファイルの出力フォルダを取得できた。 IJavaProject project = ・・・ IPath outputPath = project.getOutputLocation(); でも、この日記の通り、ソースフォルダ毎に出力フォルダが指定できるようになったので、 これだと…

マーカー

ProblemViewに出るエラーとか、TODOのタスクなんかは、 すべてIMarkerというクラスで表現されている。 IMarkerは、次のようなメソッドで操作できる。 生成 IResource#createMarker 検索 IResource#findMarker IResource#findMarkers 削除 IResource#deleteMa…

//$NON-NLS-1$って?の続き。

前の日記でわからなかったこの部分。 //$NON-NLS-n$ nは「そのストリングのコード行内での 1 をベースにした指数です」 こーゆー意味みたい。 String str = "a" + "b" + "c"; //$NON-NLS-1$ //$NON-NLS-3$こうすると、"b"だけがチェック対象になる。 なるへ…

//$NON-NLS-1$って?

Eclipseのプラグインのソースを見ていると、 たまーにこのような記述がある。 //$NON-NLS-1$ これってなんだろーと思いつつ、いっつもスルーしてけど、 ぼーっとヘルプを見ていたら答えがありました。 Eclipseは、コンパイラのオプションで外部化していない…

viewの表示とか取得とか

ホントはnullチェックが必要な気がするけど、こんな感じ。 IWorkbenchPage page = YKHRPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();// viewの表示 page.showView("ykhr.testView");// viewの取得 YKHRView view = (YKHR…

自作プラグインのテストとプラグインプロジェクト

自作プラグインのテストをplugin.xmlから実行すると、 ワークスペースにあるすべてのプラグインのプロジェクトすべてが 読み込まれているような気がする。 該当のplugin.xmlのプロジェクトのみロードしてくれるように してほしいんだけど、できないのかなぁ…

ロック

とある処理の中で、ある部分だけは1スレッドのみ実行させたい、 といった時のために、ロックという仕組みが用意されている。 使い方はこのようになる。 private static final ILock lock = Job.getJobManager().newLock();public void method() { try { lock…