429073 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

ZIGENのプラグイン開発 for Eclipse

ZIGENのプラグイン開発 for Eclipse

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2005.03.26
XML
TreeViewerで表示されている要素を展開/非展開する際の
イベントを取得する手順について説明します。

1.ITreeViewerListenerをimplementsしたListenerクラスを作成
・public void treeCollapsed(TreeExpansionEvent event) {}

・public void treeCollapsed(TreeExpansionEvent event) {}
 要素を非展開状態にした場合に呼び出されるメソッド
 引数には、イベントが発行された要素が渡されます。

・public void treeExpanded(TreeExpansionEvent event) {}
 要素を展開状態にした場合に呼び出されるメソッド
 引数には、イベントが発行された要素が渡されます。

2.TreeViewer#addTreeListener()メソッドで作成したListenerを追加する
 TreeViewer viewer;
 :
 public void createPartControl(Composite parent) {
 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
 :
 viewer.addTreeListener(new TreeViewListener());



以下のTreeViewListenerは「スキーマ要素」を展開する際に、
「テーブル要素」を検索し、追加するよう実装したものです。

実装ポイント
・検索したテーブル要素はキャッシュする(次回展開時の処理を速くする為)
・テーブル要素の検索処理は、非同期で実行する
 TreeViewer viewer = (TreeViewer)event.getTreeViewer();
 Display display = viewer.getControl().getDisplay();
 display.asyncExec(new TableSearcherThread(viewer, schema));

 次回は、このTableSearcherThreadについて説明します。

zigen.plugin.db.ui.views/TreeViewListener
public class TreeViewListener implements ITreeViewerListener {
  /* (非 Javadoc)
   * @see org.eclipse.jface.viewers.ITreeViewerListener#treeCollapsed(org.eclipse.jface.viewers.TreeExpansionEvent)
   */
  public void treeCollapsed(TreeExpansionEvent event) {
    // TODO 自動生成されたメソッド・スタブ
    // 実装なし
  }
  /* (非 Javadoc)
   * @see org.eclipse.jface.viewers.ITreeViewerListener#treeExpanded(org.eclipse.jface.viewers.TreeExpansionEvent)
   */
  public void treeExpanded(TreeExpansionEvent event) {
    Object element = event.getElement();
    if(element instanceof DataBase){
      DataBase db = (DataBase)element;
      // 現時点では何も実装しない

    }else if(element instanceof Schema){
      Schema schema = (Schema)element;
      synchronized(this){
        // isExpanded = falseの場合のみ処理する
        if(!schema.isExpanded){
          // 展開フラグをTrueにする(テーブル要素をキャッシュする)
          schema.setExpanded(true);
          
          // テーブル一覧を検索(非同期にて実行)
          TreeViewer viewer = (TreeViewer)event.getTreeViewer();
          Display display = viewer.getControl().getDisplay();
          display.asyncExec(new TableSearcherThread(viewer, schema));
        }
      }
    }
  }
}





お気に入りの記事を「いいね!」で応援しよう

Last updated  2005.03.26 18:19:54
コメント(0) | コメントを書く


PR

Calendar

Comments

名前なし@ Re:テーブルのデータをエクセル風に編集できない?(03/27) ExcelでOracle,MySQLのデータを取得/更新…
ZIGEN@ Re:いつも使ってます!!(04/14) ヘタグラマさん こんにちは^^ コメ…
ヘタグラマ@ いつも使ってます!! いつも便利に使ってます。 もう手放せな…
★みゆきち★@ 性感エステってもったいないよね ムラムラってきたら性感エステに通ってた…
ZIGEN_M@ Re[2]:4000行はないけれど、(03/13) こんにちは、ZIGENです。 そ、そうです…

Category

Freepage List

Favorite Blog

松のページブログ 松-booleanさん

Profile

ZIGEN_M

ZIGEN_M


© Rakuten Group, Inc.