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"