com.intellij.codeInsight.intention.impl.config.LazyEditor.java Source code

Java tutorial

Introduction

Here is the source code for com.intellij.codeInsight.intention.impl.config.LazyEditor.java

Source

/*
 * Copyright 2000-2015 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
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 VisualPosition offsetToVisualPosition(int offset, boolean leanForward, boolean beforeSoftWrap) {
        return getEditor().offsetToVisualPosition(offset, leanForward, beforeSoftWrap);
    }

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