mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] close log tab action also works when tabs are in split mode
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.ui.content.ContentFactory;
|
||||
import com.intellij.ui.content.ContentManager;
|
||||
import com.intellij.ui.content.TabbedContent;
|
||||
import com.intellij.ui.content.impl.TabbedContentImpl;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -102,7 +103,7 @@ public class ContentUtilEx extends ContentsUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static TabbedContent findTabbedContent(ContentManager manager, String groupPrefix) {
|
||||
public static TabbedContent findTabbedContent(@NotNull ContentManager manager, @NotNull String groupPrefix) {
|
||||
TabbedContent tabbedContent = null;
|
||||
for (Content content : manager.getContents()) {
|
||||
if (content instanceof TabbedContent && content.getTabName().startsWith(getFullPrefix(groupPrefix))) {
|
||||
@@ -113,6 +114,24 @@ public class ContentUtilEx extends ContentsUtil {
|
||||
return tabbedContent;
|
||||
}
|
||||
|
||||
public static boolean isContentTab(@NotNull Content content, @NotNull String groupPrefix) {
|
||||
return (content instanceof TabbedContent && content.getTabName().startsWith(getFullPrefix(groupPrefix))) ||
|
||||
groupPrefix.equals(content.getUserData(Content.TAB_GROUP_NAME_KEY));
|
||||
}
|
||||
|
||||
public static void closeContentTab(@NotNull ContentManager contentManager, @NotNull Content content) {
|
||||
if (content instanceof TabbedContent) {
|
||||
TabbedContent tabbedContent = (TabbedContent)content;
|
||||
if (tabbedContent.getTabs().size() > 1) {
|
||||
JComponent component = tabbedContent.getComponent();
|
||||
tabbedContent.removeContent(component);
|
||||
contentManager.setSelectedContent(tabbedContent, true, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
contentManager.removeContent(content, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getFullName(@NotNull String groupPrefix, @NotNull String tabName) {
|
||||
return getFullPrefix(groupPrefix) + tabName;
|
||||
|
||||
@@ -21,15 +21,13 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.ui.content.ContentManager;
|
||||
import com.intellij.ui.content.TabbedContent;
|
||||
import com.intellij.util.ContentUtilEx;
|
||||
import com.intellij.vcs.log.impl.VcsLogContentProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class CloseLogTabAction extends CloseTabToolbarAction {
|
||||
@Override
|
||||
public void update(@NotNull AnActionEvent e) {
|
||||
@@ -52,24 +50,19 @@ public class CloseLogTabAction extends CloseTabToolbarAction {
|
||||
|
||||
ContentManager contentManager = getContentManager(project);
|
||||
if (contentManager == null) return;
|
||||
TabbedContent tabbedContent = getTabbedContent(contentManager);
|
||||
if (tabbedContent == null) return;
|
||||
|
||||
if (tabbedContent.getTabs().size() > 1) {
|
||||
JComponent component = tabbedContent.getComponent();
|
||||
tabbedContent.removeContent(component);
|
||||
contentManager.setSelectedContent(tabbedContent, true, true);
|
||||
}
|
||||
else {
|
||||
contentManager.removeContent(tabbedContent, true);
|
||||
Content selectedContent = getTabbedContent(contentManager);
|
||||
if (selectedContent != null) {
|
||||
ContentUtilEx.closeContentTab(contentManager, selectedContent);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static TabbedContent getTabbedContent(@NotNull ContentManager contentManager) {
|
||||
TabbedContent tabbedContent = ContentUtilEx.findTabbedContent(contentManager, VcsLogContentProvider.TAB_NAME);
|
||||
if (tabbedContent != contentManager.getSelectedContent()) return null;
|
||||
return tabbedContent;
|
||||
private static Content getTabbedContent(@NotNull ContentManager contentManager) {
|
||||
Content content = contentManager.getSelectedContent();
|
||||
if (content != null) {
|
||||
if (ContentUtilEx.isContentTab(content, VcsLogContentProvider.TAB_NAME)) return content;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user