private static void fillToolsMenu(
     List<IContributionItem> menuItems, List<ToolDescriptor> tools, ISelection selection) {
   boolean hasTools = false;
   if (!CommonUtils.isEmpty(tools)) {
     IWorkbenchWindow workbenchWindow = DBeaverUI.getActiveWorkbenchWindow();
     if (workbenchWindow.getActivePage() != null) {
       IWorkbenchPart activePart = workbenchWindow.getActivePage().getActivePart();
       if (activePart != null) {
         Map<ToolGroupDescriptor, MenuManager> groupsMap = new HashMap<>();
         for (ToolDescriptor tool : tools) {
           hasTools = true;
           MenuManager parentMenu = null;
           if (tool.getGroup() != null) {
             parentMenu = getGroupMenu(menuItems, groupsMap, tool.getGroup());
           }
           IAction action =
               ActionUtils.makeAction(
                   new NavigatorActionExecuteTool(workbenchWindow, tool),
                   activePart.getSite(),
                   selection,
                   tool.getLabel(),
                   tool.getIcon() == null ? null : DBeaverIcons.getImageDescriptor(tool.getIcon()),
                   tool.getDescription());
           if (parentMenu == null) {
             menuItems.add(new ActionContributionItem(action));
           } else {
             parentMenu.add(new ActionContributionItem(action));
           }
         }
       }
     }
   }
   if (!hasTools) {
     menuItems.add(new ActionContributionItem(new EmptyListAction()));
   }
 }
 public static void firePropertyChange(String propName) {
   ActionUtils.evaluatePropertyState(NAMESPACE + "." + propName);
 }