void () { myTree = new ExternalProjectTree(myProject); myTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); final ActionManager actionManager = ActionManager.getInstance(); ActionToolbar actionToolbar = actionManager.createActionToolbar(myExternalSystemId.getReadableName() + " View Toolbar", (DefaultActionGroup)actionManager .getAction("ExternalSystemView.ActionsToolbar"), true); // make the view data context available for the toolbar actions actionToolbar.setTargetComponent(this); setToolbar(actionToolbar.getComponent()); setContent(ScrollPaneFactory.createScrollPane(myTree)); myTree.addMouseListener(new PopupHandler() { @Override public void invokePopup(final Component comp, final int x, final int y) { final String id = getMenuId(getSelectedNodes(ExternalSystemNode.class)); if (id != null) { final ActionGroup actionGroup = (ActionGroup)actionManager.getAction(id); if (actionGroup != null) { actionManager.createActionPopupMenu(ExternalProjectsViewImpl.this.getName(), actionGroup).getComponent().show(comp, x, y); } } } private static @Nullable String getMenuId(Collection<? extends ExternalSystemNode> nodes) { String id = null; for (ExternalSystemNode node : nodes) { String menuId = node.getMenuId(); if (menuId == null) { return null; } if (id == null) { id = menuId; } else if (!id.equals(menuId)) { return null; } } return id; } }); }