Webブラウザの起動

Webブラウザコンポーネントの利用」エントリで紹介したように,EclipseプラグインのViewなどにBrowserコンポーネントを貼り付けることで,効果的なEclipseプラグインを低コストで開発することができるようになる。「〜clipseな技術」の第2弾として,Webブラウザの起動方法について紹介してみたい。

何らかのWebサービスを利用したEclipseプラグインでは,Webサービスの提供元のWebページをWebブラウザ(not Browserコンポーネント)でブラウジングしたくなる局面がしばしば発生する。この場合,Eclipseプラグイン内の何らかのUIを操作した結果として,直接Webブラウザを起動して,該当のWebページにアクセスさせれば,利便性の向上につながる。

Eclipseは,もちろんWebブラウザの起動をAPIレベルでもサポートしている。実際には,2種類のサポートが実装されている。

  • パースペクティブ内で,ViewまたはEditorとしてWebブラウザを起動する。

  • 外部のWebブラウザアプリケーションを起動する。

1つ目の方法は,OSによっては実現できない。少なくともWindowsとMacOSXでは大丈夫。それぞれAPIの叩き方が異なるため,1つずつ見ていこう。

最初のパースペクティブ内でWebブラウザを開くパターンだが,これは「内部Webブラウザを開く」という表現である。Package ExplorerでHTMLファイルをダブルクリックした際に,テキストエディタではなく,この内部Webブラウザが起動してしまった経験をお持ちの方も多いことだろう。拡張子がhtmlなファイルをPackage Explorer上で右クリックし,[Open With]メニューに「Web Browser」と表示されているものが,それである。これを行った際に,Webブラウザアプリケーションが起動してしまった場合は,内部WebブラウザがサポートされていないOSか,[Window]-[Web Browser]メニューで「Internal Web Browser」以外が選択されているかのどちらかである(ほとんど後者)。内部Webブラウザを試したい時は,「Internal Web Browser」を選択しておくのを忘れずに。

内部Webブラウザを起動する時は,IWorkbenchBrowserSupportオブジェクトを利用する。

String url = “http://www.eisbahn.jp/”; IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport(); if (browserSupport.isInternalWebBrowserAvailable()) { IWebBrowser browser = browserSupport.createBrowser( IWorkbenchBrowserSupport.LOCATION_BAR | IWorkbenchBrowserSupport.NAVIGATION_BAR | IWorkbenchBrowserSupport.AS_EDITOR, “id1”, “eisbahn.jp”, “Yoichiro’s blog.” ); browser.openURL(new URL(url)); }

IWorkbenchBrowserSupportオブジェクトは,Workbenchオブジェクトから取得できる。これのisInternalWebBrowserAvaliable()メソッドで,内部Webブラウザを使用することができるか検査することが可能だ。これがfalseを返す時は,内部Webブラウザとしてではなく,Webブラウザアプリケーションが起動されるようになる。

取得したIWorkbenchBrowserSupportオブジェクトのcreateBrowser()メソッドの引数を調整することで,Webブラウザの基本的なUIを設置するかどうかなどの設定を施すことができる。上記の場合は,URLを入力するためのロケーションバー,[戻る][進む]ボタンなどが配置されるナビゲーションバーが,内部Webブラウザの上部に設置される。AS_EDITORを指定しているが,これをAS_VIEWとすることで,Viewとして内部Webブラウザを表示することも可能だ。

createBrowser()メソッドの戻り値であるIWebBrowserオブジェクトに対してopenUL()メソッドを使用すれば,指定したURLのコンテンツがレンダリングされる。内部Webブラウザの正体はSWTのBrowserコンポーネントなので,レンダリングエンジンはOSなどによって異なってくる。つまり,レンダリング結果もOSやWebブラウザのインストール状況によって変わってくるので,ご注意を。

さて,もう一つのEclipse外部のWebブラウザアプリケーションの起動だが,こっちの方が簡単である。

String url = “http://www.eisbahn.jp/”; IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport(); IWebBrowser browser = browserSupport.getExternalBrowser(); browser.openURL(new URL(url));

IWebBrowserSupportオブジェクトのcreateBrowser()メソッドを利用する代わりに,getExternalBrowser()メソッドを利用している。このメソッドに引数はないため,WebブラウザアプリケーションのスタイルをJavaコードで指定することはできない。得られたIWebBrowserオブジェクトのopenURL()メソッドのコールは,先ほどと同じである。

ここで1つ注意。「 Webブラウザコンポーネントの利用」エントリで紹介したBrowserコンポーネントは,execute()メソッドでJavaScriptコードを実行できるなど高機能であったが,IWebBrowserオブジェクトにはそのような機能はなく,close()メソッドで閉じることくらいしかできない。つまり,このエントリで紹介している手順は,あくまでWebブラウザの起動と割り切って利用する必要があるということだ。

Webブラウザ起動のテクニックは,Twitterclipse,Lingrclipse,IPMsg4E,そしてSearchclipseというように,作成したEclipseプラグインの多くで使用している。きっと,楽しいEclipseプラグインであればあるほど,このテクニックの登場機会は増えるだろう。

Eclipseを使用しているということは,何らかの開発を行っているということだろう。今日では多くのドキュメントがHTMLコンテンツとして提供され公開されていることを考えれば,今回紹介した技術は非常に有効であり多用されることだろう。もちろん,楽しいEclipseプラグインにおいても,Webサービスとの連携を考えればWebブラウザの起動は何らかで必要となってくる。本エントリが効率的なEclipseプラグインの開発に一役買えば幸いである。

このエントリーをはてなブックマークに追加

関連記事

2023年のRemap

Remapにファームウェアビルド機能を追加しました

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って

現在のRemapと今後のRemapについて