final FacetStructureConfigurable facetStructureConfigurable = FacetStructureConfigurable.getInstance(myStructureConfigurable.getProject());
final MasterDetailsComponent.MyNode facetTypeNode = facetStructureConfigurable.getOrCreateFacetTypeNode(facet.getType());
LOG.assertTrue(facetTypeNode != null, "Cannot found node for " + facet.getType());
- facetStructureConfigurable.addFacetNode(facetTypeNode, facet, this);
+ facetStructureConfigurable.addFacetNode(facetTypeNode, facet, this, false);
}
private MasterDetailsComponent.MyNode addFacetNode(final Facet facet, final MasterDetailsComponent.MyNode moduleNode) {
Collection<? extends Facet> facets = FacetManager.getInstance(module).getFacetsByType(facetType.getId());
FacetEditorFacadeImpl editorFacade = ModuleStructureConfigurable.getInstance(myProject).getFacetEditorFacade();
for (Facet facet : facets) {
- addFacetNode(facetTypeNode, facet, editorFacade);
+ addFacetNode(facetTypeNode, facet, editorFacade, true);
}
}
+ addNodeCompleted(facetTypeNode);
return facetTypeNode;
}
return addFacetTypeNode(facetType);
}
- public void addFacetNode(@NotNull MyNode facetTypeNode, @NotNull Facet facet, @NotNull FacetEditorFacadeImpl editorFacade) {
+ public void addFacetNode(
+ @NotNull MyNode facetTypeNode,
+ @NotNull Facet facet,
+ @NotNull FacetEditorFacadeImpl editorFacade,
+ boolean delayRedraw) {
FacetConfigurable facetConfigurable = editorFacade.getOrCreateConfigurable(facet);
- addNode(new FacetConfigurableNode(facetConfigurable), facetTypeNode);
+ addNode(new FacetConfigurableNode(facetConfigurable), facetTypeNode, delayRedraw);
myContext.getDaemonAnalyzer().queueUpdate(new FacetProjectStructureElement(myContext, facet));
}
super.addNode(nodeToAdd, parent);
}
+ public void addNode(MyNode nodeToAdd, MyNode parent, boolean delayRedraw) {
+ super.addNode(nodeToAdd, parent, delayRedraw);
+ }
+
@Override
@NotNull
protected ArrayList<AnAction> createActions(final boolean fromPopup) {
}
final String[] groupPath = myPlainMode ? null : myContext.myModulesConfigurator.getModuleModel().getModuleGroupPath(module);
if (groupPath == null || groupPath.length == 0){
- addNode(moduleNode, myRoot);
+ addNode(moduleNode, myRoot, true);
} else {
final MyNode moduleGroupNode = ModuleGroupUtil
.buildModuleGroupPath(new ModuleGroup(groupPath), myRoot, moduleGroup2NodeMap,
new Consumer<ModuleGroupUtil.ParentChildRelation<MyNode>>() {
@Override
public void consume(final ModuleGroupUtil.ParentChildRelation<MyNode> parentChildRelation) {
- addNode(parentChildRelation.getChild(), parentChildRelation.getParent());
+ addNode(parentChildRelation.getChild(), parentChildRelation.getParent(), true);
}
},
new Function<ModuleGroup, MyNode>() {
return new MyNode(moduleGroupConfigurable, true);
}
});
- addNode(moduleNode, moduleGroupNode);
+ addNode(moduleNode, moduleGroupNode, true);
}
}
+ addNodeCompleted(myRoot);
if (myProject.isDefault()) { //do not add modules node in case of template project
myRoot.removeAllChildren();
}
((DefaultTreeModel)myTree.getModel()).reload(parent);
}
+ protected void addNode(MyNode nodeToAdd, MyNode parent, boolean delayRedraw) {
+ parent.add(nodeToAdd);
+ if (!delayRedraw) {
+ addNodeCompleted(parent);
+ }
+ }
+
+ protected void addNodeCompleted(MyNode parent) {
+ TreeUtil.sort(parent, getNodeComparator());
+ ((DefaultTreeModel)myTree.getModel()).reload(parent);
+ }
+
protected Comparator<MyNode> getNodeComparator() {
return new Comparator<MyNode>() {
public int compare(final MyNode o1, final MyNode o2) {