2005年03月05日

ブラウザプラグインの作成 - ツリービューの追加

今回はツリーを使ってInternetExplorerのお気に入りを表示していきます。
Windows限定になると思います。それ以外のOSの方は申し訳ないです。。。

今回作成したプラグインはこちらからダウンロードできます。→browser_0.0.5.zip
ソースも入っていますのでダウンロードして参考にしながら説明を読んでください。

1.ビューの追加
plugin.xmlのマニフェスト・エディターを開いて、拡張のタブをクリックします。
追加ボタンを押して拡張ポイントの選択ウィザードを表示します。
拡張ポイントでorg.eclipse.ui.viewsを選択して、テンプレートのサンプル・ページを選択して次へをクリックします。
サンプルページの設定でツリー・ビューアーにチェックを入れて、ほかの項目を任意に変更して終了ボタンをクリックします。
すると、拡張のツリーのorg.eclipse.ui.viewsにviewが追加されます。

2.ContentProviderの作成
ITreeContentProviderを実装して、TreeViewerのsetInputで入力されたオブジェクトのツリーの構造として解析するためのクラスを作成します。
ITreeContentProviderで実装する必要のあるメソッドを説明します。

public void inputChanged(Viewer v, Object oldInput, Object newInput)
入力が変更された場合の処理を行います

public void dispose()
回収処理を行います

public Object[] getElements(Object parent)
要素を取得します

public Object getParent(Object child)
親のオブジェクトを取得します

public Object[] getChildren(Object parent)
子のオブジェクトを取得します

public boolean hasChildren(Object parent)
子のオブジェクトを持つか判別します

getElementsとgetChildrenの区別が良く分かりません。。。わかる方がいましたらコメントをよろしくお願いします。
今回は入力がFileのオブジェクトで各メソッドの引数のFileのオブジェクトになりますが念のためにinstanceofでクラスをチェックしています。

3.LabelProviderの作成
LabelProviderを実装して、ContentProviderで解析された要素を表示するためのクラスを作成します。
LabelProviderで実装する必要のあるメソッドを説明します。

public String getText(Object obj)
表示文字列を取得します

public Image getImage(Object obj)
表示画像を取得します

各メソッドの引数のオブジェクトはFileオブジェクトとなるのでフォルダかファイルかを判断して表示を切り分けています。

4.ViewerSorterの作成
ViewerSorterを継承して、名前を並び替えるクラスを作成します。
いくつかのメソッドをオーバーライドすることで並び替えをすることができます。

public int compare(Viewer viewer, Object e1, Object e2)
二つのオブジェクトを比較します

public int category(Object element)
オブジェクトをカテゴリーわけします。
返却値が若いほど上位に表示されます。

今回はcategory()メソッドを使ってフォルダの場合は0を返し、ファイルの場合は1を返すようにしてカテゴリを分けて表示するようにしました。

5.ダブルクリックの対象オブジェクトの取得
ダブルクリックをしたときのアクションでの処理を説明します。
まずダブルクリックで選択されているオブジェクトを取得する手順は、TreeViewerからSelectionを取得して、そのSelectionから要素(オブジェクト)を取得します。
ISelection selection = viewer.getSelection();
Object obj = ((IStructuredSelection) selection).
getFirstElement();


5.ツリーの展開と折りたたみ
ダブルクリックの対象がフォルダの場合は展開または折りたたみをします。
ツリーを展開する場合は、
viewer.expandToLevel(obj, 1)
とします。

また、ツリーを折りたたむ場合は、
viewer.collapseToLevel(obj, 1)
となります。

6.ビューの連携
ダブルクリックの対象がファイル場合はファイルからURLを読み込みブラウザビューに対してURLを渡します。
ちょっと手間ですが、以下のようにしてビューアーのIDからViewを取得することができます。
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
BrowserView view = (BrowserView)page.
showView("luna.tools.browser.views.BrowserView");
view.setUrl(url);

今回はいろいろな要素が盛りだくさんでしたね^^

今回作成したプラグインはこちらからダウンロードできます。→browser_0.0.5.zip
次回は、パースペクティブを追加したいと思います。
では、また。

posted by 月夜 at 01:24| Comment(1) | TrackBack(1) | プラグイン開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
大変やくにたちました。
これからも重要な情報源となりますので継続してください。
Posted by superTester at 2005年08月04日 01:31
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

TreeContentProviderの実装
Excerpt: TreeViewerに設定するTreeContentProviderの実装です。このクラスはITreeContentProviderインターフェイスをimplementsする必要があります。ITree..
Weblog: Eclipseプラグイン開発ブログ・BLOG
Tracked: 2005-03-12 08:47
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。