Rational Developer for System z


レッスン 2 CustomMainActionGroup Java クラスの作成

このレッスンでは、CustomMainActionGroup クラスを作成する手順を説明します。このクラスは、CARMA のデフォルトの MainActionGroup クラスの機能をエミュレートします。 ただし、デフォルトの OpenActionGroup を使用する代わりに、作成する CustomMainActionGroup クラスは作成した CustomOpenActionGroup クラスを使用します。

CustomMainActionGroup クラスを作成するには、次のようにします。

  1. 「パッケージ・エクスプローラー」ビューで menu パッケージを右クリックして、「新規」>「クラス」を選択し、新規クラスを作成します。
  2. 表示される「新規 Java クラス (New Java Class)」ダイアログ・ボックスで、名前として CustomMainActionGroup を入力します。「スーパークラス (Superclass)」テキスト・フィールドの右側の「参照」ボタンをクリックします。表示される「スーパークラスの選択 (Superclass Selection)」ダイアログ・ボックスで、フィルター CarmaBrowserActionGroup を入力します。com.ibm.carma.ui.view パッケージに含まれる一致するクラスを選択して、「OK」をクリックします。
  3. 「スーパークラスからのコンストラクター (Constructors from superclass)」チェック・ボックスを選択します。
  4. 「終了」をクリックして、「新規 Java クラス (New Java Class)」ダイアログを閉じ、クラスを作成します。
  5. 最初に、次のサンプル・コードに類似の、NewMenuActionGroupNavigationActionGroupOpenActionGroupConnectionActionGroupDisplayActionGroup、および PropertyDialogAction のグローバル変数を作成します。
    	private NewMenuActionGroup _newMenuActionGroup;
    	private NavigationActionGroup _navigationActionMenu;
    	private OpenActionGroup _openActionGroup;
    	private ConnectionActionGroup _connectionActionGroup;
    	private DisplayActionGroup _displayActionGroup;
    	private PropertyDialogAction _propertyAction;
    ヒント: これらの変数は、メソッドの宣言の前に、クラスの先頭で宣言する必要があります。
  6. 次に、makeActions メソッドをオーバーライドして、コンテキスト・メニューに加える必要があるグループとアクションをインスタンス化します。 OpenActionGroup を使用して、デフォルトの代わりに CustomOpenActionGroup クラスを必ずインスタンス化してください。 次のソース・コードを使用します。
    protected void makeActions()
    {
       _newMenuActionGroup = new NewMenuActionGroup();
       _navigationActionMenu = new NavigationActionGroup(getBrowser());
       _openActionGroup = new CustomOpenActionGroup();
       _connectionActionGroup = new ConnectionActionGroup(getBrowser());
       _displayActionGroup = new DisplayActionGroup(getBrowser());
       _propertyAction = new PropertyDialogAction(getBrowser().getViewSite(), getViewer());
    }
  7. 更新されたグループ、アクション、およびセパレーターのリストで、fillContextMenu() メソッドをオーバーライドします。コンテキスト・メニューと同様の見た目にするために、次のサンプル・コードを使用して、コンテキスト・メニューに項目を追加する順序と同じ順序を使用します。
    public void fillContextMenu(IMenuManager menu)
    {
       ActionContext myContext = new ActionContext(getViewer().getSelection());
       _newMenuActionGroup.getContext();
    
       _newMenuActionGroup.setContext(myContext);
       _newMenuActionGroup.fillContextMenu(menu);
    
       _navigationActionMenu.setContext(myContext);
       _navigationActionMenu.fillContextMenu(menu);
    
       menu.add(new Separator("open"));		
       _openActionGroup.setContext(myContext);
       _openActionGroup.fillContextMenu(menu);
    
       menu.add(new Separator("refractor"));
    		
       menu.add(new Separator("connect"));
    
       _connectionActionGroup.setContext(myContext);
       _connectionActionGroup.fillContextMenu(menu);
       _connectionActionGroup.updateActionBars();
    
       menu.add(new Separator("display"));
    
       _displayActionGroup.setContext(myContext);
       _displayActionGroup.fillContextMenu(menu);
    
       menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
       menu.add(new Separator("project"));
       menu.add(new Separator("properties"));
       menu.add(_propertyAction);
    }
  8. 必要なクラスとパッケージをすべてインポートします。インポート・ステートメントに次のすべてが含まれていることを確認します。
    import org.eclipse.jface.action.IMenuManager;
    import org.eclipse.jface.action.Separator;
    import org.eclipse.ui.IWorkbenchActionConstants;
    import org.eclipse.ui.actions.ActionContext;
    import org.eclipse.ui.dialogs.PropertyDialogAction;
    
    import com.ibm.carma.ui.view.BaseCarmaBrowser;
    import com.ibm.carma.ui.view.CarmaBrowserActionGroup;
    import com.ibm.carma.ui.view.ConnectionActionGroup;
    import com.ibm.carma.ui.view.DisplayActionGroup;
    import com.ibm.carma.ui.view.NavigationActionGroup;
    import com.ibm.carma.ui.view.NewMenuActionGroup;
    import com.ibm.carma.ui.view.OpenActionGroup;
  9. ソースを保存し、すべてのエラーをデバッグします。

ご利用条件 | フィードバック



このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)