From 0880fab77164f7cd58a531fee31fee74444d47d7 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Fri, 16 Dec 2016 14:56:48 +0300 Subject: [PATCH] printing code cleanup --- .../codeEditor/printing/MultiFilePainter.java | 12 ++-- .../codeEditor/printing/PrintManager.java | 57 +++++++++---------- .../codeEditor/printing/TextPainter.java | 6 +- 3 files changed, 33 insertions(+), 42 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/MultiFilePainter.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/MultiFilePainter.java index 280614d0b1fc..d40f50231e34 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/MultiFilePainter.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/MultiFilePainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * 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. @@ -15,9 +15,7 @@ */ package com.intellij.codeEditor.printing; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.progress.ProcessCanceledException; -import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiFile; import java.awt.*; @@ -27,12 +25,12 @@ import java.awt.print.PrinterException; import java.util.List; class MultiFilePainter extends BasePainter { - private final List> myFilesList; + private final List myFilesList; private int myFileIndex = 0; private int myStartPageIndex = 0; private TextPainter myTextPainter = null; - public MultiFilePainter(List> filesList) { + public MultiFilePainter(List filesList) { myFilesList = filesList; } @@ -43,8 +41,8 @@ class MultiFilePainter extends BasePainter { } while (myFileIndex < myFilesList.size()) { if (myTextPainter == null) { - Pair pair = myFilesList.get(myFileIndex); - myTextPainter = PrintManager.initTextPainter(pair.first, pair.second); + PsiFile psiFile = myFilesList.get(myFileIndex); + myTextPainter = PrintManager.initTextPainter(psiFile); } if (myTextPainter != null) { myTextPainter.setProgress(myProgress); diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/PrintManager.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/PrintManager.java index 382a03a15ff6..670270666b07 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/PrintManager.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/PrintManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * 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. @@ -31,18 +31,20 @@ import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.progress.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; -import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.util.PsiUtilBase; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; -import java.awt.print.*; +import java.awt.print.PageFormat; +import java.awt.print.Paper; +import java.awt.print.PrinterException; +import java.awt.print.PrinterJob; +import java.util.Collections; import java.util.List; class PrintManager { @@ -52,24 +54,24 @@ class PrintManager { final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) return; - PsiDirectory[] psiDirectory = new PsiDirectory[1]; + PsiDirectory psiDirectory = null; PsiElement psiElement = CommonDataKeys.PSI_ELEMENT.getData(dataContext); if (psiElement instanceof PsiDirectory) { - psiDirectory[0] = (PsiDirectory)psiElement; + psiDirectory = (PsiDirectory)psiElement; } PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(dataContext); - String[] shortFileName = new String[1]; - String[] directoryName = new String[1]; - if (psiFile != null || psiDirectory[0] != null) { + String shortFileName = null; + String directoryName = null; + if (psiFile != null || psiDirectory != null) { if (psiFile != null) { - shortFileName[0] = psiFile.getName(); - if (psiDirectory[0] == null) { - psiDirectory[0] = psiFile.getContainingDirectory(); + shortFileName = psiFile.getName(); + if (psiDirectory == null) { + psiDirectory = psiFile.getContainingDirectory(); } } - if (psiDirectory[0] != null) { - directoryName[0] = psiDirectory[0].getVirtualFile().getPresentableUrl(); + if (psiDirectory != null) { + directoryName = psiDirectory.getVirtualFile().getPresentableUrl(); } } @@ -84,7 +86,7 @@ class PrintManager { } } - PrintDialog printDialog = new PrintDialog(shortFileName[0], directoryName[0], text, project); + PrintDialog printDialog = new PrintDialog(shortFileName, directoryName, text, project); printDialog.reset(); if (!printDialog.showAndGet()) { return; @@ -98,7 +100,7 @@ class PrintManager { if (printSettings.getPrintScope() != PrintSettings.PRINT_DIRECTORY) { if (psiFile == null && editor == null) return; TextPainter textPainter = - psiFile != null ? initTextPainter(psiFile, editor) : initTextPainter((DocumentEx)editor.getDocument(), project); + psiFile != null ? initTextPainter(psiFile) : initTextPainter((DocumentEx)editor.getDocument(), project); if (textPainter == null) return; if (printSettings.getPrintScope() == PrintSettings.PRINT_SELECTED_TEXT && @@ -109,9 +111,9 @@ class PrintManager { painter = textPainter; } else { - List> filesList = ContainerUtil.newArrayList(); + List filesList = ContainerUtil.newArrayList(); boolean isRecursive = printSettings.isIncludeSubdirectories(); - addToPsiFileList(psiDirectory[0], filesList, isRecursive); + addToPsiFileList(psiDirectory, filesList, isRecursive); painter = new MultiFilePainter(filesList); } @@ -155,11 +157,9 @@ class PrintManager { }); } - private static void addToPsiFileList(PsiDirectory psiDirectory, List> filesList, boolean isRecursive) { + private static void addToPsiFileList(PsiDirectory psiDirectory, List filesList, boolean isRecursive) { PsiFile[] files = psiDirectory.getFiles(); - for (PsiFile file : files) { - filesList.add(Pair.create(file, PsiUtilBase.findEditor(file))); - } + Collections.addAll(filesList, files); if (isRecursive) { for (PsiDirectory directory : psiDirectory.getSubdirectories()) { if (!Project.DIRECTORY_STORE_FOLDER.equals(directory.getName())) { @@ -198,16 +198,11 @@ class PrintManager { return pageFormat; } - static TextPainter initTextPainter(final PsiFile psiFile, final Editor editor) { - return ApplicationManager.getApplication().runReadAction(new Computable() { - @Override - public TextPainter compute() { - return doInitTextPainter(psiFile, editor); - } - }); + static TextPainter initTextPainter(final PsiFile psiFile) { + return ApplicationManager.getApplication().runReadAction((Computable)() -> doInitTextPainter(psiFile)); } - private static TextPainter doInitTextPainter(final PsiFile psiFile, final Editor editor) { + private static TextPainter doInitTextPainter(final PsiFile psiFile) { VirtualFile virtualFile = psiFile.getVirtualFile(); if (virtualFile == null) return null; DocumentEx doc = (DocumentEx)PsiDocumentManager.getInstance(psiFile.getProject()).getDocument(psiFile); @@ -215,7 +210,7 @@ class PrintManager { EditorHighlighter highlighter = HighlighterFactory.createHighlighter(psiFile.getProject(), virtualFile); highlighter.setText(doc.getCharsSequence()); return new TextPainter(doc, highlighter, virtualFile.getPresentableUrl(), virtualFile.getPresentableName(), - psiFile, psiFile.getFileType(), editor); + psiFile, psiFile.getFileType()); } private static TextPainter initTextPainter(@NotNull final DocumentEx doc, final Project project) { diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java index 726d5cfb9736..2cc29e92a811 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * 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. @@ -17,7 +17,6 @@ package com.intellij.codeEditor.printing; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.RangeMarker; import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.ex.LineIterator; @@ -97,8 +96,7 @@ class TextPainter extends BasePainter { String fullFileName, String shortFileName, @NotNull PsiFile psiFile, - FileType fileType, - Editor editor) { + FileType fileType) { this(editorDocument, highlighter, fullFileName, shortFileName, psiFile.getProject(), fileType, FileSeparatorProvider.getFileSeparators(psiFile, editorDocument)); }