LanguageConsoleImpl calls createFile during initialization, so, inherited class cannot override it properly

This commit is contained in:
Vladimir Krivosheev
2014-02-28 10:09:44 +01:00
parent cf066deca7
commit a7c29b4e71
2 changed files with 14 additions and 8 deletions
@@ -147,7 +147,7 @@ public final class LanguageConsoleBuilder {
}
public LanguageConsoleView build(@NotNull Project project, @NotNull Language language) {
GutteredLanguageConsole console = new GutteredLanguageConsole(project, language, gutterContentProvider, psiFileFactory);
GutteredLanguageConsole console = new GutteredLanguageConsole(language.getDisplayName() + " Console", project, language, gutterContentProvider, psiFileFactory);
LanguageConsoleViewImpl consoleView = new LanguageConsoleViewImpl(console, true);
if (executeActionHandler != null) {
assert historyType != null;
@@ -184,11 +184,12 @@ public final class LanguageConsoleBuilder {
@Nullable
private final PairFunction<VirtualFile, Project, PsiFile> psiFileFactory;
public GutteredLanguageConsole(@NotNull Project project,
public GutteredLanguageConsole(@NotNull String title,
@NotNull Project project,
@NotNull Language language,
@Nullable GutterContentProvider gutterContentProvider,
@Nullable PairFunction<VirtualFile, Project, PsiFile> psiFileFactory) {
super(project, language.getDisplayName() + " Console", language, false);
super(project, title, new LightVirtualFile(title, language, ""), false, psiFileFactory);
setShowSeparatorLine(false);
@@ -58,10 +58,7 @@ import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.ui.JBColor;
import com.intellij.ui.SideBorder;
import com.intellij.util.DocumentUtil;
import com.intellij.util.FileContentUtil;
import com.intellij.util.ObjectUtils;
import com.intellij.util.SingleAlarm;
import com.intellij.util.*;
import com.intellij.util.ui.AbstractLayoutManager;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
@@ -124,6 +121,14 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
}
public LanguageConsoleImpl(@NotNull Project project, @NotNull String title, @NotNull LightVirtualFile lightFile, boolean initComponents) {
this(project, title, lightFile, initComponents, null);
}
LanguageConsoleImpl(@NotNull Project project,
@NotNull String title,
@NotNull LightVirtualFile lightFile,
boolean initComponents,
@Nullable PairFunction<VirtualFile, Project, PsiFile> psiFileFactory) {
myProject = project;
myTitle = title;
myVirtualFile = lightFile;
@@ -131,7 +136,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
myHistoryFile = new LightVirtualFile(getTitle() + ".history.txt", FileTypes.PLAIN_TEXT, "");
myEditorDocument = FileDocumentManager.getInstance().getDocument(lightFile);
assert myEditorDocument != null;
myFile = createFile(myVirtualFile, myEditorDocument, myProject);
myFile = psiFileFactory == null ? createFile(myVirtualFile, myEditorDocument, myProject) : psiFileFactory.fun(myVirtualFile, myProject);
myConsoleEditor = (EditorEx)editorFactory.createEditor(myEditorDocument, myProject);
myConsoleEditor.addFocusListener(myFocusListener);
myCurrentEditor = myConsoleEditor;