[vcs-log] fix log tab numbers in split mode

This commit is contained in:
Julia Beliaeva
2016-04-29 16:07:44 +03:00
parent b536ef7ba3
commit 443bc342d2
@@ -17,6 +17,7 @@ package com.intellij.vcs.log.impl;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vcs.VcsListener;
import com.intellij.openapi.vcs.changes.ui.ChangesViewContentProvider;
@@ -24,9 +25,11 @@ import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.ui.components.JBPanel;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.TabbedContent;
import com.intellij.util.ContentUtilEx;
import com.intellij.util.NotNullFunction;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.vcs.log.ui.VcsLogUiImpl;
import org.jetbrains.annotations.NotNull;
@@ -34,6 +37,7 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.util.Arrays;
import java.util.List;
/**
* Provides the Content tab to the ChangesView log toolwindow.
@@ -52,11 +56,11 @@ public class VcsLogContentProvider implements ChangesViewContentProvider {
myProject = project;
myLogManager = logManager;
myLogManager.setRecreateMainLogHandler(new Runnable() {
@Override
public void run() {
recreateLog();
}
});
@Override
public void run() {
recreateLog();
}
});
}
@Override
@@ -83,12 +87,28 @@ public class VcsLogContentProvider implements ChangesViewContentProvider {
VcsLogManager logManager = VcsLogManager.getInstance(project);
ToolWindow toolWindow = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.VCS);
TabbedContent tabbedContent = ContentUtilEx.findTabbedContent(toolWindow.getContentManager(), TAB_NAME);
String shortName = String.valueOf(tabbedContent == null ? 1 : tabbedContent.getTabs().size() + 1);
String shortName = generateShortName(toolWindow);
VcsLogUiImpl logUi = logManager.createLog(ContentUtilEx.getFullName(TAB_NAME, shortName));
addLogTab(logManager, toolWindow, logUi, shortName);
}
@NotNull
private static String generateShortName(ToolWindow toolWindow) {
TabbedContent tabbedContent = ContentUtilEx.findTabbedContent(toolWindow.getContentManager(), TAB_NAME);
if (tabbedContent != null) {
return String.valueOf(tabbedContent.getTabs().size() + 1);
}
else {
List<Content> contents = ContainerUtil.filter(toolWindow.getContentManager().getContents(), new Condition<Content>() {
@Override
public boolean value(Content content) {
return TAB_NAME.equals(content.getUserData(Content.TAB_GROUP_NAME_KEY));
}
});
return String.valueOf(contents.size() + 1);
}
}
private static void addLogTab(@NotNull VcsLogManager logManager,
@NotNull ToolWindow toolWindow,
@NotNull VcsLogUiImpl logUi,