カテゴリ:プラグイン開発日誌
今回は、データベース切断用Actionを実装します。
実装のポイントは、以下の3点です。 1.コンストラクタでsetEnabled(boolean)にfalseを設定する ※初期状態は、実行できないように制御する 2.DataBase要素の子をすべて削除し、Viewを再描画する db.removeChildAll(); TreeViewer treeView = (TreeViewer)viewer; treeView.expandToLevel(db,1); viewer.refresh(); 3.DataBase要素に対して切断状態であることを設定する db.setConnected(false); ※DataBaseクラスには、接続状態を持つプロパティを追加しています。 ポップアップメニュー上で、接続・切断のメニューを交互に有効にするには TreeView#fillContextMenu()メソッドで行います。 実装は、以下の通りです。 zigen.plugin.db.ui.views/TreeView : private void fillContextMenu(IMenuManager manager) { // 選択したものによって表示するメニューを変更したい Object element = (Object)((StructuredSelection)viewer.getSelection()).getFirstElement(); if(element instanceof Root){ removeDBAction.setEnabled(false); // 削除不可能 manager.add(registDBAction); manager.add(removeDBAction); manager.add(new Separator()); }else if(element instanceof DataBase){ removeDBAction.setEnabled(true); // 削除可能 manager.add(connectDBAction); // 接続 manager.add(closeDBAction); // 切断 manager.add(new Separator()); manager.add(registDBAction); // DB定義登録 manager.add(editDBAction); // DB定義編集 manager.add(removeDBAction); // DB定義削除 // 選択したDataBase要素に応じて、接続/切断のsetEnabledを行う DataBase db = (DataBase)element; if(db.isConnected){ connectDBAction.setEnabled(false); closeDBAction.setEnabled(true); }else{ connectDBAction.setEnabled(true); closeDBAction.setEnabled(false); } }else if(element instanceof Schema){ }else if(element instanceof Table){ } // Other plug-ins can contribute there actions here manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } 以下に、CloseDBActionクラスの完全なコードを記載します。 zigen.plugin.db.ui.actions/CloseDBAction public class CloseDBAction extends Action { StructuredViewer viewer = null; /** * コンストラクタ * @param viewer */ public CloseDBAction(StructuredViewer viewer){ this.viewer = viewer; this.setText("切断(&L)"); this.setToolTipText("切断"); this.setEnabled(false); // 初期状態では、falseを設定 } /** * Action実行時の処理 */ public void run() { Object element = (Object)((StructuredSelection)viewer.getSelection()).getFirstElement(); if(element instanceof DataBase){ DataBase db = (DataBase)element; try { db.removeChildAll(); TreeViewer treeView = (TreeViewer)viewer; treeView.expandToLevel(db,1); viewer.refresh(); // 切断状態とする db.setConnected(false); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); DbPlugin.getDefault().showErrorMessage(e.getMessage()); } } } public void setEnabled(boolean b){ super.setEnabled(b); if(b){ // this.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). // getImageDescriptor(ISharedImages.IMG_DELETE)); }else{ // 押下できない用のアイコンを設定 // this.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). // getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED)); } } } -------------------------------------------------------------------------- ここまで作成したソースです。 Eclipseプラグイン開発のプロジェクトフォルダをZIP圧縮しています。 ⇒zigen.plugin.db.20050324.zip ------------------------------------------------------------------------- お気に入りの記事を「いいね!」で応援しよう
Last updated
2005.03.24 20:51:07
コメント(0) | コメントを書く
[プラグイン開発日誌] カテゴリの最新記事
|
|