blob: 6df7df7d1e25e0c79cc96018ce6235389a3dc29a [file] [log] [blame]
package com.intellij.codeInsight.intention.impl.config;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.event.EditorMouseEventArea;
import com.intellij.openapi.editor.event.EditorMouseListener;
import com.intellij.openapi.editor.event.EditorMouseMotionListener;
import com.intellij.openapi.editor.markup.MarkupModel;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.UserDataHolderBase;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* @author Dmitry Avdeev
*/
class LazyEditor extends UserDataHolderBase implements Editor {
private final PsiFile myFile;
private Editor myEditor;
public LazyEditor(PsiFile file) {
myFile = file;
}
private Editor getEditor() {
if (myEditor == null) {
final Project project = myFile.getProject();
myEditor = FileEditorManager.getInstance(project).openTextEditor(new OpenFileDescriptor(project, myFile.getVirtualFile(), 0), false);
assert myEditor != null;
}
return myEditor;
}
@Override
@NotNull
public Document getDocument() {
return getEditor().getDocument();
}
@Override
public boolean isViewer() {
return getEditor().isViewer();
}
@Override
@NotNull
public JComponent getComponent() {
return getEditor().getComponent();
}
@Override
@NotNull
public JComponent getContentComponent() {
return getEditor().getContentComponent();
}
@Override
public void setBorder(@Nullable Border border) {
getEditor().setBorder(border);
}
@Override
public Insets getInsets() {
return getEditor().getInsets();
}
@Override
@NotNull
public SelectionModel getSelectionModel() {
return getEditor().getSelectionModel();
}
@Override
@NotNull
public MarkupModel getMarkupModel() {
return getEditor().getMarkupModel();
}
@Override
@NotNull
public FoldingModel getFoldingModel() {
return getEditor().getFoldingModel();
}
@Override
@NotNull
public ScrollingModel getScrollingModel() {
return getEditor().getScrollingModel();
}
@Override
@NotNull
public CaretModel getCaretModel() {
return getEditor().getCaretModel();
}
@Override
@NotNull
public SoftWrapModel getSoftWrapModel() {
return getEditor().getSoftWrapModel();
}
@Override
@NotNull
public EditorSettings getSettings() {
return getEditor().getSettings();
}
@Override
@NotNull
public EditorColorsScheme getColorsScheme() {
return getEditor().getColorsScheme();
}
@Override
public int getLineHeight() {
return getEditor().getLineHeight();
}
@Override
@NotNull
public Point logicalPositionToXY(@NotNull final LogicalPosition pos) {
return getEditor().logicalPositionToXY(pos);
}
@Override
public int logicalPositionToOffset(@NotNull final LogicalPosition pos) {
return getEditor().logicalPositionToOffset(pos);
}
@Override
@NotNull
public VisualPosition logicalToVisualPosition(@NotNull final LogicalPosition logicalPos) {
return getEditor().logicalToVisualPosition(logicalPos);
}
@Override
@NotNull
public Point visualPositionToXY(@NotNull final VisualPosition visible) {
return getEditor().visualPositionToXY(visible);
}
@Override
@NotNull
public LogicalPosition visualToLogicalPosition(@NotNull final VisualPosition visiblePos) {
return getEditor().visualToLogicalPosition(visiblePos);
}
@Override
@NotNull
public LogicalPosition offsetToLogicalPosition(final int offset) {
return getEditor().offsetToLogicalPosition(offset);
}
@Override
@NotNull
public VisualPosition offsetToVisualPosition(final int offset) {
return getEditor().offsetToVisualPosition(offset);
}
@Override
@NotNull
public LogicalPosition xyToLogicalPosition(@NotNull final Point p) {
return getEditor().xyToLogicalPosition(p);
}
@Override
@NotNull
public VisualPosition xyToVisualPosition(@NotNull final Point p) {
return getEditor().xyToVisualPosition(p);
}
@Override
public void addEditorMouseListener(@NotNull final EditorMouseListener listener) {
getEditor().addEditorMouseListener(listener);
}
@Override
public void removeEditorMouseListener(@NotNull final EditorMouseListener listener) {
getEditor().removeEditorMouseListener(listener);
}
@Override
public void addEditorMouseMotionListener(@NotNull final EditorMouseMotionListener listener) {
getEditor().addEditorMouseMotionListener(listener);
}
@Override
public void removeEditorMouseMotionListener(@NotNull final EditorMouseMotionListener listener) {
getEditor().removeEditorMouseMotionListener(listener);
}
@Override
public boolean isDisposed() {
return getEditor().isDisposed();
}
@Override
@Nullable
public Project getProject() {
return getEditor().getProject();
}
@Override
public boolean isInsertMode() {
return getEditor().isInsertMode();
}
@Override
public boolean isColumnMode() {
return getEditor().isColumnMode();
}
@Override
public boolean isOneLineMode() {
return getEditor().isOneLineMode();
}
@Override
@NotNull
public EditorGutter getGutter() {
return getEditor().getGutter();
}
@Override
@Nullable
public EditorMouseEventArea getMouseEventArea(@NotNull final MouseEvent e) {
return getEditor().getMouseEventArea(e);
}
@Override
public void setHeaderComponent(@Nullable final JComponent header) {
getEditor().setHeaderComponent(header);
}
@Override
public boolean hasHeaderComponent() {
return getEditor().hasHeaderComponent();
}
@Override
@Nullable
public JComponent getHeaderComponent() {
return getEditor().getHeaderComponent();
}
@Override
@NotNull
public IndentsModel getIndentsModel() {
return getEditor().getIndentsModel();
}
}