boolean () { if (!isDispatchThread()) return true; // do not check nodes during building // TODO: have to rewrite this logic without using walking in a tree TreeModel treeModel = myTree.getModel(); Object root = treeModel.getRoot(); int count = treeModel.getChildCount(root); if (count <= 1) return false; int moduleNodes = 0; for (int i = 0; i < count; i++) { Object child = treeModel.getChild(root, i); if (child instanceof DefaultMutableTreeNode) { Object node = ((DefaultMutableTreeNode)child).getUserObject(); if (node instanceof ProjectViewModuleNode || node instanceof PsiDirectoryNode) { moduleNodes++; if (moduleNodes > 1) { return true; } } else if (node instanceof ModuleGroupNode) { return true; } } } return false; }