カテゴリ:プラグイン開発日誌
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) | コメントを書く
[プラグイン開発日誌] カテゴリの最新記事
|
|