diff --git a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindowImpl.java b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindowImpl.java index 301f5bf5753e..2b919ec44d47 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindowImpl.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindowImpl.java @@ -78,6 +78,7 @@ public class EditorWindowImpl extends UserDataHolderBase implements EditorWindow private final MarkupModelWindow myDocumentMarkupModelDelegate; private final FoldingModelWindow myFoldingModelWindow; private final SoftWrapModelWindow mySoftWrapModel; + private final InlayModelWindow myInlayModel; public static Editor create(@NotNull final DocumentWindowImpl documentRange, @NotNull final EditorImpl editor, @NotNull final PsiFile injectedFile) { assert documentRange.isValid(); @@ -116,6 +117,7 @@ public class EditorWindowImpl extends UserDataHolderBase implements EditorWindow myDocumentMarkupModelDelegate = new MarkupModelWindow(myDelegate.getFilteredDocumentMarkupModel(), myDocumentWindow); myFoldingModelWindow = new FoldingModelWindow(delegate.getFoldingModel(), documentWindow, this); mySoftWrapModel = new SoftWrapModelWindow(this); + myInlayModel = new InlayModelWindow(); } public static void disposeInvalidEditors() { @@ -304,7 +306,7 @@ public class EditorWindowImpl extends UserDataHolderBase implements EditorWindow @NotNull @Override public InlayModel getInlayModel() { - throw new UnsupportedOperationException(); + return myInlayModel; } @Override diff --git a/platform/lang-impl/src/com/intellij/injected/editor/InlayModelWindow.java b/platform/lang-impl/src/com/intellij/injected/editor/InlayModelWindow.java new file mode 100644 index 000000000000..920e4b64ce55 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/injected/editor/InlayModelWindow.java @@ -0,0 +1,67 @@ +/* + * Copyright 2000-2016 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.injected.editor; + +import com.intellij.openapi.Disposable; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.editor.EditorCustomElementRenderer; +import com.intellij.openapi.editor.Inlay; +import com.intellij.openapi.editor.InlayModel; +import com.intellij.openapi.editor.VisualPosition; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; + +public class InlayModelWindow implements InlayModel { + private static final Logger LOG = Logger.getInstance(InlayModelWindow.class); + + @Nullable + @Override + public Inlay addInlineElement(int offset, @NotNull EditorCustomElementRenderer renderer) { + logUnsupported(); + return null; + } + + @NotNull + @Override + public List getInlineElementsInRange(int startOffset, int endOffset) { + logUnsupported(); + return Collections.emptyList(); + } + + @Override + public boolean hasInlineElementAt(int offset) { + logUnsupported(); + return false; + } + + @Override + public boolean hasInlineElementAt(@NotNull VisualPosition visualPosition) { + logUnsupported(); + return false; + } + + @Override + public void addListener(@NotNull Listener listener, @NotNull Disposable disposable) { + logUnsupported(); + } + + private static void logUnsupported() { + LOG.error("Inlay operations are not supported for injected editors"); + } +}