JComponent () { ToolbarDecorator decorator = ToolbarDecorator.createDecorator(myTree). setAddAction(button -> { ProjectItem projectItem = (ProjectItem)projectCombobox.getSelectedItem(); if(projectItem == null) return; final ExternalProjectInfo projectData = ProjectDataManager.getInstance() .getExternalProjectData(myProject, myProjectSystemId, projectItem.myProjectSettings.getExternalProjectPath()); if (projectData == null || projectData.getExternalProjectStructure() == null) return; final List<ProjectPopupItem> popupItems = new ArrayList<>(); for (DataNode<ModuleData> moduleDataNode : ExternalSystemApiUtil .findAllRecursively(projectData.getExternalProjectStructure(), ProjectKeys.MODULE)) { if(moduleDataNode.isIgnored()) continue; final List<String> tasks = ContainerUtil.map( ExternalSystemApiUtil.findAll(moduleDataNode, ProjectKeys.TASK), node -> node.getData().getName()); if (!tasks.isEmpty()) { popupItems.add(new ProjectPopupItem(moduleDataNode.getData(), tasks)); } } final ChooseProjectStep projectStep = new ChooseProjectStep(popupItems); final List<ProjectPopupItem> projectItems = projectStep.getValues(); ListPopupStep step = projectItems.size() == 1 ? (ListPopupStep)projectStep.onChosen(projectItems.get(0), false) : projectStep; assert step != null; JBPopupFactory.getInstance().createListPopup(step).show( ObjectUtils.notNull(button.getPreferredPopupPoint(), RelativePoint.getSouthEastOf(projectCombobox))); }). setRemoveAction(button -> { List<TaskActivationEntry> tasks = findSelectedTasks(); myTaskActivator.removeTasks(tasks); updateTree(null); }). setMoveUpAction(button -> moveAction(-1)). setMoveUpActionUpdater(e -> isMoveActionEnabled(-1)). setMoveDownAction(button -> moveAction(+1)). setMoveDownActionUpdater(e -> isMoveActionEnabled(+1)). setToolbarPosition(ActionToolbarPosition.RIGHT); tasksPanel.add(decorator.createPanel()); return contentPane; }