profaim  >  関連技術  >  言語・環境  >  Java  >  JFace  >  TreeViewer  >  TreeViewerを試す(2/4)

JFace TreeViewer を試す(2/4)

作成日:2008/12/04
Mac OS X 10.5.4 Eclipse SDK 3.3.2 Pleiades 1.2.3 Visual Editor(EHECHT版) 34M7

はじめに

前提とする環境

ここでは JFace の TreeViewer の使用サンプルを紹介します。 原稿執筆にあたっては Eclipse に Visual Editor  をインストールし、 Pleiades で日本語化した環境を使用しています。環境によっては表示内容や手順が違ってくる場合があります。 また、Eclipse 上に Javaプロジェクト と ビジュアル・クラス が作成済みで、 JFace が使える環境が整っている前提で話をすすめていきます。第2項・第3項では TableViewer へ表示するデータの解析ロジックの定義方法を紹介します。第1項に続く手順になっていますので  JFace TreeViewer を試す(1/4)  も併せてご覧ください。

2.TreeViewerへの表示データ解析ロジックを定義する

2-1.TreeViewer が持つことができるデータ

TreeViewer には Object型 のデータを持たせることができます。つまりどんな形式のデータでも持たせることができるというわけです。ただ好き勝手な形式のデータを渡されても TreeViewer は処理できないため、渡したデータのツリーをたどるにはどうしたらいいかを示す解析ロジックも渡してやる必要があります。

JFace では org.eclipse.jface.viewers.ITreeContentProvider インタフェースが用意されており、これを実装したクラスを作成することで TreeViewer に解析ロジックとして認識させてやることができます。

2-2.データ解析ロジックの作成

クラス作成今回は "firsttreeviewer.TreeDataSample" という名前で ITreeContentProvider インタフェースを実装したクラスを作成しました。 

ここからは、インタフェースで定義されたメソッドの説明と、サンプルコードの紹介をしていきます。

3.ITreeContentProvider のメソッド

3-1.inputChanged メソッド

inputChanged は TreeViewer に表示するデータが変更された場合に呼び出されるメソッドです。 引数のviewerには TreeViewer への参照が、oldInput には前回の入力値が、newInputには今回の入力値が渡されてきます。初めてデータが指定された場合 oldInput は null になります。

サンプルコードでは、データ変更によって何か処理をするわけではないので空のままとして実装しました。

public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}

3-2.getElements メソッド

getElements は TreeViewer に入力されたデータがもつ最初の要素(ツリーの再上位に表示される内容)を返すメソッドです。 引数のimputElementには入力されたオブジェクトが渡されてきます。

サンプルでは入力データは文字列でもらう想定です。サンプルコードでは入力されたデータの末尾に "-A""-B" をつけた2つの要素を返すようにしました。

public Object[] getElements(Object inputElement) {
  Object[] root = new String[] { inputElement + "-A", inputElement + "-B" };
  return root;
}

3-3.hasChildren メソッド

hasChildren は表示する要素が子要素を持つかを返すメソッドです。引数の element には子を持つか確認したいデータが渡されてきます。 表示したい要素の数だけ繰り返し呼び出されます。

サンプルコードでは、"test-A""test-B" という要素についてのみ true を返し子要素が存在するとしました。

public boolean hasChildren(Object element) {
   boolean isChildExists = false;
  if (element.equals("test-A") || element.equals("test-B")) {
    isChildExists = true;
  }
  return isChildExists;
}

3-4.getChildren メソッド

getChildren は表示する要素が子要素を持っていた場合に、その子要素を返すメソッドです。引数の element には子を持つデータが渡されてきます。 表示したい子を持つデータの数だけ繰り返し呼び出されます。

サンプルコードでは、"test-A" の子要素を "1", "3", "5" の3要素、"test-B" の子要素を "2", "4" の2要素としました。

public Object[] getChildren(Object parentElement) { {
  Object[] children = null;
  if (parentElement.equals("test-A")) {
    children = new String[] { "1", "3", "5" };
  } else {
    children = new String[] { "2", "4" };
  }
  return children;
}

3-5.getParent メソッド

getParent は getChildren メソッドとは逆で、ある要素が持つ親の要素を返すメソッドです。親は必ず1つなので Object で返します。

サンプルコードでも、getChildrenの逆となる処理としました。

public Object getParent(Object element) {
  Object parent = null;
  if (element.equals("1") || element.equals("3") || element.equals("5")) {
    parent = "test-A";
  } else if (element.equals("2") || element.equals("4")) {
    parent = "test-B";
 }
 return parent;
}

3-6.dispose メソッド

dispose はアプリケーションの終了などにより TreeViewer が破棄されるタイミングで呼び出されるメソッドです。

サンプルコードでは、とくに必要ないので空のままとしました。

public void dispose() {
}

以上で サンプルコード TreeDataSample.java は完成です。 これで TreeViewer にデータを表示する準備が整いました。 第4項 からは TreeViewer のデータを表示する方法を紹介していきます。

1. JFace TreeViewer を試す(1/4) Visual Editor を使って TreeViewerを画面に配置する手順です。
2.JFace TreeViewer を試す(2/4) TreeViewerに表示するデータの解析ロジックを定義する方法です。
3. JFace TreeViewer を試す(3/4) TreeViewerに表示するデータの表示方法を定義する方法です。
4. JFace TreeViewer を試す(4/4) TreeViewerにデータを入力し画面表示する方法です。

参考文献





  JFace  
TreeViewer
TreeViewerを試す(1/4)
TreeViewerを試す(2/4)
TreeViewerを試す(3/4)
TreeViewerを試す(4/4)

PR
検索
カスタム検索