From 97a9d4f2a4ac66946dfd3c8e30706c0152e93f28 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 3 Apr 2015 23:55:33 +0300 Subject: [PATCH] [vcs-log] dim merge commits in linear bek mode Conflicts: platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MergeCommitsHighlighter.java --- .../vcs-log/impl/src/META-INF/vcs-log.xml | 1 + .../vcs/log/ui/MergeCommitsHighlighter.java | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MergeCommitsHighlighter.java diff --git a/platform/vcs-log/impl/src/META-INF/vcs-log.xml b/platform/vcs-log/impl/src/META-INF/vcs-log.xml index 88829f0f3b0c..c9251c938161 100644 --- a/platform/vcs-log/impl/src/META-INF/vcs-log.xml +++ b/platform/vcs-log/impl/src/META-INF/vcs-log.xml @@ -17,6 +17,7 @@ + diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MergeCommitsHighlighter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MergeCommitsHighlighter.java new file mode 100644 index 000000000000..7d45dd3fd794 --- /dev/null +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MergeCommitsHighlighter.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.vcs.log.ui; + +import com.intellij.ui.Gray; +import com.intellij.ui.JBColor; +import com.intellij.vcs.log.VcsCommitStyleFactory; +import com.intellij.vcs.log.VcsLogHighlighter; +import com.intellij.vcs.log.VcsShortCommitDetails; +import com.intellij.vcs.log.data.LoadingDetails; +import com.intellij.vcs.log.data.VcsLogDataHolder; +import com.intellij.vcs.log.data.VcsLogUiProperties; +import com.intellij.vcs.log.graph.impl.facade.PermanentGraphImpl; +import org.jetbrains.annotations.NotNull; + +public class MergeCommitsHighlighter implements VcsLogHighlighter { + private static final JBColor MERGE_COMMIT_FOREGROUND = new JBColor(Gray._192, Gray._96); + @NotNull private final VcsLogUiProperties myUiProperties; + @NotNull private final VcsLogDataHolder myDataHolder; + + public MergeCommitsHighlighter(@NotNull VcsLogDataHolder logDataHolder, @NotNull VcsLogUiProperties uiProperties) { + myDataHolder = logDataHolder; + myUiProperties = uiProperties; + } + + @NotNull + @Override + public VcsCommitStyle getStyle(int commitIndex, boolean isSelected) { + if (isSelected || myUiProperties.getBekSortType() != PermanentGraphImpl.SortType.LinearBek.ordinal()) return VcsCommitStyle.DEFAULT; + VcsShortCommitDetails details = myDataHolder.getMiniDetailsGetter().getCommitDataIfAvailable(commitIndex); + if (details != null && !(details instanceof LoadingDetails)) { + if (details.getParents().size() >= 2) return VcsCommitStyleFactory.foreground(MERGE_COMMIT_FOREGROUND); + } + return VcsCommitStyle.DEFAULT; + } + + public static class Factory implements VcsLogHighlighterFactory { + @NotNull + @Override + public VcsLogHighlighter createHighlighter(@NotNull VcsLogDataHolder logDataHolder, @NotNull VcsLogUiProperties uiProperties) { + return new MergeCommitsHighlighter(logDataHolder, uiProperties); + } + } +}