Eclipseの利用履歴をとりたくなったので調べてみた。
今回やりたいことは
- Eclipseを使っている人の特定
- Eclipseの使っている回数などの統計取得
なので、起動時になんとかできんかなーと思ったんだけどなかなかない。
そこで考えたのが、Eclipse起動時にユーザ名とかパラメタを拾って、どっか統計取るページをブラウザで開いたらどうかなーと。
たとえば、Windowsのログインユーザ名とかだったらとれる気がするので、
https://daipresents.wordpress.com/toukei.jsp?user=fujihara
みたいにして統計をとれば、ブラウザを強制起動するだけでなんとかなる。Eclipseの起動用バッチファイルを作ってそれをたたいてもらうとか考えたけど、いきなりeclipse.exeをたたかれるとこまるわけだ。
そこで、Eclipseのプラグインを使い。Eclipse起動時に行う、プラグインの初期化処理にブラウザ起動をいれてみる。
プラグインの作成
今回はEclipse3.4を使っている。
Eclipseを開いて
新規>その他>プラグイン開発>プラグインプロジェクト
を選んで次へ。環境に合わせ、適当に進んでいくと「テンプレート」が選べるので、「Hello,World」テンプレートを選ぶ。
これを選ぶと、Eclipseのメニューに「サンプルメニュー」とかがでるようになり、その中にある「サンプルアクション」を選ぶと「Hello」というメッセージボックスが出るみたい。
今回は使わなくてもいいんだけど、サポートページとかプロジェクトのページ(Tracとか)のリンクを張るのもいいかもしんないので、そのままおいとく。
作んなきゃいけないのはこれで終わり。
実装
ウィザードで作成すると以下のクラスができるはず。
Activator.java SampleAction.java
Activator.java
これはプラグイン本体ぽい。このクラスで「org.eclipse.ui.IStartup」をimplementsしておく。このIFは起動時になにすんの?みたいなもののインタフェースらしい。
Eclipseの起動時にプラグインを全部動かすと、起動が重くなるので、このIFを実装したものだけ起動時に活性化してくれるらしい。
起動時にブラウザをちょろっと開いてほしいので、StartupインタフェースのearlyStartupメソッドに処理を記述する。
@Override public void earlyStartup() { String browserName = "C:\\Program Files\\Internet Explorer\\iexplore.exe"; String url = "http://www.google.co.jp/"; try{ Runtime.getRuntime().exec(new String[ ] {browserName, url}); }catch (IOException ie){ ie.printStackTrace(); } }
このメソッドを読んでもらうには、plugin.xmlにのplugin要素内に以下を記述する。
<extension point="org.eclipse.ui.startup"/>
これでプラグインの概要ページから「Eclipseアプリケーションの起動」を選べば、別Eclipseが開いてEclipse起動後にブラウザが立ち上がるはず。
でもActivatorのearlyStartupメソッドにかくと、Eclipseが開く前によばれるせいか、うまくブラウザが開いてくれないみたい。むむむー。
SampleAction.java
これはメニューの中にあるサンプルアクションがクリックされたときに実行されるものっぽい。runメソッドにメッセージボックスの記述があるので、それを書き換えてみるとよし。