git: show an explanation bar in Compare with Current, describing what commits are currently shown: IDEA-216382

GitOrigin-RevId: 367cdce22e0633a6e8e793d1457945e4332f6250
This commit is contained in:
Kirill Likhodedov
2019-09-05 13:02:24 +00:00
committed by intellij-monorepo-bot
parent bd35d5db17
commit 425e369e6a
2 changed files with 23 additions and 3 deletions
@@ -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). <br/>
* Components may want to update their fields and/or rebuild.
@@ -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<VcsLogFilterCollection>, 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 =
"<html>Commits that exist in <code><b>$existIn</b></code> but don't exist in <code><b>$dontExist</b></code></html>"