mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
printing code cleanup
This commit is contained in:
@@ -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<Pair<PsiFile, Editor>> myFilesList;
|
||||
private final List<PsiFile> myFilesList;
|
||||
private int myFileIndex = 0;
|
||||
private int myStartPageIndex = 0;
|
||||
private TextPainter myTextPainter = null;
|
||||
|
||||
public MultiFilePainter(List<Pair<PsiFile, Editor>> filesList) {
|
||||
public MultiFilePainter(List<PsiFile> filesList) {
|
||||
myFilesList = filesList;
|
||||
}
|
||||
|
||||
@@ -43,8 +41,8 @@ class MultiFilePainter extends BasePainter {
|
||||
}
|
||||
while (myFileIndex < myFilesList.size()) {
|
||||
if (myTextPainter == null) {
|
||||
Pair<PsiFile, Editor> 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);
|
||||
|
||||
@@ -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<Pair<PsiFile, Editor>> filesList = ContainerUtil.newArrayList();
|
||||
List<PsiFile> 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<Pair<PsiFile, Editor>> filesList, boolean isRecursive) {
|
||||
private static void addToPsiFileList(PsiDirectory psiDirectory, List<PsiFile> 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<TextPainter>() {
|
||||
@Override
|
||||
public TextPainter compute() {
|
||||
return doInitTextPainter(psiFile, editor);
|
||||
}
|
||||
});
|
||||
static TextPainter initTextPainter(final PsiFile psiFile) {
|
||||
return ApplicationManager.getApplication().runReadAction((Computable<TextPainter>)() -> 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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user