[vcs-log] close log tab action also works when tabs are in split mode
authorJulia Beliaeva <Julia.Beliaeva@jetbrains.com>
Thu, 28 Apr 2016 21:16:15 +0000 (00:16 +0300)
committerJulia Beliaeva <Julia.Beliaeva@jetbrains.com>
Tue, 3 May 2016 16:32:35 +0000 (19:32 +0300)
platform/platform-impl/src/com/intellij/util/ContentUtilEx.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/CloseLogTabAction.java

index d7b9289b366d65a862b9a13b8e6b6b7080d4e870..acec06ed9ac52dbfc436348b61fbcf2a3073e582 100644 (file)
@@ -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;
index 9c492a7dd966462e5978809557f07615c5e59f7d..c29edb7c7287a5dcddae8f35ef444e8f6232ba0a 100644 (file)
@@ -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