diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java
index bb96d14bb8dc..19d38cb578b8 100644
--- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java
+++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java
@@ -15,14 +15,13 @@ import com.intellij.openapi.vcs.VcsDataKeys;
import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.IdeFocusManager;
-import com.intellij.ui.OnePixelSplitter;
-import com.intellij.ui.PopupHandler;
-import com.intellij.ui.SideBorder;
+import com.intellij.ui.*;
import com.intellij.ui.components.JBLoadingPanel;
import com.intellij.ui.components.panels.Wrapper;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.StatusText;
+import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.table.ComponentsListFocusTraversalPolicy;
import com.intellij.vcs.log.CommitId;
import com.intellij.vcs.log.VcsFullCommitDetails;
@@ -80,6 +79,7 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
@NotNull private final VcsLogCommitDetailsListPanel myDetailsPanel;
@NotNull private final Splitter myDetailsSplitter;
+ @NotNull private final EditorNotificationPanel myNotificationLabel;
public MainFrame(@NotNull VcsLogData logData,
@NotNull AbstractVcsLogUi logUi,
@@ -125,8 +125,14 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
myDetailsPanel.installCommitSelectionListener(myGraphTable);
VcsLogUiUtil.installDetailsListeners(myGraphTable, myDetailsPanel, myLogData, this);
+ myNotificationLabel = new EditorNotificationPanel(UIUtil.getPanelBackground());
+ myNotificationLabel.setVisible(false);
+ JPanel notificationBar = JBUI.Panels.simplePanel(myNotificationLabel);
+ notificationBar.setBorder(JBUI.Borders.customLine(JBColor.border(), 1, 0, 0, 0));
+
JComponent toolbars = new JPanel(new BorderLayout());
toolbars.add(myToolbar, BorderLayout.NORTH);
+ toolbars.add(notificationBar, BorderLayout.CENTER);
JComponent toolbarsAndTable = new JPanel(new BorderLayout());
toolbarsAndTable.add(toolbars, BorderLayout.NORTH);
toolbarsAndTable.add(VcsLogUiUtil.installProgress(VcsLogUiUtil.setupScrolledGraph(myGraphTable, SideBorder.TOP),
@@ -154,6 +160,11 @@ public class MainFrame extends JPanel implements DataProvider, Disposable {
setFocusTraversalPolicy(new MyFocusPolicy());
}
+ public void setExplanationHtml(@Nullable String text) {
+ myNotificationLabel.setText(text);
+ myNotificationLabel.setVisible(text != null);
+ }
+
/**
* Informs components that the actual DataPack has been updated (e.g. due to a log refresh).
* Components may want to update their fields and/or rebuild.
diff --git a/plugins/git4idea/src/git4idea/branch/GitCompareBranchesUi.kt b/plugins/git4idea/src/git4idea/branch/GitCompareBranchesUi.kt
index 033867efd966..b7959c8ccb89 100644
--- a/plugins/git4idea/src/git4idea/branch/GitCompareBranchesUi.kt
+++ b/plugins/git4idea/src/git4idea/branch/GitCompareBranchesUi.kt
@@ -86,6 +86,12 @@ class GitCompareBranchesUi(private val project: Project, private val repositorie
parentDisposable: Disposable): VcsLogFilterUiEx {
return MyFilterUi(logData, filterConsumer, properties, colorManager, filters, parentDisposable)
}
+
+ override fun applyFiltersAndUpdateUi(filters: VcsLogFilterCollection) {
+ super.applyFiltersAndUpdateUi(filters)
+ val (start, end) = filters.get(VcsLogFilterCollection.RANGE_FILTER).getRange()
+ mainFrame.setExplanationHtml(getExplanationText(start, end));
+ }
}
private class MyFilterUi(data: VcsLogData, filterConsumer: Consumer, properties: MainVcsLogUiProperties,
@@ -162,3 +168,6 @@ private fun VcsLogRangeFilter.asReversed(): VcsLogRangeFilter {
val (start, end) = getRange()
return fromRange(end, start)
}
+
+private fun getExplanationText(dontExist: String, existIn: String): String =
+ "Commits that exist in $existIn but don't exist in $dontExist"