我想根据透视变化将某些操作添加到视图工具栏中。 以下是我使特定操作不可见的代码。这段代码没有给我任何影响。 代码执行正常,但它不会从工具栏中消失。
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);
}
}
}
答案 0 :(得分: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();
}