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;
}
@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))) {
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;
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) {
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