1

我有延伸的观点ViewPart。在这个视图中,我想添加工具栏菜单。

据我所知,我们可以使用ActionContributionItemor添加工具栏菜单Action,并将其添加到ToolBarMenufrom createPartControl方法中ViewPart

但我不知道的是:我们如何以编程方式禁用/启用工具栏菜单?

所以基本上,我想将PlayStopPause按钮​​添加到工具栏视图。因此,起初,播放按钮处于启用模式,而其他按钮则处于禁用状态。当我按下播放按钮时,它被禁用,其他的将被启用。

有关更多详细信息,我想要实现的是如下图所示。

红色圆圈中为禁用按钮,蓝色圆圈中为启用按钮。

看法

4

3 回答 3

5

不要使用动作,而是看一下 Eclipse 命令(它们以更简洁的方式替代动作和功能):http ://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/指南/workbench_cmd.htm

您将在文档中看到您可以启用和禁用命令,并且所有使用它的地方都会自动正确更新它们的状态。

于 2012-04-30T05:15:58.297 回答
2

我在谷歌上偶然发现了另一种方法。这种方法使用 ISourceProvider 来提供变量状态。因此,我们可以在该类(实现 ISourceProvider)中提供命令的启用/禁用状态。这是详细链接http://eclipse-tips.com/tutorials/1-actions-vs-commands?showall=1

于 2012-05-01T04:25:55.837 回答
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 回答