1

我想让一些基于透视变化添加到视图工具栏的操作不可见。以下是我使特定操作不可见的代码。这段代码对我没有任何影响。代码执行得很好,但它并没有从工具栏中消失。

IContributionItem[] items = view.getToolbar().getItems();
                    for (IContributionItem item : items) {
                        if (item instanceof ActionContributionItem) {
                            ActionContributionItem actionItem = (ActionContributionItem) item;
                            if(actionItem.getAction().getId().equals("actionid")){
                                //view.getToolbar().remove("actionid");
                                actionItem.setVisible(false);
                            }
                        }
                    }
4

1 回答 1

1

您需要调用update()工具栏管理器上的方法。

请参阅此片段,其中项目在 5 秒后变得不可见:

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final ToolBarManager toolBarManager = new ToolBarManager();
    final Action action1 = new Action("1") {
    };
    action1.setId("1");
    toolBarManager.add(action1);
    final Action action2 = new Action("2") {
    };
    action2.setId("2");
    toolBarManager.add(action2);

    toolBarManager.createControl(shell);

    display.timerExec(5000, new Runnable() {
        @Override
        public void run() {
            final IContributionItem[] items = toolBarManager.getItems();
            for (IContributionItem item : items) {
                if (item.getId().equals("1")){
                    item.setVisible(false);
                }
            }
            toolBarManager.update(true);
        }
    });

    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}
于 2013-10-31T08:08:59.977 回答