diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormattingModelBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormattingModelBuilder.kt index 53d01dd02d7..bede215ba98 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormattingModelBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormattingModelBuilder.kt @@ -14,52 +14,47 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.formatter; +package org.jetbrains.kotlin.idea.formatter -import com.intellij.formatting.FormattingModel; -import com.intellij.formatting.FormattingModelBuilder; -import com.intellij.formatting.FormattingModelProvider; -import com.intellij.formatting.Indent; -import com.intellij.lang.ASTNode; -import com.intellij.openapi.editor.impl.DocumentImpl; -import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.formatter.FormattingDocumentModelImpl; -import com.intellij.psi.formatter.PsiBasedFormattingModel; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.KotlinLanguage; +import com.intellij.formatting.FormattingModel +import com.intellij.formatting.FormattingModelBuilder +import com.intellij.formatting.FormattingModelProvider +import com.intellij.formatting.Indent +import com.intellij.lang.ASTNode +import com.intellij.openapi.editor.impl.DocumentImpl +import com.intellij.openapi.util.TextRange +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile +import com.intellij.psi.codeStyle.CodeStyleSettings +import com.intellij.psi.formatter.FormattingDocumentModelImpl +import com.intellij.psi.formatter.PsiBasedFormattingModel +import org.jetbrains.kotlin.idea.KotlinLanguage -public class KotlinFormattingModelBuilder implements FormattingModelBuilder { - @NotNull - @Override - public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) { - PsiFile containingFile = element.getContainingFile().getViewProvider().getPsi(KotlinLanguage.INSTANCE); - KotlinBlock block = new KotlinBlock( - containingFile.getNode(), NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings, - KotlinSpacingRulesKt.createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl.INSTANCE)); +class KotlinFormattingModelBuilder : FormattingModelBuilder { + override fun createModel(element: PsiElement, settings: CodeStyleSettings): FormattingModel { + val containingFile = element.containingFile.viewProvider.getPsi(KotlinLanguage.INSTANCE) + val block = KotlinBlock( + containingFile.node, NodeAlignmentStrategy.getNullStrategy(), Indent.getNoneIndent(), null, settings, + createSpacingBuilder(settings, KotlinSpacingBuilderUtilImpl)) //TODO: this is temporary code to allow formatting non-physical files in non-UI thread (used by conversion from Java to Kotlin) // it's needed until IDEA's issue with this document being created with wrong threading policy is fixed - if (!element.isPhysical()) { - FormattingDocumentModelImpl formattingDocumentModel = - new FormattingDocumentModelImpl(new DocumentImpl(containingFile.getViewProvider().getContents(), true), containingFile); - return new PsiBasedFormattingModel(containingFile, block, formattingDocumentModel); + if (!element.isPhysical) { + val formattingDocumentModel = FormattingDocumentModelImpl(DocumentImpl(containingFile.viewProvider.contents, true), containingFile) + return PsiBasedFormattingModel(containingFile, block, formattingDocumentModel) } - if (element instanceof PsiFile) { - FormattingModel collectChangesModel = CollectChangesWithoutApplyModelKt.createCollectFormattingChangesModel((PsiFile) element, block); + if (element is PsiFile) { + val collectChangesModel = createCollectFormattingChangesModel(element, block) if (collectChangesModel != null) { - return collectChangesModel; + return collectChangesModel } } - return FormattingModelProvider.createFormattingModelForPsiFile(element.getContainingFile(), block, settings); + return FormattingModelProvider.createFormattingModelForPsiFile(element.containingFile, block, settings) } - @Override - public TextRange getRangeAffectingIndent(PsiFile psiFile, int i, ASTNode astNode) { - return null; + override fun getRangeAffectingIndent(psiFile: PsiFile, i: Int, astNode: ASTNode): TextRange? { + return null } }