package com.intellij.openapi.fileEditor.impl; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorProvider; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; import java.util.LinkedHashMap; public class TestEditorTabGroup { private String name; private final LinkedHashMap<VirtualFile, Pair<FileEditor, FileEditorProvider>> myOpenedTabs = new LinkedHashMap<>(); private VirtualFile myOpenedfile; public TestEditorTabGroup(String name) { this.name = name; } public String Name() { return name; } public void openTab(VirtualFile virtualFile, FileEditor fileEditor, FileEditorProvider fileEditorProvider) { ApplicationManager.getApplication().assertIsDispatchThread(); myOpenedTabs.put(virtualFile, Pair.pair(fileEditor, fileEditorProvider)); myOpenedfile = virtualFile; } @Nullable public Pair<FileEditor, FileEditorProvider> getOpenedEditor(){ VirtualFile openedFile = getOpenedFile(); if (openedFile == null) { return null; } return myOpenedTabs.get(openedFile); } @Nullable public VirtualFile getOpenedFile() { ApplicationManager.getApplication().assertIsDispatchThread(); return myOpenedfile; } public void closeTab(VirtualFile virtualFile) { ApplicationManager.getApplication().assertIsDispatchThread(); myOpenedfile = null; myOpenedTabs.remove(virtualFile); } @Nullable public Pair<FileEditor, FileEditorProvider> getEditorAndProvider(VirtualFile file) { return myOpenedTabs.get(file); } public boolean contains(VirtualFile file) { return myOpenedTabs.containsKey(file); } public int getTabCount() { return myOpenedTabs.size(); } }