content: package com.antfortune.freeline.idea.utils;
  
  import com.intellij.codeInsight.actions.OptimizeImportsProcessor;
  import com.intellij.codeInsight.actions.ReformatCodeAction;
  import com.intellij.codeInsight.actions.ReformatCodeProcessor;
  import com.intellij.openapi.application.ApplicationManager;
  import com.intellij.openapi.fileEditor.FileDocumentManager;
  import com.intellij.openapi.project.Project;
  import com.intellij.openapi.vfs.VirtualFile;
  import com.intellij.psi.PsiFile;
  
  /**
   * Created by pengwei on 2016/11/1.
   */
  public class DocumentUtil {
  
      /**
       * 保存文档和设置
       */
      public static void saveDocument() {
          FileDocumentManager.getInstance().saveAllDocuments();
          ApplicationManager.getApplication().saveSettings();
      }
  
      /**
       * 格式化代码
       *
       * @param project
       * @param virtualFiles
       */
      public static void reformatCode(final Project project, final VirtualFile virtualFiles) {
          ApplicationManager.getApplication().runWriteAction(new Runnable() {
              @Override
              public void run() {
                  PsiFile[] psiFiles = ReformatCodeAction.convertToPsiFiles(new VirtualFile[]{virtualFiles}, project);
                  if (psiFiles != null && psiFiles.length == 1 && psiFiles[0] != null) {
                      new ReformatCodeProcessor(project, psiFiles[0], null, false).run();
                  }
              }
          });
      }
  
      /**
       * 优化导入
       *
       * @param project
       * @param virtualFiles
       */
      public static void optimizeImports(Project project, VirtualFile... virtualFiles) {
          new OptimizeImportsProcessor(
                  project, ReformatCodeAction.convertToPsiFiles(virtualFiles, project), null).run();
      }
  }
  