1

私は拡張するビューを持っていますViewPart。このビューでは、ツールバーメニューを追加したいと思います。

私が知っていることですが、ActionContributionItemまたはを使用してツールバーメニューActionを追加し、のメソッドToolBarMenuから 追加できます。createPartControlViewPart

しかし、私が知らないのはこれです:プログラムでツールバーメニューを無効/有効にするにはどうすればよいですか?

したがって、基本的には、ツールバービューに[再生]、[停止]、および[一時停止]ボタン追加ますそのため、最初は[再生]ボタンが有効モードになっていて、他のボタンは無効になっています。再生ボタンを押すと無効になり、他のボタンが有効になります。

詳細については、次の画像のようなものを実現したいと思います。

赤い丸は無効ボタン、青い丸は有効ボタンです。

意見

4

3 に答える 3

5

アクションを使用する代わりに、Eclipseコマンドを見てください(アクションの代わりになり、よりクリーンな方法で機能します): http: //help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/ guide / workbench_cmd.htm

ドキュメントでは、コマンドを有効または無効にできることがわかります。コマンドが使用されるすべての場所で、コマンドの状態が自動的に適切に更新されます。

于 2012-04-30T05:15:58.297 に答える
2

これを試して..

1:アクションを実装します。例:PlayAction、StopAction。

Public class StartAction extends Action {

@Override
public void run() {
    //actual code run here
}

@Override
public boolean isEnabled() {
    //This is the initial value, Check for your respective criteria and return the appropriate value.
    return false;
}

@Override
public String getText() {
    return "Play";
}
}

2:ビューパート(プレイヤービューパート)を登録する

Public class Playerview extends ViewPart
    {

 @Override
public void createPartControl(Composite parent) {

 //your player UI code here.


    //Listener registration. This is very important for enabling and disabling the tool bar level buttons
     addListenerObject(this);


    //Attach selection changed listener to the object where you want to perform the action based on the selection type. ex; viewer
    viewer.addselectionchanged(new SelectionChangedListener())  



      }
        }

    //selection changed

    private class SelectionChangedListener implements ISelectionChangedListener        {

    @Override
    public void selectionChanged(SelectionChangedEvent event) {
        ISelection selection = Viewer.getSelection();
        if (selection != null && selection instanceof StructuredSelection) {
            Object firstElement = ((StructuredSelection)selection).getFirstElement();

            //here you can handle the enable or disable based on your selection. that could be your viewer selection or toolbar.
            if (playaction.isEnabled()) { //once clicked on play, stop  should be enabled.
                stopaction.setEnabled(true); //Do required actions here.
                playaction.setEnabled (false);  //do

            }

        }

    }

    }

これがお役に立てば幸いです。

于 2012-11-09T13:01:10.737 に答える
2

私がグーグルでつまずいたことによって見つけた別のアプローチがあります。このアプローチでは、ISourceProviderを使用して可変状態を提供します。したがって、そのクラス(ISourceProviderを実装している)のコマンドの有効化/無効化の状態を提供できます。詳細リンクは次のとおりですhttp://eclipse-tips.com/tutorials/1-actions-vs-commands?showall=1

于 2012-05-01T04:25:55.837 に答える