@Override protected void updateRootCustomPresentation(@NotNull DiffModelTree.RootTreeNode rootTreeNode) { ChangeType compositeChangeType = ChangeType.CHANGE; if (rootTreeNode.getRootId() != null) { ModelChange firstChange = Sequence.fromIterable(myChangeSet.getChangesForRoot(rootTreeNode.getRootId())).first(); if (firstChange instanceof AddRootChange || firstChange instanceof DeleteRootChange) { compositeChangeType = firstChange.getType(); } else if (firstChange == null) { compositeChangeType = null; } } else { if (myMetadataChangeSet == null || ListSequence.fromList(myMetadataChangeSet.getModelChanges()).isEmpty()) { compositeChangeType = null; } } rootTreeNode.setColor( (compositeChangeType == null ? null : ChangeColors.getForTree(compositeChangeType))); }
@NotNull private TreeMessage getMessage( @NotNull ModelChange modelChange, @NotNull EditableSModel modelDescriptor) { switch (modelChange.getType()) { case ADD: if (modelChange instanceof AddRootChange) { Project project = myRegistry.getProject(); FileStatus modelStatus = getModelFileStatus(modelDescriptor, project); if (BaseVersionUtil.isAddedFileStatus(modelStatus)) { return getMessage(modelStatus); } else if (ConflictsUtil.isModelOrModuleConflicting(modelDescriptor, project)) { return getMessage(FileStatus.MERGED_WITH_CONFLICTS); } } return getMessage(FileStatus.ADDED); case CHANGE: return getMessage(FileStatus.MODIFIED); default: assert false; return getMessage(FileStatus.MERGED_WITH_CONFLICTS); } }