- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
org.eclipse.jface.viewers.TreeViewer
#contents
エクスプローラの左にあるようなツリー上のデータ構造を表示するウィジェットとして、org.eclipse.jface.viewers.TreeViewer があります。それを使ってみました。
TreeViewer は「表示するコンテンツ」と「表示の仕方」がProviderという考え方でうまく分離されています。
***モデルの渡し方 [#x7a3463f]
TreeViewerに表示したいコンテンツは
TreeViewer#setInput(Object object); <-ツリー構造のトップを渡す感じ?
でTreeViewerに渡します。
***表示するコンテンツの指定 [#qc4b2295]
表示するコンテンツは、コンテンツプロバイダをつかって指定します。コンテンツプロバイダは、setInputで渡されたモデルの、ツリー構造を説明(?)するためのものです。
指定方法は
TreeViewer#setContentProvider(ITreeContentProvider provider);
とします。
ITreeContentProviderの実装で、ツリー構造を説明する方法は、たとえば
public Object[] getChildren(Object parent) {
File[] children = ((File) parent).listFiles(new FileFilter() {
//ディレクトリだけを返す、フィルタ
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
return false;
}
});
return children == null ? new Object[0] : children;
}
public boolean hasChildren(Object element) {
return getChildren(element).length > 0;
}
public Object[] getElements(Object input) {
return getChildren(input);
}
などとすればよいようです。ようするに、ツリーの子要素を返すメソッド、子要素があるかどうかを返すメソッドなどを実装すればよいようです。
***表示の仕方の指定 [#q19ef3e9]
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}