package com.seventh7.mybatis.service; import com.intellij.codeInsight.navigation.NavigationUtil; import com.intellij.formatting.FormatTextRanges; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade; import org.jetbrains.annotations.NotNull; /** * @author yanglin */ public class EditorService { private Project project; private FileEditorManager fileEditorManager; private CodeFormatterFacade codeFormatterFacade; public EditorService(Project project) { this.project = project; this.codeFormatterFacade = new CodeFormatterFacade(new CodeStyleSettings()); this.fileEditorManager = FileEditorManager.getInstance(project); } public static EditorService getInstance(@NotNull Project project) { return ServiceManager.getService(project, EditorService.class); } public void format(@NotNull PsiFile file, @NotNull PsiElement element) { codeFormatterFacade.processText(file, new FormatTextRanges(element.getTextRange(), true), true); } public void scrollTo(@NotNull PsiElement element, int offset) { NavigationUtil.activateFileWithPsiElement(element, true); Editor editor = fileEditorManager.getSelectedTextEditor(); if (null != editor) { editor.getCaretModel().moveToOffset(offset); editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); } } }