2013-10-31 46 views
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); 
          } 
         } 
        } 

回答

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(); 
}