Webブラウザコンポーネントの利用 Part2

Webブラウザコンポーネントの利用」エントリで紹介したBrowserコンポーネントを使用すれば,低コストでリッチなEclipseプラグインを開発できる。しかし,嬉しいことばかりではない。このエントリでは,発生し得るいくつかの問題点と,その解決方法について紹介する。

万能に見えるBrowserコンポーネントだが,Webブラウザであること故のデメリットもちゃんと対処してあげなければならない。〜clipseで行っている対処として,以下のものがあげられる。

  • コンテキストメニューの無効化
  • ハイパーリンクの無効化
  • レンダリングエンジンの違いの吸収

コンテキストメニューの無効化は,一般的なWebアプリケーションで用いられている手法がそのまま適用できる。つまり,htmlのbodyタグの属性におまじないを指定してあげれば良い。

最近のWebブラウザでは,上記の施策で十分であろう。「こんなことも必要だろ!」と何か御持ちの方は,ぜひコメントを。

機会は少ないかも知れないが,レンダリングされたコンテンツ内にaタグなどでハイパーリンクがあった時に,それをクリックしてもページ遷移が起きないようにしたいときが出てくる。ハイパーリンクがクリックされるなど,ページ遷移がBrowserコンポーネントで発生した際のイベントをJavaコードで拾うことができるようになっている。

上記のコードのように,LocationListenerオブジェクトをBrowserコンポーネントに登録することで,ページ遷移をJava側で知ることができるようになる。上記のコードでは,遷移先のlocationが「http://」で始まるものについては,それに対する処理をJava側で行い,LocationEventオブジェクトのdoitフィールドにfalseをセットすることで,Browserコンポーネントにページ遷移を行わせないように指示している。この条件を満たさない場合は,doitフィールドに何もセットされないために,ページ遷移が行われることになる。つまり,ハイパーリンクをSWTのLinkコンポーネントのように使用することができる。

最後のレンダリングエンジンの違いの吸収については,主にCSS系の話になるだろう。つまり,スタイル定義が同じでも,IEとFirefoxでその解釈が異なるために,見た目が変わってしまうのを何とかしなければならない。これもコンテキストメニューのときと同様に,一般的なWebアプリケーションでのテクニックが使える。

特にスタイルの調整は「IEだったら」という話になるため,上記のようにIEのみで解釈される特殊な記法を使って,スタイル定義を上書きしてあげればよい。

ちなみに,TwitterclipseとLingrclipseについては,上記の施策を施している。本来であれば,Browserコンポーネント上でショートカットキーを無効にするなどしないと,アプリケーションが意図していないページ遷移などが行われてしまう。ま,言いだしたらキリがない領域になるので,上記程度の工夫が妥当ではないだろうか。

このようなテクニックを適用すれば,見た目的にも美しいEclipseプラグインを短期間で開発することが可能となる。このエントリを読んでくれた方には,ぜひこれらの技術を身に付けて,面白いEclipseプラグインを作って公開して頂きたい。

Trackback URL:



Get Adobe Flash playerPlugin by wpburn.com wordpress themes