diff --git a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java index 38aa7d241313..4a98de243ab3 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java @@ -35,8 +35,10 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.AbstractDelegatingToRootTraversalPolicy; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiFileFactory; import com.intellij.ui.components.panels.NonOpaquePanel; import com.intellij.util.IJSwingUtilities; +import com.intellij.util.LocalTimeCounter; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.JBInsets; import com.intellij.util.ui.JBUI; @@ -189,7 +191,11 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, } @Override + @NotNull public Document getDocument() { + if (myDocument == null) { + myDocument = createDocument(); + } return myDocument; } @@ -441,17 +447,21 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, editor.setBackgroundColor(getBackgroundColor(isEnabled(), colorsScheme)); } - - public void setOneLineMode(boolean oneLineMode) { myOneLineMode = oneLineMode; } - protected EditorEx createEditor() { - LOG.assertTrue(myDocument != null); + protected Document createDocument() { + final PsiFileFactory factory = PsiFileFactory.getInstance(myProject); + final long stamp = LocalTimeCounter.currentTime(); + final PsiFile psiFile = factory.createFileFromText("Dummy." + myFileType.getDefaultExtension(), myFileType, "", stamp, true, false); + return PsiDocumentManager.getInstance(myProject).getDocument(psiFile); + } + protected EditorEx createEditor() { + Document document = getDocument(); final EditorFactory factory = EditorFactory.getInstance(); - EditorEx editor = (EditorEx)(myIsViewer ? factory.createViewer(myDocument, myProject) : factory.createEditor(myDocument, myProject)); + EditorEx editor = (EditorEx)(myIsViewer ? factory.createViewer(document, myProject) : factory.createEditor(document, myProject)); final EditorSettings settings = editor.getSettings(); settings.setAdditionalLinesCount(0); @@ -484,7 +494,7 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, editor.getSettings().setCaretRowShown(false); editor.setOneLineMode(myOneLineMode); - editor.getCaretModel().moveToOffset(myDocument.getTextLength()); + editor.getCaretModel().moveToOffset(document.getTextLength()); if (!shouldHaveBorder()) { editor.setBorder(null); @@ -511,7 +521,7 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, ((EditorImpl)editor).setPaintSelection(true); editor.getColorsScheme().setColor(EditorColors.SELECTION_BACKGROUND_COLOR, myRendererBg); editor.getColorsScheme().setColor(EditorColors.SELECTION_FOREGROUND_COLOR, myRendererFg); - editor.getSelectionModel().setSelection(0, myDocument.getTextLength()); + editor.getSelectionModel().setSelection(0, document.getTextLength()); editor.setBackgroundColor(myRendererBg); }